📄 uart.lst
字号:
C51 COMPILER V8.02 UART 03/04/2008 13:50:52 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN uart.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE uart.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "mytype.h"
2 #include "d12.h"
3
4 #define Fclk 22118400UL /*使用22.1184M晶体*/
5 #define BitRate 9600UL /*波特率定义为9600*/
6
7 uint8 Sending;
8
9
10 //串口初始化
11 void InitUART(void)
12 { EA=0;
13 1 TMOD&=0x0F;
14 1 TMOD|=0x20; //定时器1工作在模式2
15 1 SCON=0x50; //串口工作在模式1
16 1 TCON=0x05;
17 1 TH1=256-Fclk/(BitRate*12*16);
18 1 TL1=256-Fclk/(BitRate*12*16);
19 1 PCON=0x80; //串口波特率加倍
20 1 ES=1; //串行中断允许
21 1 TR1=1; //启动定时器1
22 1 REN=1; //允许接收
23 1 EA=1; //允许中断
24 1 }
25
26 void UartISR(void) interrupt 4
27 {
28 1 if(RI) //收到数据
29 1 {
30 2 RI=0; //清中断请求
31 2 }
32 1 else //发送完一字节数据
33 1 {
34 2 TI=0;
35 2 Sending=0; //清正在发送标志
36 2 }
37 1 }
38
39 void UartPutChar(uint8 d)
40 {
41 1 Sending=1;
42 1 SBUF=d;
43 1 while(Sending);
44 1 }
45
46 /********************************************************************
47 函数功能:发送一个字符串。
48 入口参数:pd:要发送的字符串指针。
49 返 回:无。
50 备 注:无。
51 ********************************************************************/
52 void Prints(uint8 * pd)
53 {
54 1 while((*pd)!='\0')
55 1 {
C51 COMPILER V8.02 UART 03/04/2008 13:50:52 PAGE 2
56 2 UartPutChar(*pd);
57 2 pd++;
58 2 }
59 1 }
60
61 /********************************************************************
62 函数功能:将整数转按十进制字符串发送。
63 入口参数:x:待显示的整数。
64 返 回:无。
65 备 注:无。
66 ********************************************************************/
67 /*void PrintLongInt(uint32 x)
68 {
69 int8 i;
70 uint8 display_buffer[10];
71
72 for(i=9;i>=0;i--)
73 {
74 display_buffer[i]='0'+x%10;
75 x/=10;
76 }
77 for(i=0;i<9;i++)
78 {
79 if(display_buffer[i]!='0')break;
80 }
81 for(;i<10;i++)UartPutChar(display_buffer[i]);
82 }
83 /*void PrintShortIntHex(uint16 x)
84 {
85 uint8 i;
86 uint8 display_buffer[7];
87 display_buffer[6]=0;
88 display_buffer[0]='0';
89 display_buffer[1]='x';
90 for(i=5;i>=2;i--)
91 {
92 display_buffer[i]=HexTable[(x&0xf)];
93 x>>=4;
94 }
95 Prints(display_buffer);
96 }
97 /********************************************************************
98 函数功能:发送一个byte的数据。
99 入口参数:待发送的数据。
100 返 回:无。
101 备 注:无。
102 ********************************************************************/
103 void Printc(uint8 x)
104 {
105 1 Sending=1;
106 1 SBUF=x;
107 1 while(Sending);
108 1 }
109 code uint8 HexTable[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
110 void PrintShortIntHex(uint16 x)
111 {
112 1 uint8 i;
113 1 uint8 display_buffer[7];
114 1 display_buffer[6]=0;
115 1 display_buffer[0]='0';
116 1 display_buffer[1]='x';
117 1 for(i=5;i>=2;i--)
C51 COMPILER V8.02 UART 03/04/2008 13:50:52 PAGE 3
118 1 {
119 2 display_buffer[i]=HexTable[(x&0xf)];
120 2 x>>=4;
121 2 }
122 1 Prints(display_buffer);
123 1 }
124 void PrintHex(uint8 x)
125 {
126 1 Printc('0');
127 1 Printc('x');
128 1 Printc(HexTable[x>>4]);
129 1 Printc(HexTable[x&0xf]);
130 1 Printc(' ');
131 1 }
132
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 181 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 7
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 + -