void SerialInti() // 初始化串口
{
TRISG2 = 1; // RG2 为 RX 输入
TRISG1 = 0; // RG1 为 TX 输出
TXSTA2 = 0x24; // 设置 TXEN=1(使能发送),BRGH=1(高速模式)
RCSTA2 = 0x90; // 使能串口,允许接收
SPBRG2 = 12; // 8MHz 时钟下波特率 9600
GIE = 1; // 总中断使能
PEIE = 1; // 允许外设中断
RC2IE = 1; // 允许串口接收中断
}
void __interrupt() com()
{
if (RC2IE && RC2IF) // 串口接收中断
{
char received_data = RCREG2; // 读取数据,清除 RC2IF
TXREG2 = received_data; // 直接回显
while (!TRMT2); // 等待发送完成
}
}
void main()
{
SerialInti();
while (1);
}
|