uart.lst
来自「这个是一个完整的MP3项目」· LST 代码 · 共 165 行
LST
165 行
C51 COMPILER V7.20 UART 03/21/2007 13:34:34 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN uart.OBJ
COMPILER INVOKED BY: C:\Program Files\keil\C51\BIN\C51.EXE uart.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 * Copyright (c) 2004,北京博创兴业科技有限公司
3 * All rights reserved.
4 *
5 * 文件名称:uart.c
6 * 文件标识:uart
7 * 摘 要:串口通讯的函数实现
8 *
9 * 当前版本:2.0
10 * 作 者:Kent
11 * 完成日期:2004年5月20日
12 *
13 * 取代版本:1.1
14 * 原作者 :Frank
15 * 完成日期:2003年8月10日
16 */
17
18 #include <REGSND1.H>
19 #include "uart.h"
20
21 #define AT89C51SND1 1 //如果使用的是AT89C51SND1
22
23
24 /*------------------------------------------------------------------------------
25 ------------------------------------------------------------------------------*/
26 char hex[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
27
28 /*------------------------------------------------------------------------------
29 初使化串口
30 ------------------------------------------------------------------------------*/
31 void init_uart(int fre)
32 {
33 1 #if AT89C51SND1
34 1 if (fre == 1200)
35 1 {
36 2 TMOD = 0x20;
37 2 TH1 = 0xa9;
38 2 TL1 = 0xa9;
39 2 SCON = 0x50;
40 2 PCON = PCON | 0x80;
41 2 TR1 = 1;
42 2 }
43 1 #else
#endif
46 1 }
47
48 /*--------------------------------------------------------------------
49 当输出仅为字符串时可使用
50 ---------------------------------------------------------------------*/
51 void printu(char * c)
52 {
53 1
54 1 int i = 0, j = 0;
55 1 char ct = *c;
C51 COMPILER V7.20 UART 03/21/2007 13:34:34 PAGE 2
56 1 init_uart(1200);
57 1 while (ct != '\0')
58 1 {
59 2 #if AT89C51SND1
60 2 SBUF = ct;
61 2
62 2 while (!TI);
63 2
64 2 j++;
65 2 TI = 0;
66 2 ct = *(c + j);
67 2
68 2 #endif
69 2 }
70 1
71 1 }
72
73 /*-----------------------------------------------------------------------
74 当输出为字符串时可使用或含有一控制符时使用,格式符仅用于16进制输出
75 格式控制符为%x,回车控制符为/n
76 -----------------------------------------------------------------------*/
77 void printuf(char * c, unsigned char cb)
78 {
79 1 int i = 0;
80 1 char ct = *c;
81 1 char cx1;
82 1 char cx2;
83 1
84 1 init_uart(1200);
85 1
86 1 #if AT89C51SND1
87 1 while (ct != '\0')
88 1 {
89 2 if (ct == '%')
90 2 {
91 3 if (*(c + i + 1) == 'x')
92 3 {
93 4 i += 2;
94 4 cx1 = cb / 16;
95 4 cx2 = cb % 16;
96 4
97 4 SBUF = hex[cx1];
98 4
99 4 while (!TI);
100 4 TI = 0;
101 4 SBUF = hex[cx2];
102 4
103 4 while (!TI);
104 4 TI = 0;
105 4 ct = *(c + i);
106 4
107 4 continue;
108 4 }
109 3
110 3 }
111 2 if (ct == '/')
112 2 {
113 3 if (*(c + i + 1) == 'n')
114 3 {
115 4 i += 2;
116 4 SBUF = 13;
117 4
C51 COMPILER V7.20 UART 03/21/2007 13:34:34 PAGE 3
118 4 while (!TI);
119 4 TI = 0;
120 4 SBUF = 10;
121 4
122 4 while (!TI);
123 4 TI = 0;
124 4 ct = *(c + i);
125 4
126 4 continue;
127 4 }
128 3 }
129 2 SBUF = ct;
130 2
131 2 while (!TI);
132 2 TI = 0;
133 2 i++;
134 2 ct = *(c + i);
135 2 }
136 1 #endif
137 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 346 ----
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 + =
减小字号Ctrl + -
显示快捷键?