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