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;
}
}
}