📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 01/12/2011 22:59:02 PAGE 1
C51 COMPILER V8.02, 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 * IO 模拟 UART
3 *
4 * author:金沙滩--刚哥
5 * date:2011.1.9
6 */
7
8 #include <reg52.h>
9
10 typedef unsigned char uint8;
11 typedef unsigned int uint16;
12
13 sbit RXD2 = P3^0;
14 sbit TXD2 = P3^1;
15
16 #define MCLK 11059200UL
17 #define BAUD_RATE 9600UL
18
19 #define WAIT_TIME() do{while(!TF0);TF0 = 0;}while(0)
20
21 /*
22 * 定时器初始化
23 */
24 void timer0_init(void)
25 {
26 1 TMOD &= 0xF0;
27 1 TMOD |= 0x02; //计数器0,方式2
28 1 TH0 = 256 - MCLK/(12*BAUD_RATE);
29 1 TL0 = TH0;
30 1 TF0 = 0;
31 1 TR0 = 0;
32 1 }
33
34 /*
35 * UART发送
36 */
37 void UART_send_byte(uint8 dat)
38 {
39 1 uint8 len=8;
40 1
41 1 // 1. start bit
42 1 TL0 = TH0;
43 1 TR0 = 1;
44 1 TXD2 = 0;
45 1 WAIT_TIME();
46 1 // 2. DAT_LEN bit data
47 1 while (len--)
48 1 {
49 2 TXD2 = (bit)(dat & 0x01); //先发送低位
50 2 WAIT_TIME();
51 2 dat = dat>>1;
52 2 }
53 1 // 3. stop bit
54 1 TXD2 = 1;
55 1 WAIT_TIME();
C51 COMPILER V8.02 MAIN 01/12/2011 22:59:02 PAGE 2
56 1 TR0=0;
57 1 }
58
59 /*
60 * UART接收
61 */
62 uint8 UART_rev_byte(void)
63 {
64 1 uint8 len=8, dat=0;
65 1
66 1 while (RXD2);
67 1
68 1 // 1. jump start bit
69 1 TR0 = 1;
70 1 TL0 = 256 - MCLK/(12*BAUD_RATE)/2;
71 1 WAIT_TIME();
72 1 WAIT_TIME();
73 1
74 1 // 2. receive DAT_LEN bit data
75 1 while (len--)
76 1 {
77 2 dat >>= 1;
78 2 if (RXD2)
79 2 dat |= 0x80;
80 2 WAIT_TIME();
81 2 }
82 1
83 1 // 3. wait stop bit
84 1 WAIT_TIME();
85 1 TR0 = 0;
86 1
87 1 return dat;
88 1 }
89
90
91 main()
92 {
93 1 uint8 a;
94 1
95 1 timer0_init();
96 1
97 1 while (1)
98 1 {
99 2
100 2 UART_send_byte('i');
101 2 UART_send_byte('n');
102 2 UART_send_byte('p');
103 2 UART_send_byte('u');
104 2 UART_send_byte('t');
105 2 UART_send_byte(':');
106 2
107 2 a = UART_rev_byte();
108 2 UART_send_byte(a);
109 2
110 2 UART_send_byte('\r');
111 2 UART_send_byte('\n');
112 2 }
113 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 168 ----
C51 COMPILER V8.02 MAIN 01/12/2011 22:59:02 PAGE 3
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 + -