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

问题描述:

单片机中定义flag有啥作用flag=1和flag=0都是什么意思
void bubble_sort(int array[],int n)
{ int i,j,flag,temp;
for(i = 0; i {
flag = 1;
for(j = 0; j {
if(array[j] > array[j+1])
{
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
flag = 0; } }
if(flag == 1) break;
printf("%d ",i); } return; }

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