📄 uart.lst
字号:
C51 COMPILER V7.04 UART 11/28/2007 16:14:11 PAGE 1
C51 COMPILER V7.04, 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 /* 文件名 :UART.c
3 /* 芯片 :Atmel AT89C51
4 /* 作者 :Ericson
5 /* 日期 :2007.11.15
6 /* 功能描述:本文件为UART串行通信协议提供支持,通过AT89C51的通用UART接口
7 发送和接收上位机的命令。本软件实用于采用RS485外扩接口芯片实现
8 的半双工通信方式。
9
10 /***********************************************************************/
11
12 //***********************************************************************
13 //包含头文件
14 #include "UART.h"
15 #include "BOARD.h"
16
17 //***********************************************************************
18 //串行口波特率设定函数
19 //参数:br -- 波特率参数,其相关定义参照<UART.h>
20 void UART_SetBaudRate(uchar br)
21 {
22 1 switch(br)
23 1 {
24 2 case BAUD_RATE_300 : TH1 = 0xA0;TL1 = 0xA0;PCON &= 0x7F;break;
25 2 case BAUD_RATE_600 : TH1 = 0xD0;TL1 = 0xD0;PCON &= 0x7F;break;
26 2 case BAUD_RATE_1200 : TH1 = 0xE8;TL1 = 0xE8;PCON &= 0x7F;break;
27 2 case BAUD_RATE_2400 : TH1 = 0xF4;TL1 = 0xF4;PCON &= 0x7F;break;
28 2 case BAUD_RATE_4800 : TH1 = 0xFA;TL1 = 0xFA;PCON &= 0x7F;break;
29 2 case BAUD_RATE_9600 : TH1 = 0xFD;TL1 = 0xFD;PCON &= 0x7F;break;
30 2 case BAUD_RATE_19200 : TH1 = 0xFD;TL1 = 0xFD;PCON |= 0x80;break;
31 2 default : break;
32 2 }
33 1 }
34
35 //***********************************************************************
36 //串行口启动函数
37 //参数说明:无
38 void UART_Init(void)
39 {
40 1 uchar index;
41 1 for(index = 0;index<BUFFER_LENGTH;index++)
42 1 {
43 2 RcvBUF[index] = 0;
44 2 TrxBUF[index] = 0;
45 2 }
46 1 TMOD &= 0x0F;
47 1 TMOD |= 0x20; //Timer1工作在模式2,即8位硬件自动加载
48 1 UART_SetBaudRate(BAUD_RATE_9600);
49 1 SCON = 0x50; //UART工作在8-bit模式,使能串行口接收
50 1 ES = 1; //开启串行口中断
51 1 PS = 1; //串行口中断设为高优先级
52 1 if((TMOD&0x03) != 0x03) TR1 = 1; //如果定时器0不是工作在方式3,启动定时器1,否则不用。
53 1 UARTCTRL = 0; //默认为接收模式
54 1 }
55
C51 COMPILER V7.04 UART 11/28/2007 16:14:11 PAGE 2
56 //***********************************************************************
57 //串行口发送一个字符串函数
58 //参数说明:str -- 待发送的字符串首地址
59 // len -- 待发送的字符串长度,最大为250
60 bit UART_SendStr(uchar *str,uchar len)
61 {
62 1 uchar index;
63 1 if( len>BUFFER_LENGTH ) return(FALSE);
64 1 UARTCTRL = 1;
65 1 Delay_1ms();
66 1 ES = 0;
67 1 for(index = 0;index<len;index++)
68 1 {
69 2 SBUF = *(str+index);
70 2 while(TI == 0);
71 2 TI = 0;
72 2 }
73 1 ES = 1;
74 1 Delay_1ms();
75 1 UARTCTRL = 0;
76 1 }
77
78 //结束
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 206 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 14 4
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 + -