?? main.lst
字號:
C51 COMPILER V7.09 MAIN 06/29/2006 13:48:36 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 串行口通信方式1例程
4 */
5
6
7 #include <reg51.h>
8
9
10 //參數配置
11 #define MCLK 11059200L //定義CPU主頻(Hz)
12 #define BAUD_RATE 9600L //設置波特率
13
14
15 //定義發送輔助標志
16 static volatile bit _TI_;
17
18
19 //定義接收緩沖區
20 #define SIZE 40
21 unsigned char UartBuf[SIZE];
22
23
24 //定義接收緩沖區下標變量
25 unsigned char BufP1;
26 unsigned char BufP2;
27
28
29 /*
30 函數: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 = 0x50; //串口方式1(8位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; //設置波特率
53 1 TR1 = 1;
54 1 ES = 1; //允許串行口中斷
55 1 EA = 1; //允許中斷
C51 COMPILER V7.09 MAIN 06/29/2006 13:48:36 PAGE 2
56 1 }
57
58
59 /*
60 函數:UartINTSVC
61 功能:串行口中斷服務程序
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 UartBuf[BufP1++] = c;
71 2 if ( BufP1 >= SIZE )
72 2 {
73 3 BufP1 = 0;
74 3 }
75 2 }
76 1 if ( TI ) //發送中斷
77 1 {
78 2 TI = 0;
79 2 _TI_ = 1;
80 2 }
81 1 }
82
83
84 /*
85 函數:UartSendChar()
86 功能:通過串行口發送單個字節
87 參數:
88 c:被發送的字節數據,取值0x00~0xFF
89 */
90 void UartSendChar(char c)
91 {
92 1 while ( !_TI_ );
93 1 _TI_ = 0;
94 1 SBUF = c;
95 1 }
96
97
98 void main()
99 {
100 1 UartInit();
101 1 for (;;)
102 1 {
103 2 if ( BufP2 != BufP1 )
104 2 {
105 3 UartSendChar(UartBuf[BufP2++]);
106 3 if ( BufP2 >= SIZE )
107 3 {
108 4 BufP2 = 0;
109 4 }
110 3 }
111 2 }
112 1 }
113
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 149 ----
C51 COMPILER V7.09 MAIN 06/29/2006 13:48:36 PAGE 3
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)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -