想要启动外部中断后流水灯全部熄灭。但是这个程序每次都只是按下之后的那一秒钟流水灯停下了,然后又马上进行流水灯。
#include <STC15F2K60S2.H>
#include <intrins.h>
sbit LED1 = P2^7;
sbit LED2 = P4^7;
sbit LED3 = P1^7;
sbit LED4 = P1^6;
sbit LED5 = P4^6;
void EXO_Init(void);
void Delay1000ms()//@12.000MHz
{
unsigned char i, j, k;
nop();
nop();
i = 46;
j = 153;
k = 245;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
EXO_Init();
while(1)
{
LED1=0;
Delay1000ms();
LED1=1;
Delay1000ms();
LED2=0;
Delay1000ms();
LED2=1;
Delay1000ms();
LED3=0;
Delay1000ms();
LED3=1;
Delay1000ms();
LED4=0;
Delay1000ms();
LED4=1;
Delay1000ms();
LED5=0;
Delay1000ms();
LED5=1;
Delay1000ms();
}
}
void EXO_Init(void)
{
IT0=1;
EX0=1;
EA=1;
}
void EX0_ISR(void)interrupt 0
{
LED1=LED2=LED3=LED4=LED5=1;
}
按下之后进入中断,中断函数是关闭流水灯,执行之后会再次进入主函数中上次外部中断的点,继续执行主函数指令,应该是这样