|
發(fā)布時間: 2021-6-21 17:20
正文摘要:這個程序http://m.raoushi.com/bbs/dpj-76392-1.html 求state, deteok, beep1在程序里代表什么和中斷那個程序是怎么運行的 |
|
state, deteok, beep1是用戶設(shè)定的3個bit型標志位,標志位就是對運行結(jié)果的標明。比如說你要跑五千米,跑道一圈只有400米,那我們可以聲明一個變量uchar flag,每當(dāng)你跑一圈flag就++一次,那到時候如果想知道已經(jīng)跑了幾圈只需要看flag的值就可以了。我們也可以把它用作下一段程序執(zhí)行的條件,比如說你跑到兩千米要休息一下,那就 if (flag==5){休息一下};在這的話state, deteok, beep1是bit型,所以只有0和1。 分析程序能看出beep1的值是由dateOK和state決定的:當(dāng)state=1,dateOK=1時beep1=1;dateok是當(dāng)state=1,tes-t --到0時為1;state是當(dāng)?shù)谝淮伟聪耴ey2時為1,再按取反為0,如此往復(fù)。也能看出有且只有state=0時date beep1才置0。 所以定時器0的中斷就是:第一次開機,TIME=3,state, deteok, beep1都為0,中斷內(nèi)部一直ms++,k++,ms=0,不執(zhí)行其他,主程序中一直數(shù)碼管顯示,檢測key,關(guān)beep、led,置0 dateOK、beep1。當(dāng)按下key1時,TIME(即tes-t)的值改變,其他不變。 按下key2時,state=1,此時tes-t開始每隔1秒減減,當(dāng)tes-t=0時dateOK=1,緊接著beep1=1,然后蜂鳴器以300ms的周期開始響,直到beep1=0,也就是dateok=0,也就是state=0,即再次按下key2.以后就是如此重復(fù),不過TIME的值是你上次的值不變。 外部中斷不用說了吧,當(dāng)state=1時,初始化tes-t和ms。 |
Powered by 單片機教程網(wǎng)