测试代码如下,(包括串口初始化、串口数据的收发) - //uart.c 代码
- #include "bsp/uart.h"
- bit UartSendFlag = 0; //发送中断标志位
- bit UartReceiveFlag = 0; //接收中断标志位
- /*****************************************************
- *函数名称:void Uart_Init(uint Freq,unsigned long int baud)
- *函数功能:Uart中断初始化,选择Timer1作为波特率信号发生器
- *入口参数:Freq-主频,baud-波特率
- *出口参数:void
- *****************************************************/
- void Uart_Init(unsigned int Freq,unsigned long int baud)
- {
- P2CON &= 0xFC; //TX/RX设置为输入带上拉
- P2PH |= 0x03;
-
- SCON |= 0X50; //设置通信方式为模式一,允许接收
- TMCON |= 0X02;
- TH1 = (Freq*1000000/baud)>>8; //波特率为T1的溢出时间;
- TL1 = Freq*1000000/baud;
- TR1 = 0;
- ET1 = 0;
- EUART = 1; //开启Uart中断
- EA = 1;
- }
- /*****************************************************
- *函数名称:Uart_Send_Byte(unsigned char byte)
- *函数功能:串口发送一个字节函数
- *入口参数:unsigned char byte
- *出口参数:void
- *****************************************************/
- void Uart_Send_Byte(unsigned char byte)
- {
-
- SBUF = byte;
- while(!UartSendFlag);
- UartSendFlag = 0;
- }
- /*****************************************************
- *函数名称:void Uart_Send_String(unsigned char *str)
- *函数功能:串口发送字符串函数
- *入口参数:unsigned char *str
- *出口参数:void
- *****************************************************/
- void Uart_Send_String(unsigned char *str)
- {
- while(*str)
- {
- Uart_Send_Byte(*str);
- str++;
- }
- }
- /*****************************************************
- *函数名称:void Uart_Recv_Date()
- *函数功能:串口接收数据处理函数
- *入口参数:void
- *出口参数:void
- *****************************************************/
- void Uart_Recv_Date()
- {
- unsigned char Byte;
- if(UartReceiveFlag == 1)
- {
- UartReceiveFlag = 0;
- Byte = SBUF;
- Uart_Send_Byte(Byte);
- }
- }
- /*****************************************************
- *函数名称:void UartInt(void) interrupt 4
- *函数功能:Uart中断函数
- *入口参数:void
- *出口参数:void
- *****************************************************/
- void UartInt(void) interrupt 4
- {
- if(TI)
- {
- TI = 0;
- UartSendFlag = 1;
- }
- if(RI)
- {
- RI = 0;
- UartReceiveFlag = 1;
- }
- }
|