專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

PIC16F877異步串口中斷探析

作者:佚名   來源:不詳   點(diǎn)擊數(shù):  更新時(shí)間:2014年08月31日   【字體:

 PIC16F877單片機(jī)的異步串口中斷程序:

 
#include<pic.h>
#define uchar unsigned char
#define uint  unsigned int
__CONFIG(0x3B31);
void init();
void main()
{
 init();
// TXREG=0x31;  //發(fā)送
 while(!TRMT); //發(fā)送結(jié)束退出
 while(1);
}
void init()
{
 TRISD = 0;
 PORTD = 0;
 TRISC = 0x80;  //RX方向必須為輸出.或者:TRISC|= 0xC0;
 TXSTA=0x24;  //發(fā)送狀態(tài)寄存器:使能發(fā)送,高速(高速與低速波特率差4倍,即9600與2400)
 RCSTA=0x90;  //接收狀態(tài)寄存器:使能串行端口,使能接收
 SPBRG=25;  //波特率為9600
 GIE=1;   //使能全局中斷
 PEIE=1;   //使能外設(shè)中斷
 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);//這一句不能少,否則收不到
 }
}
 
關(guān)閉窗口