?? serial.lst
字號:
C51 COMPILER V7.20 SERIAL 09/29/2004 13:16:48 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN serial.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE serial.c OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND TABS(3)
line level source
1 // 題目:串口初始化C代碼
2 // 要求:
3 // 1.波特率1200bps,無奇偶校驗,停止位1,數據位8
4 // 2.定時器T1做波特率發生器
5
6 // 軟件模擬測試說明:
7 // 1.這個測試采用查詢方式進行串口通訊
8 // 2.將軟件仿真環境的晶震設為11.0592 MHz
9 // 3.軟件模擬全速運行, 觀察波特率是1200bps
10 // 4.在串口1中輸入數字或字母,可觀察到通訊是否有誤。
11
12 //#pragma src
13
14 #include <reg51.h>
15
16 //串口初始化
17 void serial_init(void)
18 {
19 1 //ET1 = 0; //CLR 0ABH ;禁止T1中斷
20 1 TMOD = 0x20; //MOV 89H,#20H ;timer 1 mode 2: 8-Bit reload(定時器T1 模式2: 8位自動初值重裝)
21 1 TH1 = 0xE8; //MOV 8DH,#0E8H
22 1 TL1 = 0xE8; //MOV 8BH,#0E8H ;1200bps, 11.059
23 1 TR1 = 1; //SETB 8EH ;啟動定時器1
24 1
25 1 SCON = 0x50; // mode 1: 10-bit UART, enable receiver(模式1: 10位異步發送/接收, 使能接收允許位)
26 1 //SM1 = 1; // ;串行口 模式1
27 1 //SM0 = 0;
28 1 //REN = 1; // ;允許串行中斷接收
29 1
30 1 SM2 = 1; //SETB O9DH ;收到有效的停止位時才將RI置1
31 1
32 1 ES = 1; //SETB 0ACH ;允許串行中斷
33 1 EA = 1; //SETB 0AFH ;總中斷開
34 1 }
35
36 //中斷方式處理串口數據
37
38 void serial(void) interrupt 4 using 1
39 {
40 1 if(RI)
41 1 {
42 2 // RI = 0;
43 2 // 串口接收, 采用臨時緩沖
44 2 }
45 1 #if 0
if(TI)
{
// TI = 0;
// 串口發送, 沒有必要使用中斷方式
}
#endif
52 1
53 1 }
54
55 // 查詢方式接收串口數據
C51 COMPILER V7.20 SERIAL 09/29/2004 13:16:48 PAGE 2
56 unsigned char getchar(void)
57 {
58 1 while(!RI);// 沒有收到串口數據則一直等待
59 1 RI=0;
60 1 return SBUF;
61 1 }
62 // 查詢方式發送串口數據
63 void putchar(unsigned char ch)
64 {
65 1 SBUF=ch;
66 1 while(!TI);
67 1 TI=0;
68 1 }
69
70 code unsigned char HEX_TAB []="0123456789ABCDEF";
71 void puthex(unsigned char ch)
72 {
73 1 unsigned char i,j;
74 1 i=ch>>4;
75 1 j=ch&0x0f;
76 1 putchar(HEX_TAB[i]);
77 1 putchar(HEX_TAB[j]);
78 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 63 ----
CONSTANT SIZE = 17 ----
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 + -