📄 uart.lst
字号:
C51 COMPILER V7.06 UART 09/13/2007 00:45:44 PAGE 1
C51 COMPILER V7.06, 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 uint8 UartData;
24 uint8 UartRflag;
25
26 //**************************************************************************************
27 void InitUART(void) //串口初始化函数,使用22.1184M晶体
28 {
29 1 EA=0;
30 1 TMOD&=0x0F;
31 1 TMOD|=0x20; //定时器1工作在模式2
32 1 SCON=0x50; //串口工作在模式1
33 1 TCON=0x05;
34 1 TH1=0xF4; //9600bps
35 1 TL1=0xF4;
36 1 PCON=0x80; //串口波特率加倍
37 1 ES=1; //串行中断允许
38 1 TR1=1; //启动定时器1
39 1 REN=1; //允许接收
40 1 EA=1; //允许中断
41 1 }
42 //****************************************************************************************
43
44
45 //******************************* 串口中断处理 ***********************************
46 void SerialPort(void) interrupt 4
47 {
48 1 if(RI) //收到数据
49 1 {
50 2 UartData=SBUF;
51 2 UartRflag=1;
52 2 RI=0; //清中断请求
53 2 }
54 1 else //发送完一字节数据
55 1 {
C51 COMPILER V7.06 UART 09/13/2007 00:45:44 PAGE 2
56 2 TI=0;
57 2 Sending=0; //清正在发送标志
58 2 }
59 1 }
60 //*****************************************************************************************
61
62 //*****************************************************************************************
63 void SendToComport(unsigned char d) //往串口发送一字节数据
64 {
65 1 Sending=1;
66 1 SBUF=d;
67 1 while(Sending);
68 1 }
69 //*****************************************************************************************
70
71 //*****************************************************************************************
72 //发送一个字符串
73 void Prints(uint8 * pd,uint8 line_feed)
74 {
75 1 while((*pd)!='\0')
76 1 {
77 2 SendToComport(*pd);
78 2 pd++;
79 2 }
80 1 if(line_feed)
81 1 {
82 2 SendToComport(13);
83 2 SendToComport(10);
84 2 }
85 1 }
86 //****************************************************************************************
87
88
89
90 //*****************************************************************************************
91 void PrintLongInt(uint32 x) //将整数转按十进制字符串发送
92 {
93 1 int8 i;
94 1 uint8 display_buffer[11];
95 1 display_buffer[10]=0;
96 1 for(i=9;i>=0;i--)
97 1 {
98 2 display_buffer[i]='0'+x%10;
99 2 x/=10;
100 2 }
101 1 for(i=0;i<9;i++)
102 1 {
103 2 if(display_buffer[i]!='0')break;
104 2 }
105 1 for(;i<10;i++)SendToComport(display_buffer[i]);
106 1 }
107 //*****************************************************************************************
108
109
110 code uint8 HexTable[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
111 //*****************************************************************************************
112 /*
113 void PrintLongIntHex(uint32 x) //将整数按十六进制发送
114 {
115 uint8 i;
116 uint8 display_buffer[11];
117 display_buffer[10]=0;
C51 COMPILER V7.06 UART 09/13/2007 00:45:44 PAGE 3
118 display_buffer[0]='0';
119 display_buffer[1]='x';
120 for(i=9;i>=2;i--)
121 {
122 display_buffer[i]=HexTable[(x&0xf)];
123 x>>=4;
124 }
125 prints(display_buffer,0);
126 }
127 */
128 //*****************************************************************************************
129
130
131 //*****************************************************************************************
132 void Printc(uint8 x) //发送一个byte的数据
133 {
134 1 Sending=1;
135 1 SBUF=x;
136 1 while(Sending);
137 1 }
138 //*****************************************************************************************
139
140
141 //*****************************************************************************************
142 void PrintHex(uint8 x) //以HEX格式发送一个byte的数据
143 {
144 1 Printc('0');
145 1 Printc('x');
146 1 Printc(HexTable[x>>4]);
147 1 Printc(HexTable[x&0xf]);
148 1 Printc(' ');
149 1 }
150 //*****************************************************************************************
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 260 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 16
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 + -