flag是程式設計師自己起的變數名,一般情況下將其看作為標誌位。我們通常將它視為uchar型變數,將flag賦值時,有flag=!1(flag不等於1)和flag=1;它的作用主要是讓微控制器的一項功能實現不同的操作,不同的操作通常時間先後順序不等,不同的操作即透過設定flag=!1(flag不等於1)和flag=1予以區別開來。舉個例子:我們要在定時器T0中先後實現1秒和2秒的不同定時,在C語言中,我們定義好的flag變數預設為是0,我們假設先實現1秒的定時,在中斷程式中,我們先寫if(flag!=1){。。。} 後面再寫else { .........}。在不同的語句中就可以實現一個定時器T0為兩個不同的中斷服務。
具體程式如下:
void dt0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t0++;
if(flag!=1)
if(t0==10) //流水燈程式
t0=0;
temp=_crol_(temp,1);
P1=temp;
}
else //當flag等於1時執行下面的語句
if(t0%4==0)
P1=~P1;//對流水燈的電位取反
if(t0==60)//如果三秒鐘時間到
TR0=0;
P1=0;
flag1=1;
flag是程式設計師自己起的變數名,一般情況下將其看作為標誌位。我們通常將它視為uchar型變數,將flag賦值時,有flag=!1(flag不等於1)和flag=1;它的作用主要是讓微控制器的一項功能實現不同的操作,不同的操作通常時間先後順序不等,不同的操作即透過設定flag=!1(flag不等於1)和flag=1予以區別開來。舉個例子:我們要在定時器T0中先後實現1秒和2秒的不同定時,在C語言中,我們定義好的flag變數預設為是0,我們假設先實現1秒的定時,在中斷程式中,我們先寫if(flag!=1){。。。} 後面再寫else { .........}。在不同的語句中就可以實現一個定時器T0為兩個不同的中斷服務。
具體程式如下:
void dt0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t0++;
if(flag!=1)
{
if(t0==10) //流水燈程式
{
t0=0;
temp=_crol_(temp,1);
P1=temp;
}
}
else //當flag等於1時執行下面的語句
{
if(t0%4==0)
P1=~P1;//對流水燈的電位取反
if(t0==60)//如果三秒鐘時間到
{
TR0=0;
P1=0;
flag1=1;
}
}
}