📄 uart.lst
字号:
161 1 SCON0&=~0x01; // 清除RI1标志位
162 1 return SBUF0;
163 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
164 1 }
165
166 /***********************************************************************************
167 * 函数名称:Uart1_Init;
168 *
169 * 函数功能描述:Uart1初始化;
170 *
171 * 输入参数:unsigned char类型,发送数据波特率;
172 *
173 * 返回数据:none;
174 *
175 * 注意: none;
176 ************************************************************************************/
177 void Uart1_Init(unsigned long BaudRate) //Uart0初始化
178 {
179 1
C51 COMPILER V7.02b UART 03/06/2006 15:01:38 PAGE 4
180 1
181 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
182 1 SFRPAGE = SFR_PAGE_0; // set SFR page 0
183 1
184 1 TR1=0; // 关闭定时器Timer1
185 1 ET1=0; // 关闭定时器Timer1中断
186 1 PT1=0; // 关闭定时器Timer1中断优先权
187 1 TMOD&= 0x0f; // TMOD: 定时器1, 模式2, 8位重载
188 1 TMOD|= 0x20; // TMOD: 定时器1, 模式2, 8位重载
189 1
190 1 if (BaudRate>=172800)
191 1 {
192 2 CKCON |= 0x10; // 定时器Timer1使用系统时钟作为时间基准
193 2 TH1 = -(SYSCLK/(BaudRate*2)); // 设置定时器Timer1重载值
194 2 }
195 1 else if ((BaudRate<172800)&&(BaudRate>=14400))
196 1 {
197 2 CKCON = 0x00; // 定时器Timer1使用系统时钟作为时间/12基准
198 2 TH1 = -(SYSCLK/(BaudRate*2*12)); // 设置定时器Timer1重载值
199 2 }
200 1 else
201 1 {
202 2
203 2 CKCON = 0x02; // 定时器Timer1使用系统时钟作为时间/48基准
204 2 TH1 = -(SYSCLK/(BaudRate*2*48)); // 设置定时器Timer1重载值
205 2 }
206 1
207 1 ES0=0; // 关闭串口Uart0中断
208 1 PS=0; // 关闭串口Uart0中断优先权
209 1 TR1=1; // 打开串口Uart1
210 1
211 1
212 1 SFRPAGE = SFR_PAGE_1;// set SFR page 1
213 1 SCON1=0x52; // SCON0:模式1, 8字节UART, 打开RX, TI1=1,RI1=0
214 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
215 1 }
216
217 /***********************************************************************************
218 * 函数名称:Uart1_Enable;
219 *
220 * 函数功能描述:Uart0初始化;
221 *
222 * 输入参数:bool类型,打开输入1;关闭输入0;
223 *
224 * 返回数据:none;
225 *
226 * 注意: none;
227 ************************************************************************************/
228
229 void Uart1_Enable(bool Flag)
230 {
231 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
232 1 SFRPAGE = SFR_PAGE_2;
233 1
234 1 if (Flag)
235 1 TMR4CN|=0x04; // 打开Uart1
236 1 else
237 1 TMR4CN&=~0x04; // 关闭Uart1
238 1
239 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
240 1 }
241
C51 COMPILER V7.02b UART 03/06/2006 15:01:38 PAGE 5
242 /***********************************************************************************
243 * 函数名称: Uart1_SendString;
244 *
245 * 函数功能描述:Uart0初始化;
246 *
247 * 输入参数:unsigned char类型指针,发送数据;
248 *
249 * 返回数据:none;
250 *
251 * 注意: none;
252 ************************************************************************************/
253
254 void Uart1_SendString(unsigned char *pt)
255 {
256 1 while(*pt)
257 1 {
258 2 Uart1_SendByte(*pt++);
259 2 }
260 1 }
261
262 /***********************************************************************************
263 * 函数名称:Uart1_SendByte;
264 *
265 * 函数功能描述:Uart0初始化;
266 *
267 * 输入参数:unsigned char类型指针,发送数据;
268 *
269 * 返回数据:none;
270 *
271 * 注意: none;
272 ************************************************************************************/
273
274 void Uart1_SendByte(unsigned char value)
275 {
276 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
277 1 SFRPAGE = SFR_PAGE_1;
278 1
279 1 while(!(TI1)); // 等待发送1个字节数据完成
280 1 SBUF1=value; // 发送数据到uart1
281 1 SCON1&=~0x02; // 清除中断标志
282 1
283 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
284 1 }
285
286 /***********************************************************************************
287 * 函数名称:Uart1_ReceiveData;
288 *
289 * 函数功能描述:Uart0初始化;
290 *
291 * 输入参数:none;
292 *
293 * 返回数据:unsigned char类型,接收数据;
294 *
295 * 注意: none;
296 ************************************************************************************/
297
298 unsigned char Uart1_ReceiveData(void)
299 {
300 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
301 1 SFRPAGE = SFR_PAGE_1;
302 1
303 1 while(!RI1);
C51 COMPILER V7.02b UART 03/06/2006 15:01:38 PAGE 6
304 1 SCON1&=~0x01; // 清除RI1标志位
305 1 return SBUF1;
306 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
307 1 }
308
309 /***********************************************************************************/
310 // 文件结束
311 /***********************************************************************************/
312
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 557 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 14
PDATA SIZE = ---- ----
DATA SIZE = ---- 8
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 + -