?? main.lst
字號(hào):
C51 COMPILER V7.09 MAIN 06/29/2006 13:51:06 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 main.c
3 串行口通信方式3例程
4 */
5
6
7 #include <reg51.h>
8
9
10 //參數(shù)配置
11 #define MCLK 11059200L //定義CPU主頻(Hz)
12 #define BAUD_RATE 9600L //設(shè)置波特率
13
14
15 //定義發(fā)送輔助標(biāo)志
16 static volatile bit _TI_;
17
18
19 //定義接收緩沖區(qū)
20 #define SIZE 40
21 unsigned char UartBuf[SIZE];
22
23
24 //定義接收緩沖區(qū)下標(biāo)變量
25 unsigned char BufP1;
26 unsigned char BufP2;
27
28
29 /*
30 函數(shù):UartInit()
31 功能:串行口初始化
32 */
33 void UartInit()
34 {
35 1 unsigned char i;
36 1 EA = 0;
37 1 BufP1 = 0;
38 1 BufP2 = 0;
39 1 for ( i=0; i<SIZE; i++ )
40 1 {
41 2 UartBuf[i] = 0x00;
42 2 }
43 1 TR1 = 0;
44 1 RXD = 1;
45 1 TXD = 1;
46 1 _TI_ = 1;
47 1 SCON = 0xD0; //串口方式3(9位Uart),允許接收
48 1 PCON |= 0x80; //波特率加倍
49 1 TMOD &= 0x0F;
50 1 TMOD |= 0x20;
51 1 TH1 = 256 - ( MCLK / 12 ) / ( 16 * BAUD_RATE );
52 1 TL1 = TH1; //設(shè)置波特率
53 1 TR1 = 1;
54 1 ES = 1; //允許串行口中斷
55 1 EA = 1; //允許中斷
C51 COMPILER V7.09 MAIN 06/29/2006 13:51:06 PAGE 2
56 1 }
57
58
59 /*
60 函數(shù):UartINTSVC
61 功能:串行口中斷服務(wù)程序
62 */
63 void UartINTSVC() interrupt 4
64 {
65 1 char c;
66 1 if ( RI ) //接收中斷
67 1 {
68 2 c = SBUF;
69 2 RI = 0;
70 2 ACC = c;
71 2 F0 = P;
72 2 if ( F0 == RB8 )
73 2 {
74 3 UartBuf[BufP1++] = c;
75 3 if ( BufP1 >= SIZE )
76 3 {
77 4 BufP1 = 0;
78 4 }
79 3 }
80 2 }
81 1 if ( TI ) //發(fā)送中斷
82 1 {
83 2 TI = 0;
84 2 _TI_ = 1;
85 2 }
86 1 }
87
88
89 /*
90 函數(shù):UartSendChar()
91 功能:通過(guò)串行口發(fā)送單個(gè)字節(jié)
92 參數(shù):
93 c:被發(fā)送的字節(jié)數(shù)據(jù),取值0x00~0xFF
94 */
95 void UartSendChar(char c)
96 {
97 1 while ( !_TI_ );
98 1 _TI_ = 0;
99 1 ACC = c;
100 1 TB8 = P;
101 1 SBUF = c;
102 1 }
103
104
105 void main()
106 {
107 1 UartInit();
108 1 for (;;)
109 1 {
110 2 if ( BufP2 != BufP1 )
111 2 {
112 3 UartSendChar(UartBuf[BufP2++]);
113 3 if ( BufP2 >= SIZE )
114 3 {
115 4 BufP2 = 0;
116 4 }
117 3 }
C51 COMPILER V7.09 MAIN 06/29/2006 13:51:06 PAGE 3
118 2 }
119 1 }
120
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 167 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 42 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -