下面的51單片機程序中,外部中觸發后,延時一段時間之后(delayms(50)),讓標志位flag=0;這個時候為什么單片機還在處于中斷當中呀????
按理來說,標志位為0,此時if(flag==1)的程序應該不執行呀,但是,操作中是在繼續執行。
請問各位大神,這是什么原因。
下面為代碼:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit D1 = P1^0;
sbit D2 = P1^1;
sbit FM = P2^3;
uint flag = 0;
uint count = 0;
void delayms(uint xms) //延時函數
{
uint i,j;
for(i=xms;i--;i>0)
for(j=110;j--;j>0);
}
void main()
{
/********關閉電磁閥**********/
D1 = 0;
/********關閉指示燈**********/
D2 = 1;
/********外部中斷觸發********/
EA = 1;
EX0 = 1;
IT0 = 0;// 中斷為低電平觸發
while(1)
{
if(flag==1)
{
D1=1;
D2=0;
delayms(50);
flag=0;
}
}
}
/********中斷函數***********/
void time_0() interrupt 0 //中斷函數0
{
flag = 1;
}
|