|
你的程序main()初始化后進(jìn)入死循環(huán)while(1); 因?yàn)閣hile(1)內(nèi)沒(méi)有具體內(nèi)容可執(zhí)行,在沒(méi)有發(fā)生中斷時(shí)程序永遠(yuǎn)停留在while(1);等待中斷。當(dāng)中斷發(fā)生時(shí)執(zhí)行中斷程序,完成后回到while(1);繼續(xù)等待中斷,只是你感覺(jué)不到。如果你想看到中斷完成后返回主程序,可以改成這樣:
#include "reg52.h"
unsigned char a;
typedef unsigned int u16;
typedef unsigned char u8;
sbit led1=P0^0;
sbit led2=P1^0;
bit b=0;
void delay(u16 i)
{
while(i--);
}
void Int0Init()
{
IT0=1;//跳變沿出發(fā)方式(下降沿)
EX0=1;//打開(kāi)INT0的中斷允許。
EA=1;//打開(kāi)總中斷
}
void main()
{
led2=0;
led1=0;
for(a=0;a<4;a++)
{
led1=1;
delay(60000);
led1=0;
delay(60000);
}
Int0Init(); //設(shè)置外部中斷0
while(1)//;
{
if(b==1)
{
EA=0;//關(guān)閉總中斷
b=0;
for(a=0;a<4;a++)
{
led2=1;
delay(60000);
led2=0;
delay(60000);
}
EA=1;//打開(kāi)總中斷
}
}
}
void Int0() interrupt 0
{
b=1;
}
|
|