📄 uart.lst
字号:
C51 COMPILER V6.12 UART 09/21/2007 12:44:31 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN .\UART.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\UART.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /******************************************************************
2 本程序只供学习使用,未经作者许可,不得用于其它任何用途
3 我的邮箱:computer-lov@tom.com
4 欢迎访问我的blog: http://computer00.21ic.org
5
6 UART.C file
7
8 作者:Computer-lov
9 建立日期: 2007.03.20
10 修改日期: 2007.03.22
11 版本:V1.1
12 版权所有,盗版必究。
13 Copyright(C) Computer-lov 2007-2017
14 All rights reserved
15 *******************************************************************/
16
17 #include <at89x52.H>
18
19 #include "UART.h"
20 #include "my_type.h"
21
22 uint8 Sending;
23
24
25 //**************************************************************************************
26 void InitUART(void) //串口初始化函数,使用22.1184M晶体
27 {
28 1 EA=0;
29 1 TMOD&=0x0F;
30 1 TMOD|=0x20; //定时器1工作在模式2
31 1 SCON=0x50; //串口工作在模式1
32 1 TCON=0x05;
33 1 TH1=0xF4; //9600bps
34 1 TL1=0xF4;
35 1 PCON=0x80; //串口波特率加倍
36 1 ES=1; //串行中断允许
37 1 TR1=1; //启动定时器1
38 1 REN=1; //允许接收
39 1 EA=1; //允许中断
40 1 }
41 //****************************************************************************************
42
43
44 //******************************* 串口中断处理 ***********************************
45 void SerialPort(void) interrupt 4
46 {
47 1 if(RI) //收到数据
48 1 {
49 2 RI=0; //清中断请求
50 2 }
51 1 else //发送完一字节数据
52 1 {
53 2 TI=0;
54 2 Sending=0; //清正在发送标志
55 2 }
C51 COMPILER V6.12 UART 09/21/2007 12:44:31 PAGE 2
56 1 }
57 //*****************************************************************************************
58
59 //*****************************************************************************************
60 void SendToComport(unsigned char d) //往串口发送一字节数据
61 {
62 1 Sending=1;
63 1 SBUF=d;
64 1 while(Sending);
65 1 }
66 //*****************************************************************************************
67
68 //*****************************************************************************************
69 //发送一个字符串
70 void prints(uint8 * pd,uint8 line_feed)
71 {
72 1 while((*pd)!='\0')
73 1 {
74 2 SendToComport(*pd);
75 2 pd++;
76 2 }
77 1 if(line_feed)
78 1 {
79 2 SendToComport(13);
80 2 SendToComport(10);
81 2 }
82 1 }
83 //****************************************************************************************
84
85
86
87 //*****************************************************************************************
88 void PrintLongInt(uint32 x) //将整数转按十进制字符串发送
89 {
90 1 int8 i;
91 1 uint8 display_buffer[10];
92 1 display_buffer[10]=0;
93 1 for(i=9;i>=0;i--)
94 1 {
95 2 display_buffer[i]='0'+x%10;
96 2 x/=10;
97 2 }
98 1 for(i=0;i<9;i++)
99 1 {
100 2 if(display_buffer[i]!='0')break;
101 2 }
102 1 for(;i<10;i++)SendToComport(display_buffer[i]);
103 1 }
104 //*****************************************************************************************
105
106
107 code uint8 HexTable[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
108 //*****************************************************************************************
109 /*
110 void PrintLongIntHex(uint32 x) //将整数按十六进制发送
111 {
112 uint8 i;
113 uint8 display_buffer[11];
114 display_buffer[10]=0;
115 display_buffer[0]='0';
116 display_buffer[1]='x';
117 for(i=9;i>=2;i--)
C51 COMPILER V6.12 UART 09/21/2007 12:44:31 PAGE 3
118 {
119 display_buffer[i]=HexTable[(x&0xf)];
120 x>>=4;
121 }
122 prints(display_buffer,0);
123 }
124 */
125 //*****************************************************************************************
126
127
128 //*****************************************************************************************
129 void Printc(uint8 x) //发送一个byte的数据
130 {
131 1 Sending=1;
132 1 SBUF=x;
133 1 while(Sending);
134 1 }
135 //*****************************************************************************************
136
137
138 //*****************************************************************************************
139 void PrintHex(uint8 x) //以HEX格式发送一个byte的数据
140 {
141 1 Printc('0');
142 1 Printc('x');
143 1 Printc(HexTable[x>>4]);
144 1 Printc(HexTable[x&0xf]);
145 1 Printc(' ');
146 1 }
147 //*****************************************************************************************
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 270 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 18
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 + -