level 1
fyc4480
楼主
下面51单片机中断程序,没中断前,正常循环依次显示0到7数字(8个数码管),进入中断后,显示1与3跳变,
直到退出中断(按键),现在程序进入中断后,没有在1与3跳变,而是停在中断里,一直显示1,感觉没有执行delay(100)后面的代码。知道的帮忙分析一下
#include<reg51.h>
sbit key=P1^0;
sbit p14=P1^4;
char code shu[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
char code wei[8]={0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0} ;
void delay(int);
void disp();
main()
{
int i;
p14=0;
IE=0x81;
IT0=1;
while(1)
{
for(i=0;i<8;i++)
{
P2=wei[i];
P0=shu[i];
delay(100);
}
}
}
void intp(void) interrupt 0
{
while(key!=0)
{
P2=0xf6;//数字1
P0=0x06; //第2个数码管
delay(100); //停1秒
P0=0x4f;//数字3
P2=0xf4;//第4个数码管
}
}
void delay(int x)
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<500;j++)
;
}
2018年11月04日 15点11分
1
直到退出中断(按键),现在程序进入中断后,没有在1与3跳变,而是停在中断里,一直显示1,感觉没有执行delay(100)后面的代码。知道的帮忙分析一下
#include<reg51.h>
sbit key=P1^0;
sbit p14=P1^4;
char code shu[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
char code wei[8]={0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0} ;
void delay(int);
void disp();
main()
{
int i;
p14=0;
IE=0x81;
IT0=1;
while(1)
{
for(i=0;i<8;i++)
{
P2=wei[i];
P0=shu[i];
delay(100);
}
}
}
void intp(void) interrupt 0
{
while(key!=0)
{
P2=0xf6;//数字1
P0=0x06; //第2个数码管
delay(100); //停1秒
P0=0x4f;//数字3
P2=0xf4;//第4个数码管
}
}
void delay(int x)
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<500;j++)
;
}