PIC16F877单片机的异步串口中断程序:
#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x3B31);
void init();
void main()
{
init();
// TXREG=0x31; //发送
while(!TRMT); //发送结束退出
while(1);
}
void init()
{
TRISD = 0;
PORTD = 0;
TRISC = 0x80; //RX方向必须为输出.或者:TRISC|= 0xC0;
TXSTA=0x24; //发送状态寄存器:使能发送,高速(高速与低速波特率差4倍,即9600与2400)
RCSTA=0x90; //接收状态寄存器:使能串行端口,使能接收
SPBRG=25; //波特率为9600
GIE=1; //使能全局中断
PEIE=1; //使能外设中断
RCIE=1; //使能串口中断
}
void interrupt com()
{
if(RCIE&&RCIF)
{
// TXREG=RCREG;
if(RCREG == 0x01) {PORTD = 0xff; TXREG = 0x11;}
if(RCREG == 0x02) {PORTD = 0x55;TXREG = 0xFF;}
while(!TRMT);//这一句不能少,否则收不到
}
}