📄 uart51.lst
字号:
C51 COMPILER V7.50 UART51 03/09/2005 21:43:21 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE UART51
OBJECT MODULE PLACED IN uart51.OBJ
COMPILER INVOKED BY: E:\学习工具\Keil51\C51\BIN\C51.EXE uart51.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************************
2 * 文件:uart51.c
3 * 功能:UART0和UART1基本操作程序库
4 * 作者:宋智宁
5 * 日期:2005.3.8
6 * 备注:支持AT89S52(入口参数uart_no无效),中断服务程序由用户来修改
7 *********************************************************************************/
8 #include "config.h"
9
10 /******************************************************************************
11 * 名称:Uart_Init()
12 * 功能:UART初始化子程序
13 * 入口参数:bit uart_no --选择串口(无效)
14 * unsigned char mode--串口模式
15 * unsigned int bd_rate--常用波特率
16 * 出口参数:无
17 * 使用全局变量:无
18 * 说明:(1) CPU:AT89S52
19 * (2) 晶振频率:11.0592 MHz
20 * (3) 机器周期:1.08 us
21 * (4) UART: 用TIMER1
22 * (5) 注意串口工作方式和中断的开启
23 * (6) 最大波特率57600bps
24 ******************************************************************************/
25 void Uart_Init(bit uart_no, unsigned char mode, unsigned int bd_rate)
26 {
27 1 unsigned int timerval;
28 1
29 1 EA = 0; //初始化时关总中断
30 1
31 1 //----Timer1-Init-----------------------------
32 1 TMOD = (TMOD&0x0f)+0x20; //TIMER1,MODE2
33 1
34 1 if(bd_rate>28800)
35 1 {
36 2 bd_rate = bd_rate/2;
37 2 PCON |= 0x80; //SMOD = 1;
38 2 }else
39 1 PCON &= 0x7F; //SMOD = 0;
40 1
41 1 timerval = 0x00 - 28800/bd_rate; //BD_RATE = (fosc/(12*(256-N)))/32;
42 1 TR1 = 0;
43 1 TH1 = (unsigned char)timerval;
44 1 TL1 = (unsigned char)timerval;
45 1 TR1 = 1;
46 1 //----Uart0-Init-----------------------------
47 1 if(mode<=3)
48 1 {
49 2 SCON = (mode<<6) | 0x10; //SERIAL0 MODE=mode ; REN=1; SM2=0
50 2 }
51 1
52 1 #if SERIAL_INT_EN==1
53 1 ES = 1;
54 1 #else
ES = 0;
C51 COMPILER V7.50 UART51 03/09/2005 21:43:21 PAGE 2
#endif
57 1
58 1 EA = 1; //开总中断 (注意串行中断的ISR)
59 1 }
*** WARNING C280 IN LINE 25 OF UART51.C: 'uart_no': unreferenced local variable
60
61 /******************************************************************************
62 * 名称:Uart_Send_Byte()
63 * 功能:Uart发送 N Byte子程序
64 * 入口参数:bit uart_no --选择串口(无效)
65 * unsigned char buf[] --发送数据指针
66 * unsigned char num --发送字节数
67 * 出口参数:无
68 * 使用全局变量:无
69 ******************************************************************************/
70 void Uart_Send_Byte(bit uart_no, unsigned char buf[], unsigned char num)
71 {
72 1 unsigned char i;
73 1
74 1 #if SERIAL_INT_EN==1
75 1 ES = 0; //关中断
76 1 #endif
77 1
78 1 for(i=0; i<num; i++)
79 1 {
80 2 SBUF = buf[i]; //Uart
81 2 while(!TI); //wait for send
82 2 TI = 0;
83 2 }
84 1 #if SERIAL_INT_EN==1
85 1 ES = 1; //开中断
86 1 #endif
87 1 }
*** WARNING C280 IN LINE 70 OF UART51.C: 'uart_no': unreferenced local variable
88
89 /******************************************************************************
90 * 名称:Uart_Send_Str()
91 * 功能:Uart顺序发送字符串子程序
92 * 入口参数:bit uart_no --选择串口(无效)
93 * unsigned char *str_dat ----字符串指针
94 * 出口参数:无
95 * 使用全局变量:无
96 ******************************************************************************/
97 void Uart_Send_Str(bit uart_no, unsigned char *str_p)
98 {
99 1 unsigned char i;
100 1
101 1 #if SERIAL_INT_EN==1
102 1 ES = 0; //关中断
103 1 #endif
104 1
105 1 while((*str_p)!=0)
106 1 {
107 2 SBUF = (*str_p++); //uart
108 2 while(!TI); //wait for send
109 2 TI = 0;
110 2 }
111 1 #if SERIAL_INT_EN==1
112 1 ES = 1; //开中断
113 1 #endif
114 1 }
*** WARNING C280 IN LINE 97 OF UART51.C: 'uart_no': unreferenced local variable
C51 COMPILER V7.50 UART51 03/09/2005 21:43:21 PAGE 3
*** WARNING C280 IN LINE 99 OF UART51.C: 'i': unreferenced local variable
115
116 /******************************************************************************
117 * 名称:Uart_Rev_Byte()
118 * 功能:Uart等待接收 N Byte子程序
119 * 入口参数:bit uart_no --选择串口(无效)
120 * unsigned char buf[] --接收缓冲区
121 * unsigned char num --接收字节数
122 * 出口参数:无
123 * 使用全局变量:无
124 ******************************************************************************/
125 void Uart_Rev_Byte(bit uart_no, unsigned char buf[], unsigned char num)
126 {
127 1 unsigned char i;
128 1
129 1 #if SERIAL_INT_EN==1
130 1 ES = 0; //关中断
131 1 #endif
132 1
133 1 for(i=0; i<num; i++)
134 1 {
135 2 while(!RI); //uart0
136 2 buf[i] = SBUF; //receive data
137 2 RI = 0;
138 2 }
139 1 #if SERIAL_INT_EN==1
140 1 ES = 1; //开中断
141 1 #endif
142 1 }
*** WARNING C280 IN LINE 125 OF UART51.C: 'uart_no': unreferenced local variable
143
144
145 #if SERIAL_INT_EN==1
146
147 /******************************************************************************
148 * 名称:ISR_Uart_Rev()
149 * 功能:Uart接收数据中断服务程序
150 * 入口参数:无
151 * 出口参数:无
152 * 使用全局变量:unsigned char buf[]--接收缓冲区
153 * 说明:本函数由用户根据需要修改
154 ******************************************************************************/
155 void ISR_Uart_Rev(void) interrupt 4
156 {
157 1 if(TI) //发送中断
158 1 {
159 2 TI = 0;
160 2 return;
161 2 }
162 1 if(RI) //接收中断
163 1 {
164 2 RI = 0;
165 2 GM8125_Byte_Rev(SBUF); //GM8125数据接收处理子程序(供中断服务程序调用)
166 2 }
167 1 }
168
169 #endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 270 ----
CONSTANT SIZE = ---- ----
C51 COMPILER V7.50 UART51 03/09/2005 21:43:21 PAGE 4
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 15
IDATA SIZE = ---- ----
BIT SIZE = ---- 4
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 5 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -