//------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