为什么单片机在中断中时原程序还在运行?

来源:百度知道 编辑:UC知道 时间:2024/06/17 17:55:59
程序如下#include<reg52.h>
sbit p0_0=P0^0;
sbit p0_1=P0^1;
sbit p0_2=P0^2;
sbit p0_3=P0^3;
sbit p0_4=P0^4;
sbit p0_5=P0^5;
sbit p0_6=P0^6;
sbit p0_7=P0^7;
sbit p2_1=P2^1;
#define uint unsigned int
#define uchar unsigned char
void delay(uint);
void main()
{ EA=1;//开总中断
EX0=1;//开外部中断0
while(1)
{
p2_1=1;//关蜂鸣器

p0_0=~p0_0;delay(5);
p0_1=~p0_1;delay(5);
p0_2=~p0_2;delay(5);
p0_3=~p0_3;delay(5);
p0_4=~p0_4;delay(5);
p0_5=~p0_5;delay(5);
p0_6=~p0_6;delay(5);
p0_7=~p0_7;delay(5);
}

}
void delay(uint z) //延时程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=10000;y>0;y--);
}
void zhongduan() interrupt 0 //中断程序蜂启动鸣器
{
p2_1=0;

}

中断服务程序运行完返回原程序中断地址,你的中断void zhongduan() interrupt 0 //中断程序蜂启动鸣器 {p2_1=0;}仅此一条,过程太快观察不到,中断完成后就返回去了。