📄 uart.lst
字号:
C51 COMPILER V7.20 UART 11/17/2002 14:00:15 PAGE 1
C51 COMPILER V7.20, 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 * 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) //开发板用的晶振是20M,1M = 1000,不等于1024
32 {
33 1 #if AT89C51SND1
34 1 if (fre == 1200) //波特率为1200bps
35 1 {
36 2 TMOD = 0x20; ////下面几句用来产生波特率8-bit Auto-ReloadTimer/Counter using timer 1
37 2 TH1 = 0xa9;
38 2 TL1 = 0xa9;
39 2 SCON = 0x50; //8 BIT UART, BAUD RATE VARIABLE
40 2 PCON = PCON | 0x80; //SMOD = 1, Double baud rate bit k=2
41 2 TR1 = 1; //Timer 1 run control bit. Set/ckared by softwareto turn Timer/Counter 1 ON/OFF.
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 11/17/2002 14:00:15 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); //Transmit interrupt tlag. Set by hardware at the end of the 8th bit time in mode O,or at
- the
63 2 //beginningof the stop bit in the other modes.Must be cleared by software.
64 2
65 2 j++;
66 2 TI = 0;
67 2 ct = *(c + j);
68 2
69 2 #endif
70 2 }
71 1
72 1 }
73
74 /*-----------------------------------------------------------------------
75 当输出为字符串时可使用或含有一控制符时使用,格式符仅用于16进制输出
76 格式控制符为%x,回车控制符为/n
77 -----------------------------------------------------------------------*/
78 void printuf(char * c, unsigned char cb)
79 {
80 1 int i = 0;
81 1 char ct = *c;
82 1 char cx1;
83 1 char cx2;
84 1
85 1 init_uart(1200);
86 1
87 1 #if AT89C51SND1
88 1 while (ct != '\0')
89 1 {
90 2 if (ct == '%')
91 2 {
92 3 if (*(c + i + 1) == 'x')
93 3 {
94 4 i += 2;
95 4 cx1 = cb / 16;
96 4 cx2 = cb % 16;
97 4
98 4 SBUF = hex[cx1];
99 4
100 4 while (!TI);
101 4 TI = 0;
102 4 SBUF = hex[cx2];
103 4
104 4 while (!TI);
105 4 TI = 0;
106 4 ct = *(c + i);
107 4
108 4 continue;
109 4 }
110 3
111 3 }
112 2 if (ct == '/')
113 2 {
114 3 if (*(c + i + 1) == 'n')
115 3 {
116 4 i += 2;
C51 COMPILER V7.20 UART 11/17/2002 14:00:15 PAGE 3
117 4 SBUF = 13;
118 4
119 4 while (!TI);
120 4 TI = 0;
121 4 SBUF = 10;
122 4
123 4 while (!TI);
124 4 TI = 0;
125 4 ct = *(c + i);
126 4
127 4 continue;
128 4 }
129 3 }
130 2 SBUF = ct;
131 2
132 2 while (!TI);
133 2 TI = 0;
134 2 i++;
135 2 ct = *(c + i);
136 2 }
137 1 #endif
138 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -