各位大咖:
我是小白,在学习单片机C语言过程中,看到有些if(表达式)中的表达式没有赋值(如下内容中的flag),就直接继续写条件下的表达式:
以下程序内容:
我的疑惑:下面程序中,bit flag1s = 0; //1 秒定时标志,在main函数中,while(1)循环中, if (flag1s) //每秒执行一次交通灯刷新,这个条件表达式直接是一个flag1s,没有赋值,旁边的解释说“每秒执行一次交通灯刷新”,这个意思就是flag1s=1,这里不写这个赋值,是不是就C语言中就默认是为=1呢?
单片机C语言源程序如下:
#include <reg52.h>
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
unsigned char code LedChar[] = { //数码管显示字符转换表
0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};
unsigned char LedBuff[7] = { //数码管+独立 LED 显示缓冲区
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};
bit flag1s = 0; //1 秒定时标志
unsigned char T0RH = 0; //T0 重载值的高字节
unsigned char T0RL = 0; //T0 重载值的低字节
void ConfigTimer0(unsigned int ms);
void TrafficLight();
void main()
{
EA = 1; //开总中断
ENLED = 0; //使能数码管和 LED
ADDR3 = 1;
ConfigTimer0(1); //配置 T0 定时 1ms
while (1)
{
if (flag1s) //每秒执行一次交通灯刷新
{
flag1s = 0;
TrafficLight();
}
}
}
|