请教:进入中断后主程序仍然运行

来源:百度知道 编辑:UC知道 时间:2024/06/05 15:02:00
主程序是使数码管从0到f循环显示,外部中断1程序是使P1.0的LED亮,P3.2用杜邦线接地后P1.0的灯亮了,但是数码管还是在继续循环,只是比没中断前数字的变化时间长了很多,拔掉杜邦线,P1.0熄灭,没想明白为什么主程序还是在运行

#include<reg52.h>
void delay(unsigned int);
#define uint unsigned int
#define uchar unsigned char
uchar num;
sbit d1=P1^0;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,
0xa1,0x84,0x8e,0x7f};
void main()
{
EA=1;
EX0=1;
IT0=0;

P2=0x0;//数码管位选
while(1)
{
for(num=0;num<16;num++)
{
d1=1;
P0=table[num];//段选
delay(50000);

}
}

}

void delay(unsigned int x)
{
while(x--);

}

void exter0() interrupt 0
{
d1=0;
}

只是比没中断前数字的变化时间长了很多,是因为要执行中断占用了时间

单片机执行中断程序后,会回到主程序继续执行,如果还有中断触发则在进入中断程序,如此循环。主程序当然是在运行了。

不明白可以去看看书关于中断的那章,说的明白的

其实我不是很明白你的意思 ^-^

当它进入中断后,就只能执行中断里面的程序,执行完后,马上回到主程序继续执行刚才的程序,等下次中断来了后又进入中断,如此循环。其实单片机一次也只能做一件事,只是时间很短,我们感觉不到而已,就好比我们在浏览网页的时候还可以聊QQ一样。我也是新手,大家相互学习!