/*******************************
PORTB的RB0可以作為一個外部中斷信號輸入,可以對輸入信號的上升沿或下降沿跳變產(chǎn)生一個中斷響應(yīng)。
要實現(xiàn)RB0/INT中斷源,軟件初始化設(shè)定步驟如下:
1,RB0/INT引腳為輸入模式,TRISB0 = 1;
2,INTEDG = 1,RB0上輸入信號上升沿產(chǎn)生中斷;INTEDG = 0,下降沿中斷
3,清除INTF = 0,確識有效中斷發(fā)生前中斷標志為0;
4,INTE = 1,允許RB0/INT中斷響應(yīng)。
5,GIE = 1,打開總中斷使能
6,中斷發(fā)生后,查詢INTF位;
7,若INTF = 1,有中斷,處理完畢后,軟件必須清除INTF中斷標志位。
********************************/
#include
#include "../head/config.h"
__CONFIG(HS&WDTDIS&LVPDIS&PWRTEN);
//HS振蕩,禁止看門狗,低壓編程關(guān)閉,啟動延時定時器
void delay1ms(uint DelayTime);
void main(void)
{
TRISB = 0x01;
INTEDG = 0;
INTF = 0;
INTE = 1;
GIE = 1;
PORTD = 0xff;
TRISD = 0x00;
while(1){}
}
void interrupt ISR(void)
{
if(INTF == 1)
{
INTF = 0;
delay1ms(20);
if(RB0 == 0)
{
PORTD = ~PORTD;
}
}
}
void delay1ms(uint DelayTime)
{ uint temp;
for(;DelayTime>0;DelayTime--)
{ for(temp=0;temp<270;temp++)
{;}
}
}