📄 uart.lst
字号:
C51 COMPILER V7.10 UART 01/02/2005 16:12:27 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN .\Uart.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE ..\SourceFile\Uart.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\
-Uart.lst) OBJECT(.\Uart.obj)
line level source
1 /*************************************************/
2
3 /**************串行口控制********************/
4
5 /*************2003年1月24日*********************/
6
7 /************WROTE BY WANGSW********************/
8
9 /*
10 UART所需的定时器由T1或T2提供,而不是T0
11
12 SCON:串行口控制寄存器
13 SM0(9F),SM1(9E)
14 SM0,SM1|工作方式| 说明 |所用波特率
15 0,0 | 方式0 |同步移位寄存器| Fosc/12
16 0,1 | 方式1 | 10位异步收发 |由定时器控制
17 1,0 | 方式2 | 11位异步收发 |Fosc/32或Fosc/64
18 1,1 | 方式3 | 11位异步收发 |由定时器控制
19 SM2(9D) 多机通信0:单机,1:多机
20 REN(9C) 接收控制0:禁止接收,1:允许接收
21 TB8 (9B) 发送数据第九位
22 RB8 (9A) 接收数据第九位
23 TI (99) 发送中断标记
24 RI (98) 接收中断标志
25 */
26
27 #include "reg52x2.h"
28 #include <stdlib.h>
29 #include <stdio.h>
30 #include "define.h"
31
32 #include "string.h"
33
34 #include "uart.h"
35
36 static void UartInterruptServer(void);
37
38
39
40
41
42 /******************************************************************************************
43 *函数名: UartInterruptServer
44 *参数: 无
45 *返回值: 无
46 *描述: 串口中断服务子程序
47 *编写: 王绍伟
48 *版本信息: V1.0 2003年8月15日
49 ******************************************************************************************/
50 static void UartInterruptServer(void) interrupt 4
51 {
52 1 ES = 0;
53 1 RI = 0;
54 1 //msg_queue_in(MSG_KEY, SBUF); /*用串口模拟按键*/
C51 COMPILER V7.10 UART 01/02/2005 16:12:27 PAGE 2
55 1
56 1 msg_queue_in(MSG_UART,SBUF);
57 1 ES=1;
58 1 }
59
60
61
62
63
64
65
66
67
68 /******************************************************************************************
69 *函数名: uart_init
70 *参数: eBaudRate
71 *返回值: 无
72 *描述: 串口初始化程序,主要设定了波特率以及T1作为波特率产生
73 器的工作方式等,并且指定了串口数据以及命令存放堆栈
74 *编写: 王绍伟
75 *版本信息: V1.0 2003年8月15日
76 ******************************************************************************************/
77 extern void uart_init(UartBaudrate eBaudRate)
78 {
79 1 ES = 0; /*关串行口中断*/
80 1
81 1
82 1
83 1 SETBIT(PCON, 7);
84 1
85 1 TMOD &= 0x0F;
86 1 TMOD |= 0x20;
87 1 ET1 = 0; /*中断无效*/
88 1 TH1 = eBaudRate;
89 1 TL1 = eBaudRate;
90 1 TR1 = 1; /*定时器开启*/
91 1 SCON = 0x50;
92 1
93 1 ES = 1; /*串行口中断printf需要串口关闭*/
94 1 }
95
96
97 extern void uart_send_byte(byte val)
98 {
99 1 bool bES;
100 1 bES = ES;
101 1 ES = 0;
102 1 SBUF = val;
103 1 while(!TI);
104 1 TI = 0;
105 1 ES = bES;
106 1 }
107
108
109 /******************************************************************************************
110 *函数名: uart_send_data
111 *参数: pData
112 *返回值: len
113 *描述: 以串口发送以pData为首地址,len长度的字节数据
114 *编写: 王绍伟
115 *版本信息: V1.0 2003年8月15日
116 ******************************************************************************************/
C51 COMPILER V7.10 UART 01/02/2005 16:12:27 PAGE 3
117 extern void uart_send_string(byte* pData, byte len)
118 {
119 1 bool bES;
120 1 byte data i;
121 1 byte data j;
122 1 bES = ES; /*禁止串口产生中断,而以查询的方式发送数据*/
123 1 ES = 0;
124 1 if(len)
125 1 {
126 2 i = len;
127 2 while(i--)
128 2 {
129 3 SBUF = *pData++;
130 3 while(!TI);
131 3 TI = 0;
132 3 }
133 2 }
134 1 else
135 1 {
136 2 i = strlen(pData);
137 2 while(i--)
138 2 {
139 3 j = *pData++;
140 3 if(j == 0x0A)
141 3 {
142 4 SBUF = 0x0D;
143 4 while(!TI);
144 4 TI = 0;
145 4 }
146 3 SBUF = j;
147 3 while(!TI);
148 3 TI = 0;
149 3 }
150 2 }
151 1
152 1 ES = bES;
153 1 }
154
155
156
157
158 /******************************************************************************************
159 *函数名: uart_process
160 *参数: 无
161 *返回值: 无
162 *描述: 串口处理程序,
163 *编写: 王绍伟
164 *版本信息: V1.0 2003年8月15日
165 ******************************************************************************************/
166 extern void uart_process(void)
167 {
168 1 /*
169 1 添加自己的代码
170 1 */
171 1 }
172
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 240 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 3
C51 COMPILER V7.10 UART 01/02/2005 16:12:27 PAGE 4
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -