51单片机中断系统,一开始8个led闪烁循环,按键以后,变为流水循环,再按一次回到闪烁循环,我的程序只会到流水,回不去闪烁。这是我的程序include <reg51.h> void mDelay(unsigned int Delay) //延时1s子程序:由Dleay决定延时时间
{ unsigned int data i;
for(;Delay>0;Delay--) {
for(i=0;i<54;i++) ; }}
void main(){ IT0=1; //外部0中断边沿触发
EA=1; //开总中断
EX0=1; //开外部0中断
while(1)
{ P1=0x00; //LED点亮
mDelay(1000); //延时1s
P1=0xff; //LED熄灭
mDelay(1000); //延时1s
}}void ex0_int() interrupt 0 //外部0中断处理子程序
{ if(P3^2==0)
{ unsigned char outdata=0xfe,i ; //初始选择最右边LED
for(;;) {
IE0=0 ;
outdata=0xfe;
for( i=0;i<8;i++ )
{ P1= outdata ; // LED选择码送P1口显示
mDelay (500); //延时500ms
outdata = (outdata << 1)+1 ; //值左移一位
} }
}
else return;}
|