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);//這一句不能少,否則收不到
}
}