📄 serial.lst
字号:
C51 COMPILER V8.02 SERIAL 10/11/2007 16:35:11 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN serial.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE serial.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*********************************************************************************************************
-******8
2 ** 串口通信程序,拨特率可以在初始化端口使用参数从300、600、1200、2400、4800、9600、19200中任意选择
3 ** 作者:谭超
4 ** 仅供学习用,请勿用做商业用途
5 ** 提示:晶体频率为11.0592MHz,12M,24M,33。用#define命选择不同晶体对应的程序,一般在做调试程序的时候用于
-状态显示
6 **/
7 #include<reg52.h>
8
9
10 #define CRY_11_MHz 11
11 #define CRY_12_MHz 12
12 #define CRY_24_MHz 24
13 #define CRY_33_MHz 33
14
15 #define Crystal CRY_24_MHz
16
17
18 void Init_Port(unsigned int BordRate)
19 {
20 1
21 1 // unsigned char Crystal;
22 1 #if Crystal==CRY_11_MHz //如果予定义晶体频率为11MHz
unsigned int x;
if(BordRate>9600) //如果拨特率大于9600,需要设置smod=1,
{
PCON=0X80; // smod=1
x=2*28800/BordRate;
}
else
{
PCON=0X00; // smod=0
x=28800/BordRate;
}
x=256-x;
TH1=TL1=x;
TMOD=0X20;
ET1=0;
TR1=1;
SCON=0X40;
#endif
42 1
43 1 #if Crystal==CRY_12_MHz
#endif
45 1
46 1 #if Crystal==CRY_24_MHz
47 1 switch(BordRate)
48 1 {
49 2 case 1200:TH1=TL1=0x98;break;
50 2 case 2400:TH1=TL1=0xcc;break;
51 2 case 4800:TH1=TL1=0xe6;break;
52 2 case 9600:TH1=TL1=0xf3;break;
53 2 // case 19200:TH1=TL1=0xf9;break;
C51 COMPILER V8.02 SERIAL 10/11/2007 16:35:11 PAGE 2
54 2 // case 38400:TH1=TL1=0xfd;break;
55 2 default:break;
56 2 }
57 1 PCON=0X80;
58 1 TMOD=0X20;
59 1 ET1=0;
60 1
61 1 TR1=1;
62 1 SCON=0X40;
63 1 #endif
64 1
65 1 #if Crystal==CRY_33_MHz
#endif
67 1
68 1
69 1
70 1 }
71 /*
72 void ClosePort()
73 {
74 TR1=0; //关闭定时器,:)没有拨特率就不会发数据了
75
76 }*/
77
78 void OutputC(unsigned char Dat)
79 {
80 1 TI=0;
81 1 SBUF=Dat;
82 1 while(!TI);
83 1 }
84 void OutputH(unsigned char Dat)
85 {
86 1 unsigned char i;
87 1 for(i=0;i<8;i++)
88 1 {
89 2 if((Dat<<i)&0x80)OutputC(0X31); //由于1在电脑上的内码是0X31,所以这里送0X31。先送高位,后送低位。
90 2 else OutputC(0X30);
91 2 }
92 1 }
93
94 void OutputS(unsigned char *p)
95 {
96 1 while(*p!=0)
97 1 {
98 2 OutputC(*p);
99 2 p++;
100 2 }
101 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 128 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -