单片机中定义flag有啥作用flag=1和flag=0都是什么意思

2024-11-22 18:27:55
推荐回答(5个)
回答(1):

这是复合运算符,~flag把变量flag的值取反,=则把flag取反后的值再赋值给flag。1(flag不等于1)和flag=1;它的作用主要是让单片机的一项功能实现不同的1(flag不等于1)和flag=1予以区别开来。

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

辅助进位标志AF

在发生下列情况时,辅助进位标志AF的值被置为1,否则其值为0:

(1)在字操作时,发生低字节向高字节进位或借位时;

(2)在字节操作时,发生低4位向高4位进位或借位时。

奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。利用PF可进行奇偶校验检查,或产生奇偶校验位。在数据传送过程中,为了提供传送的可靠性,如果采用奇偶校验的方法,就可使用该标志位。

以上内容参考:百度百科-FLAG

回答(2):

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

回答(3):

flag是用来做标志的,程序运行的过程中flag会产生变化,flag=1就是使flag为1,然后程序中检测flag的值,如果为1,则表示没有变化,如果为0,则表示变化了,以此来判断程序的执行情况.

回答(4):

从你的描述中看来,这里的flag是程序作者定义的一个位变量,flag字面上是标志的意思,所以作者就是将它作为一个标志,标志某种状态,用来控制程序的流向,实现控制对象的有效运动方向或收发数据的成功与否等。比如:
void uart() interrupt 4
{
if(RI)
{
RI=0;

temp=SBUF;

flag=1; //串口接受到数据,标志置1

}

}

回答(5):

flag是编写程序的人,自己起的变量名。
flag=1和flag=0所代表的意思,只有编程者自己知道,别人,只能根据程序来猜测而已。
如果楼主在这里显示出程序,大家也许猜测出flag=1和flag=0所代表的意思。