|
|
各位大咖:
我是小白,在學(xué)習(xí)單片機(jī)C語(yǔ)言過(guò)程中,看到有些if(表達(dá)式)中的表達(dá)式?jīng)]有賦值(如下內(nèi)容中的flag),就直接繼續(xù)寫(xiě)條件下的表達(dá)式:
以下程序內(nèi)容:
我的疑惑:下面程序中,bit flag1s = 0; //1 秒定時(shí)標(biāo)志,在main函數(shù)中,while(1)循環(huán)中, if (flag1s) //每秒執(zhí)行一次交通燈刷新,這個(gè)條件表達(dá)式直接是一個(gè)flag1s,沒(méi)有賦值,旁邊的解釋說(shuō)“每秒執(zhí)行一次交通燈刷新”,這個(gè)意思就是flag1s=1,這里不寫(xiě)這個(gè)賦值,是不是就C語(yǔ)言中就默認(rèn)是為=1呢?
單片機(jī)C語(yǔ)言源程序如下:
#include <reg52.h>
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
unsigned char code LedChar[] = { //數(shù)碼管顯示字符轉(zhuǎn)換表
0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};
unsigned char LedBuff[7] = { //數(shù)碼管+獨(dú)立 LED 顯示緩沖區(qū)
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};
bit flag1s = 0; //1 秒定時(shí)標(biāo)志
unsigned char T0RH = 0; //T0 重載值的高字節(jié)
unsigned char T0RL = 0; //T0 重載值的低字節(jié)
void ConfigTimer0(unsigned int ms);
void TrafficLight();
void main()
{
EA = 1; //開(kāi)總中斷
ENLED = 0; //使能數(shù)碼管和 LED
ADDR3 = 1;
ConfigTimer0(1); //配置 T0 定時(shí) 1ms
while (1)
{
if (flag1s) //每秒執(zhí)行一次交通燈刷新
{
flag1s = 0;
TrafficLight();
}
}
}
|
|