//------Fcpu=32M时滤特率设置------------
#define UART_RATE_1200 (uint16)6661
#define UART_RATE_2400 (uint16)3331
#define UART_RATE_4800 (uint16)1666
#define UART_RATE_9600 (uint16)833
#define UART_RATE_19200 (uint16)417
//*************************************
// 函数名称:Init_Uart
// 函数功能:串口初始化
// 入口参数:
// 出口参数:
// 波特率公式: Fosc/[4(n+1)]
//***************************************
void Init_Uart(uint16 Tcon)
{
SPBRGH = (Tcon>>8); //设置波特率
SPBRGL = (Tcon & 0XFF);
TXSTA = 0X04; //使能串口发送,选择高速波特率
RCSTA = 0X80; //使能串口工作,连续接收使能接收器
BAUDCON = (1<<3) ; //16位波特率发生器
TXEN = 1 ;//使能发送
// RX9 = 1 ;//第九位接收使能
CREN = 1 ;//使能接收
RCIE = 1; //使能接收中断
}
//*************************************
// 函数名称:UartSendByte
// 函数功能:串口发送一字节数据
// 入口参数:要发送的数据
// 出口参数:无
// 返 回 值:无
//***************************************
void Uart1SendByte(uint8 Byte)
{
while(!TRMT);//发送数据寄存器为满时 等待
TXREG = Byte ;
}
//*************************************
// 函数名称:UartSendByte
// 函数功能:串口发送一串数据
// 入口参数:要发送的数据
// 出口参数:无
// 返 回 值:无
//***************************************
void Uart1SendString(uint8 *a ,uint8 DatLong)
{
uint8 i = 0 ;
for(i=DatLong;i>0;i--,a++)
{
while(!TRMT);//发送数据寄存器为非空 等待
TXREG = *a ;
}
}
//----应用实例----
//串口初始化
Init_Uart(UART_RATE_1200) ; //初始化UART波特率1200