|
下面的51單片機(jī)程序中,外部中觸發(fā)后,延時(shí)一段時(shí)間之后(delayms(50)),讓標(biāo)志位flag=0;這個(gè)時(shí)候?yàn)槭裁磫纹瑱C(jī)還在處于中斷當(dāng)中呀????
按理來(lái)說(shuō),標(biāo)志位為0,此時(shí)if(flag==1)的程序應(yīng)該不執(zhí)行呀,但是,操作中是在繼續(xù)執(zhí)行。
請(qǐng)問(wèn)各位大神,這是什么原因。
下面為代碼:
#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) //延時(shí)函數(shù)
{
uint i,j;
for(i=xms;i--;i>0)
for(j=110;j--;j>0);
}
void main()
{
/********關(guān)閉電磁閥**********/
D1 = 0;
/********關(guān)閉指示燈**********/
D2 = 1;
/********外部中斷觸發(fā)********/
EA = 1;
EX0 = 1;
IT0 = 0;// 中斷為低電平觸發(fā)
while(1)
{
if(flag==1)
{
D1=1;
D2=0;
delayms(50);
flag=0;
}
}
}
/********中斷函數(shù)***********/
void time_0() interrupt 0 //中斷函數(shù)0
{
flag = 1;
}
|
評(píng)分
-
查看全部評(píng)分
|