📄 uart.lst
字号:
C51 COMPILER V7.50 UART 02/08/2007 11:18:09 PAGE 1
C51 COMPILER V7.50, 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
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 ********************************************************************************************************/
17 void init_uart(int fre)
18 {
19 1 #if AT89C51SND1
20 1 if (fre == 1200)
21 1 {
22 2 TMOD = 0x20; //设置串口工作模式 方式1
23 2 TH1 = 0xa9; //晶振为20M,工作波特率为1200时的溢出寄
-存器值
24 2 TL1 = 0xa9;
25 2 SCON = 0x50;
26 2 PCON = PCON|0x80;
27 2 TR1 = 1; //开串口中断
28 2 }
29 1 #else
#endif
32 1 }
33
34 /*******************************************************************************************************
35 ** 函数名称: printu
36 ** 功能描述: 通过串口打印字符
37
38 ********************************************************************************************************/
39 void printu(char * c)
40 {
41 1
42 1 int i = 0, j = 0;
43 1 char ct = *c;
44 1 CKCON|=0x01;
45 1 init_uart(1200);
46 1 while (ct != '\0')
47 1 {
48 2 #if AT89C51SND1
49 2 SBUF=ct;
50 2 while (!TI);
51 2
52 2 j++;
53 2 TI = 0;
54 2 ct = *(c + j);
C51 COMPILER V7.50 UART 02/08/2007 11:18:09 PAGE 2
55 2
56 2 #endif
57 2 }
58 1
59 1 }
60
61 /*******************************************************************************************************
62 ** 函数名称: printuf
63 ** 功能描述: 通过串口打印16进制数据 功能类似ANSI C中的printf函数
64
65 ********************************************************************************************************/
66 void printuf(char * c, unsigned char cb)
67 {
68 1
69 1 int i = 0;
70 1 char ct = *c;
71 1 char cx1;
72 1 char cx2;
73 1
74 1 init_uart(1200);
75 1 CKCON|=0x01;
76 1 //CKCON = 0x0;
77 1
78 1 #if AT89C51SND1
79 1 while (ct != '\0')
80 1 {
81 2 if (ct == '%')
82 2 {
83 3 if (*(c + i + 1) == 'x')
84 3 {
85 4 i += 2;
86 4 cx1 = cb / 16;
87 4 cx2 = cb % 16;
88 4
89 4 SBUF = hex[cx1];
90 4
91 4 while (!TI);
92 4
93 4 TI = 0;
94 4 SBUF = hex[cx2];
95 4
96 4 while (!TI);
97 4
98 4 TI = 0;
99 4 ct = *(c + i);
100 4 continue;
101 4 }
102 3 if (*(c + i + 1) == 'c')
103 3 {
104 4 i += 2;
105 4
106 4 SBUF = cb;
107 4
108 4 while (!TI);
109 4
110 4 TI = 0;
111 4 ct = *(c + i);
112 4 continue;
113 4 }
114 3
115 3 }
116 2 if (ct == '/')
C51 COMPILER V7.50 UART 02/08/2007 11:18:09 PAGE 3
117 2 {
118 3 if(*(c + i + 1) == 'n')
119 3 {
120 4 i += 2;
121 4
122 4 SBUF = 13;
123 4
124 4 while (!TI);
125 4
126 4 TI = 0;
127 4 SBUF = 10;
128 4
129 4 while (!TI);
130 4
131 4 TI = 0;
132 4 ct = *(c + i);
133 4 continue;
134 4 }
135 3 }
136 2 SBUF = ct;
137 2
138 2 while (!TI);
139 2
140 2 TI = 0;
141 2 i++;
142 2 ct = *(c + i);
143 2 }
144 1 CKCON = 0x1;
145 1
146 1 #endif
147 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 400 ----
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 + -