📄 serial.lst
字号:
C51 COMPILER V8.02 SERIAL 02/25/2008 00:02:16 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN serial.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE serial.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2
3 unsigned char revbuf;//接收到的字符
4 unsigned char number;
5 unsigned code cash = '9';
6 unsigned char copyOK,re_finish;
7 //串口初始化
8 void initial()
9 {
10 1 SCON=0x50; //串口工作方式1,允许接收
11 1 PCON=0x80; //波特率翻倍
12 1 TCON=0;
13 1 TMOD=0x26; //T1用于串口波特率控制
14 1 TL1=0xfa; //初始化T1,波特率为9600(晶振11.0592M)
15 1 TH1=0xfa;
16 1 TR1=1; //开定时器
17 1 EA=1; //开总中断
18 1 ES=1; //开串口中断
19 1 copyOK=0;
20 1 re_finish=0;
21 1 }
22
23
24 void send(void)//向串口发送字符串
25 {
26 1
27 1 if(copyOK) //串口准备好且缓冲区准备好
28 1 {
29 2 REN = 0; //发送过程中禁止接收数据
30 2 copyOK = 0; //清缓冲区准备好标志
31 2 SBUF = cash; //发送字符串首字符
32 2 number = 0; //置发送计数器
33 2 }
34 1 else
35 1 return; //没准备好则返回
36 1 }
37 //串口中断处理函数_接收数据
38 void serial(void) interrupt 4//串口中断响应
39 {
40 1 if(RI)//为接收中断
41 1 {
42 2 RI=0; //清接收中断标志
43 2 revbuf = SBUF; //读取串口缓冲区数据
44 2 revbuf=revbuf-'0';
45 2 re_finish=1;
46 2 }
47 1 else
48 1 {
49 2 TI=0; //为单个字符发送完中断
50 2 if(!number) //字符串发送完
51 2 {
52 3 REN = 1; //允许接收
53 3 }
54 2 else
55 2 { //字符串未发送完
C51 COMPILER V8.02 SERIAL 02/25/2008 00:02:16 PAGE 2
56 3 SBUF = cash; //发送下一字符
57 3 number--; //发送字符数减一
58 3 }
59 2 }
60 1 }
61
62 main()
63 {
64 1 initial();
65 1 while(1)
66 1 {
67 2 if(re_finish)
68 2 {
69 3 re_finish=0;
70 3 switch(revbuf)
71 3 {
72 4 case 0:
73 4 P0=0xfe;
74 4 break;
75 4 case 1:
76 4 P0=0xfd;
77 4 break;
78 4 case 2:
79 4 P0=0xfb;
80 4 break;
81 4 case 3:
82 4 P0=0xf7;
83 4 break;
84 4 case 4:
85 4 P0=0xef;
86 4 break;
87 4 case 5:
88 4 P0=0xdf;
89 4 break;
90 4 case 6:
91 4 P0=0xbf;
92 4 break;
93 4 case 7:
94 4 P0=0x7f;
95 4 break;
96 4 default:
97 4 P0=0xff;
98 4 break;
99 4 }
100 3 copyOK=1;
101 3 send();
102 3 }
103 2 }
104 1 }
105
106
107
108
109
110
111
112
113
114
115
116
117
C51 COMPILER V8.02 SERIAL 02/25/2008 00:02:16 PAGE 3
118
119
120
121
122
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 205 ----
CONSTANT SIZE = 2 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
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 + -