📄 uart.lst
字号:
C51 COMPILER V7.06 UART 07/01/2007 16:03:04 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 COMPACT BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include "config.h"
3
4 //参数配置
5 #define MCLK 11059200L //定义CPU主频(Hz)
6 //#define BAUD_RATE 9600L //设置波特率
7
8
9
10
11 void ReceOneChar(char ReceChar);
12
13 void UartSendChar(char c);
14
15
16
17 uint8 RS323BaudNumber(uint32 bps)
18 {
19 1 uint8 RS323Baud;
20 1 switch(bps)
21 1 {
22 2 /* case 115200:
23 2 RS323Baud = 7;
24 2 break;
25 2 */ case 57600: //6
26 2 RS323Baud = 0xFF;
27 2 break;
28 2 /* case 56000:
29 2 RS323Baud = 5;
30 2 break; */
31 2 case 38400: //4
32 2 RS323Baud = 0xfe;
33 2 break;
34 2 case 19200: //3
35 2 RS323Baud = 0xfd;
36 2 break;
37 2 case 14400: //2
38 2 RS323Baud = 0xfc;
39 2 break;
40 2 case 9600: //1
41 2 RS323Baud = 0xfa;
42 2 break;
43 2 case 4800:
44 2 RS323Baud = 0xf4;
45 2 break;
46 2 default:
47 2 RS323Baud = 0xfa;
48 2 break;
49 2 }
50 1 return RS323Baud;
51 1 }
52
53 //********************************************************************************************************
54 // 函数名称:SendResponse
55 // 输入参数:buff,字符串指针,类型:unsigned char
C51 COMPILER V7.06 UART 07/01/2007 16:03:04 PAGE 2
56 // len,字符长度,类型:unsigned short
57 // 输出参数:无
58 // 功能描述:发送帧函数为底层字符发送处理函数,ZLG/MODBUS RTU协议栈中使用该函数发送帧数据
59 //********************************************************************************************************
60 void SendResponse(uint8 *buff,uint16 len)
61 {
62 1 uint16 i;
63 1 for(i=0;i<len;i++)
64 1 {
65 2 UartSendChar(*(buff+i));
66 2 }
67 1 }
68
69
70
71
72
73
74 //定义发送中断辅助标志(仅用于发送)
75 static volatile bit _TI_;
76
77
78 //串行口初始化
79 void UART0Init(uint32 bps)
80 {
81 1 char t;
82 1 EA = 0;
83 1 RXD = 1;
84 1 TXD = 1;
85 1 _TI_ = 1;
86 1 SCON = 0x50; //串口方式1
87 1 PCON |= 0x80; //波特率加倍
88 1 t = TMOD;
89 1 t &= 0x0F;
90 1 t |= 0x20;
91 1 TMOD = t;
92 1 // TH1 = 256 - ( MCLK / 12 ) / ( 16 * 9600L );
93 1 TH1 = RS323BaudNumber(bps) ;
94 1 TL1 = TH1;
95 1 TR1 = 1;
96 1 ES = 1; //允许串行口中断
97 1 EA = 1; //允许中断
98 1 }
99
100
101 //串行口中断服务程序
102 static void UartINTSVC() interrupt 4
103 {
104 1 char c;
105 1 if ( RI ) //接收中断
106 1 {
107 2 c = SBUF;
108 2 RI = 0;
109 2 ReceOneChar(c);
110 2 }
111 1 if ( TI ) //发送中断
112 1 {
113 2 TI = 0;
114 2 _TI_ = 1;
115 2 }
116 1 }
117
C51 COMPILER V7.06 UART 07/01/2007 16:03:04 PAGE 3
118
119 /*
120 功能:
121 通过串行口发送单个字节
122 参数:
123 c:被发送的字节数据,取值0x00~0xFF
124 */
125 void UartSendChar(uint8 c)
126 {
127 1 while ( !_TI_ );
128 1 _TI_ = 0;
129 1 SBUF = c;
130 1 }
131
132
133 /*********************************************************************************************************
134 ** End Of File
135 ********************************************************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 280 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- 11
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -