|
程序如下:
#include "EUSART.h"
#include "Delay.h"
void Eusart_Init()
{
/*端口配置*/
RXDTSEL = 1; //置1則RC5上具有 RX/DT 功能
TXCKSEL = 1; //置1則RC4上具有 TX/CK 功能
/*將TX和RX端口配置為輸入模式(輸出模式的串口會顯示亂碼)*/
TRISC5 = 1; //RC4 RX 接收(輸入)數(shù)據(jù)
TRISC4 = 1; //RC5 TX 輸入數(shù)據(jù)
ANSELC = 0; //RC全數(shù)字
/*波特率配置*/
SYNC = 0; //置0為異步模式
BRG16 = 1; //置1為16位波特率發(fā)生器位,置0為8位波特率發(fā)生器位
BRGH = 1; //異步模式高速狀態(tài)
/*Baud rate 115200*/
SPBRGH = 0x00;
SPBRGL = 0x44;
/*串口發(fā)送和接受配置*/
//配置串口發(fā)送
TXEN = 1; //使能發(fā)送
SCKP = 0; //置0為將同相數(shù)據(jù)發(fā)送到 TX/CK 引腳
TX9 = 0; //8位數(shù)據(jù)發(fā)送
//配置串口接收
SPEN = 1; //使能串口(將 RX/DT 和 TX/CK 引腳配置為串口引腳)
RX9 = 0;
CREN = 1; //使能接收器
//配置接受中斷
GIE = 1;
PEIE = 1;
RCIE = 1;
}
void Eusart_TXByte(uchar Data)
{
TXREG = Data;
while(!TRMT);
}
void Eusart_TXBuffer(uchar *str)
{
while(*str != '\0')
{
Eusart_TXByte(*str);
str++;
}
}
void interrupt ISR()
{
if(RCIE && RCIF)
{
TXREG = RCREG;
while(!TRMT);
}
}
|
|