📄 uart.lst
字号:
C51 COMPILER V7.50 UART 03/19/2006 13:41:48 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN UART.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE UART.C LARGE ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND
line level source
1
2
3 #include "REGSND1.H"
4 #include "uart.h"
5
6 #define AT89C51SND1 1 //如果使用的是AT89C51SND1
7
8
9 /*------------------------------------------------------------------------------
10 ------------------------------------------------------------------------------*/
11 char hex[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
12
13 /*******************************************************************************************************
14 ** 函数名称: init_uart
15 ** 功能描述: 串口通讯功能初始化
16 ** 输 入: int fre
17 ** 输 出: 无
18 ** 作 者:
19 ** 日 期:
20 **------------------------------------------------------------------------------------------------------
21 ** 修改人:
22 ** 日 期:
23 **------------------------------------------------------------------------------------------------------
24 ********************************************************************************************************/
25 void init_uart(int fre)
26 {
27 1 #if AT89C51SND1
28 1 if (fre == 1200)
29 1 {
30 2 TMOD = 0x20; //设置串口工作模式
31 2 TH1 = 0xa9; //晶振为20M,工作波特率为1200时的溢出寄
-存器值
32 2 TL1 = 0xa9;
33 2 SCON = 0x50;
34 2 PCON = PCON|0x80;
35 2 TR1 = 1; //开串口中断
36 2 }
37 1 #else
#endif
40 1 }
41
42 /*******************************************************************************************************
43 ** 函数名称: printu
44 ** 功能描述: 通过串口打印字符
45 ** 输 入: char * c 要打印的字符
46 ** 输 出: 无
47 ** 作 者:
48 ** 日 期:
49 **------------------------------------------------------------------------------------------------------
50 ** 修改人:
51 ** 日 期:
52 **------------------------------------------------------------------------------------------------------
53 ********************************************************************************************************/
54 void printu(char * c)
C51 COMPILER V7.50 UART 03/19/2006 13:41:48 PAGE 2
55 {
56 1
57 1 int i = 0, j = 0;
58 1 char ct = *c;
59 1 init_uart(1200);
60 1 while (ct != '\0')
61 1 {
62 2 #if AT89C51SND1
63 2 SBUF=ct;
64 2 while (!TI);
65 2
66 2 j++;
67 2 TI = 0;
68 2 ct = *(c + j);
69 2
70 2 #endif
71 2 }
72 1
73 1 }
74
75 /*******************************************************************************************************
76 ** 函数名称: printuf
77 ** 功能描述: 通过串口打印16进制数据 功能类似ANSI C中的printf函数
78 ** 输 入: char * c, unsigned char cb
79 ** 输 出: 无
80 ** 作 者:
81 ** 日 期:
82 **------------------------------------------------------------------------------------------------------
83 ** 修改人:
84 ** 日 期:
85 **------------------------------------------------------------------------------------------------------
86 ********************************************************************************************************/
87 void printuf(char * c, unsigned char cb)
88 {
89 1 int i = 0;
90 1 char ct = *c;
91 1 char cx1;
92 1 char cx2;
93 1
94 1 init_uart(1200);
95 1 CKCON = 0x0;
96 1
97 1 #if AT89C51SND1
98 1 while (ct != '\0')
99 1 {
100 2 if (ct == '%')
101 2 {
102 3 if (*(c + i + 1) == 'x')
103 3 {
104 4 i += 2;
105 4 cx1 = cb / 16;
106 4 cx2 = cb % 16;
107 4
108 4 SBUF = hex[cx1];
109 4
110 4 while (!TI);
111 4
112 4 TI = 0;
113 4 SBUF = hex[cx2];
114 4
115 4 while (!TI);
116 4
C51 COMPILER V7.50 UART 03/19/2006 13:41:48 PAGE 3
117 4 TI = 0;
118 4 ct = *(c + i);
119 4 continue;
120 4 }
121 3 if (*(c + i + 1) == 'c')
122 3 {
123 4 i += 2;
124 4
125 4 SBUF = cb;
126 4
127 4 while (!TI);
128 4
129 4 TI = 0;
130 4 ct = *(c + i);
131 4 continue;
132 4 }
133 3
134 3 }
135 2 if (ct == '/')
136 2 {
137 3 if(*(c + i + 1) == 'n')
138 3 {
139 4 i += 2;
140 4
141 4 SBUF = 13;
142 4
143 4 while (!TI);
144 4
145 4 TI = 0;
146 4 SBUF = 10;
147 4
148 4 while (!TI);
149 4
150 4 TI = 0;
151 4 ct = *(c + i);
152 4 continue;
153 4 }
154 3 }
155 2 SBUF = ct;
156 2
157 2 while (!TI);
158 2
159 2 TI = 0;
160 2 i++;
161 2 ct = *(c + i);
162 2 }
163 1 CKCON = 0x1;
164 1
165 1 #endif
166 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 394 ----
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 + -