各位大咖:
我是小白,在學習單片機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();
}
}
}
|