中斷學(xué)習(xí)
#include
#define GPIO_LED P2
//外部中斷的IO
sbit K3=P3^2;
sbit K4=P3^3;
void IntConfiguration();
void Delay(unsigned int n);
unsigned char KeyValue=0;
void main(void)
{
GPIO_LED=0X01;
IntConfiguration();
while(1)
{
if(KeyValue)
GPIO_LED=_crol_(GPIO_LED,1);
else
GPIO_LED=_cror_(GPIO_LED,1);
Delay(2000);
}
}
void IntConfiguration()
{
//設(shè)置INT0
IT0=1;//跳變沿出發(fā)方式(下降沿)
EX0=1;//打開INT0的中斷允許。
//設(shè)置INT1
IT1=1;
EX1=1;
EA=1;//打開總中斷
}
void Delay(unsigned int n)
{
for(;n>0;n--)
{
}
}
void Int0() interrupt 0 //外部中斷0的中斷函數(shù)
{
Delay(1);
if(K3==0) //按下P3^2鍵,觸發(fā)外部中斷0
KeyValue=1;//中斷處理程序0就會(huì)將KeyValue賦1
}
void Int1() interrupt 2 //外部中斷1的中斷函數(shù)
{
Delay(1);
if(K4==0)//當(dāng)按下P3^3,就會(huì)觸發(fā)外部中斷1
KeyValue=0; //
}
//兩個(gè)外部中斷硬件上就是與P3^3和P3^2連接的
//,比如說(shuō)按下P3^2鍵,觸發(fā)外部中斷0,中斷處理程序0就會(huì)將KeyValue賦1
//,這時(shí)主循環(huán)就會(huì)執(zhí)行GPIO_LED=_crol_(GPIO_LED,1
//);同理,當(dāng)按下P3^3,就會(huì)觸發(fā)外部中斷1
//,中斷處理程序0就會(huì)將KeyValue賦0;這時(shí)主循環(huán)就會(huì)執(zhí)行GPIO_LED=_cror_(GPIO_LED,1)。
評(píng)論