- 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);
- }
|