📄 uart.lst
字号:
C51 COMPILER V7.06 UART 03/21/2006 09:38:05 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN UART.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE UART.C LARGE BROWSE DEBUG OBJECTEXTEND PAGEWIDTH(130) PAGELENGTH(80)
stmt level source
1
2 /*********************************************************************************************************
3 **
4 ** MP3 and U Disk Source Code
5 ** Copyright (c) 2005,北京博创兴业科技有限公司
6 ** All Rights Reserved
7 ** V3.00.0
8 **
9 **--------------文件信息--------------------------------------------------------------------------------
10 **文 件 名: UART.C
11 **创 建 人: Frank Wang Xiao Jun
12 **创 建 日 期: 2003.12
13 **描 述: ATMEL AT89C51SND1 串口通讯
14 **
15 **--------------历史版本信息----------------------------------------------------------------------------
16 ** 创建人: Frank Wang Xiao Jun
17 ** 版 本: V1.00.0
18 ** 日 期: 2003.12
19 ** 描 述: ATMEL AT89C51SND1 串口通讯
20 **
21 **------------------------------------------------------------------------------------------------------
22 ** 修改人: Kent Zou Ying
23 ** 版 本: V2.00.0
24 ** 日 期: 2004. 5
25 ** 描 述: ATMEL AT89C51SND1 串口通讯
26 **
27 **--------------当前版本修订------------------------------------------------------------------------------
28 ** 修改人: Phoenix Hua Yue Guang
29 ** 版 本: V3.00.0
30 ** 日 期: 2005.3
31 ** 描 述: ATMEL AT89C51SND1 串口通讯
32 **
33 **------------------------------------------------------------------------------------------------------
34 ********************************************************************************************************/
35
36 #include "REGSND1.H"
37 #include "uart.h"
38
39 #define AT89C51SND1 1 //如果使用的是AT89C51SND1
40
41
42 /*------------------------------------------------------------------------------
43 ------------------------------------------------------------------------------*/
44 char hex[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
45
46 /*******************************************************************************************************
47 ** 函数名称: init_uart
48 ** 功能描述: 串口通讯功能初始化
49 ** 输 入: int fre
50 ** 输 出: 无
51 ** 作 者:
52 ** 日 期:
53 **------------------------------------------------------------------------------------------------------
54 ** 修改人:
55 ** 日 期:
56 **------------------------------------------------------------------------------------------------------
57 ********************************************************************************************************/
58 void init_uart(int fre)
59 {
60 1 #if AT89C51SND1
61 1 if (fre == 1200)
62 1 {
63 2 TMOD = 0x20; //设置串口工作模式
64 2 TH1 = 0xa9; //晶振为20M,工作波特率为1200时的溢出寄存器值
65 2 TL1 = 0xa9;
66 2 SCON = 0x50;
67 2 PCON = PCON|0x80;
68 2 TR1 = 1; //开串口中断
69 2 }
70 1 #else
C51 COMPILER V7.06 UART 03/21/2006 09:38:05 PAGE 2
#endif
73 1 }
74
75 /*******************************************************************************************************
76 ** 函数名称: printu
77 ** 功能描述: 通过串口打印字符
78 ** 输 入: char * c 要打印的字符
79 ** 输 出: 无
80 ** 作 者:
81 ** 日 期:
82 **------------------------------------------------------------------------------------------------------
83 ** 修改人:
84 ** 日 期:
85 **------------------------------------------------------------------------------------------------------
86 ********************************************************************************************************/
87 void printu(char * c)
88 {
89 1
90 1 int i = 0, j = 0;
91 1 char ct = *c;
92 1 init_uart(1200);
93 1 while (ct != '\0')
94 1 {
95 2 #if AT89C51SND1
96 2 SBUF=ct;
97 2 while (!TI);
98 2
99 2 j++;
100 2 TI = 0;
101 2 ct = *(c + j);
102 2
103 2 #endif
104 2 }
105 1
106 1 }
107
108 /*******************************************************************************************************
109 ** 函数名称: printuf
110 ** 功能描述: 通过串口打印16进制数据 功能类似ANSI C中的printf函数
111 ** 输 入: char * c, unsigned char cb
112 ** 输 出: 无
113 ** 作 者:
114 ** 日 期:
115 **------------------------------------------------------------------------------------------------------
116 ** 修改人:
117 ** 日 期:
118 **------------------------------------------------------------------------------------------------------
119 ********************************************************************************************************/
120 void printuf(char * c, unsigned char cb)
121 {
122 1 int i = 0;
123 1 char ct = *c;
124 1 char cx1;
125 1 char cx2;
126 1
127 1 init_uart(1200);
128 1 CKCON = 0x0;
129 1
130 1 #if AT89C51SND1
131 1 while (ct != '\0')
132 1 {
133 2 if (ct == '%')
134 2 {
135 3 if (*(c + i + 1) == 'x')
136 3 {
137 4 i += 2;
138 4 cx1 = cb / 16;
139 4 cx2 = cb % 16;
140 4
141 4 SBUF = hex[cx1];
142 4
143 4 while (!TI);
144 4
145 4 TI = 0;
146 4 SBUF = hex[cx2];
147 4
148 4 while (!TI);
149 4
C51 COMPILER V7.06 UART 03/21/2006 09:38:05 PAGE 3
150 4 TI = 0;
151 4 ct = *(c + i);
152 4 continue;
153 4 }
154 3 if (*(c + i + 1) == 'c')
155 3 {
156 4 i += 2;
157 4
158 4 SBUF = cb;
159 4
160 4 while (!TI);
161 4
162 4 TI = 0;
163 4 ct = *(c + i);
164 4 continue;
165 4 }
166 3
167 3 }
168 2 if (ct == '/')
169 2 {
170 3 if(*(c + i + 1) == 'n')
171 3 {
172 4 i += 2;
173 4
174 4 SBUF = 13;
175 4
176 4 while (!TI);
177 4
178 4 TI = 0;
179 4 SBUF = 10;
180 4
181 4 while (!TI);
182 4
183 4 TI = 0;
184 4 ct = *(c + i);
185 4 continue;
186 4 }
187 3 }
188 2 SBUF = ct;
189 2
190 2 while (!TI);
191 2
192 2 TI = 0;
193 2 i++;
194 2 ct = *(c + i);
195 2 }
196 1 CKCON = 0x1;
197 1
198 1 #endif
199 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 397 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 16 12
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 + -