这是我的一个设计图:下载就可以可看到。
这是实验的要求:按下K1(P3.2)左右4个LED交替闪烁,按下K2(P3.3),LED闪亮。
但是我一旦按K1以后,无论K2是否断开,led一直左右交替闪烁!无法再次让led再次全部闪烁,即程序一直在执行外部中断1。
我想设计一个嵌套中断实验,当k2按下时能让led再次全部闪烁,但是尝试几番均失败,想请教一下高手们!
这是源代码:#include<reg51.h>
void delay()
{
unsigned int i,j;
for(i=0;i<1000;i++)
for(j=0;j<125;j++);
}
void main()
{
unsigned char a;
//使用花样数据使灯闪烁的方式
unsigned char design[9]={0XFF,0XFE,0XFD,0XF7,0XEF,0XDF,0XBF,0X7F} ;
//P1=0XFF;
for(;;)
{ //P1=0XFF;
for(a=0;a<9;a++)
{
delay();
P1=design[a];
}
EA=1; //开放总中断
EX0=1; //允许外部中断0中断
EX1=1; //允许外部中断1中断
IT0=0; //设置外部中断0为沿边中断方式
IT1=0; //设置外部中断1为沿边中断方式
IP=1; //设置中断优先级
}
}
//以下是外部中断0中断服务子程序
void int0_int(void) interrupt 0
{
for(;;)
{
P1=0XF0;
delay();
P1=0X0F;
delay();
}
} 1
void int1_int() interrupt 2
{
for(;;)
{
P1=0xff;
delay();
P1=0;
delay();
}
} |