测试代码如下,(包括串口初始化、串口数据的收发) //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;
}
}
|