JNB 72H,LOOP3
ANL 2EH,#0BH
CLR 72H
LOOP3:JB SIGH,LOOP20;若標(biāo)志位為“1”則跳之“消屏”循環(huán)
LOOP4:LCALL YSCX ;調(diào)用循環(huán)顯示延時(shí)子程序
CLR DECIMAL
LOOP5:MOV A,R2
RL A
MOV R2,A
JB 55H ,LOOP7
LOOP6:CJNE A,#10H,LOOP7
SETB DECIMAL
LOOP7:INC R1
MOV P1,2AH ;內(nèi)存2A記錄值賦予P1口
MOV P2,2BH ;內(nèi)存2BH記錄值賦予P2口
DJNZ R3,LOOP1
LJMP LOOP0
主循環(huán)顯示程序是一個(gè)掃描式顯示的主循環(huán)。假若程序運(yùn)行到倒數(shù)第十四條“JB SIGN,LOOP20”指令、且標(biāo)志位“SIGN”(即“2FH”)已被置為邏輯“1”時(shí),程序?qū)⑻鰭呙栾@示主循環(huán),而進(jìn)入“消屏”循環(huán)運(yùn)行。其中,內(nèi)存寄存器2AH、2BH是可位尋址操作的——分別對(duì)應(yīng)于端口P1、P2的內(nèi)存字節(jié)單元,它們的數(shù)據(jù)由具體運(yùn)算監(jiān)控程序賦予。另外,掃描顯示主循環(huán)程序中所牽涉到的諸如“跳至鍵解釋子程序”中的“鍵解釋子程序”、“調(diào)用循環(huán)顯示延時(shí)子程序”中的“循環(huán)顯示延時(shí)子程序”,以及下文中的溫度信息采訪監(jiān)控程序等,由于篇幅的關(guān)系都沒有具體闡述,因?yàn)?它們不影響關(guān)于“消屏”的討論。
3.2 “消屏”輔助循環(huán)程序
LOOP20:INB SIGN,LOOP23
MOV P1,#0FBH
MOV P3,#03H
ORL 0D0H,#18H
MOV R5,#25H
LOOP21:MOV R6,#2AH
LOOP22:DJNZ R6,LOOP22
DJNZ R5,LOOP21
ANL 0D0H,#0E7H
MOV P0,#00H ;保證顯示輸出為“0” ——“消屏”
ANL P1,#0E7H ;而監(jiān)控通信端口仍正常工作
MOV P3,#03H
JNB FUNCT,LOOP23
JNB FANNER,LOOP23
JNB EYRE,LOOP23
LJMP LOOP20
LOOP23:MOV P1,2AH ;記錄內(nèi)容賦值給相應(yīng)端口
MOV P2,2BH
CLR SIGN
LJMP LOOP1
在“消屏”循環(huán)程序運(yùn)行中,當(dāng)其倒數(shù)第6、第7、第8條指令中任一條指令的條件轉(zhuǎn)換成立,即有任一按鍵按下時(shí),程序便退出“消屏”循環(huán),回到主循環(huán)運(yùn)行,進(jìn)而由鍵解釋子程序?qū)υ摪存I作出解釋響應(yīng)!跋痢陛o助循環(huán)程序中包含子延時(shí)程序。其實(shí),整個(gè)“消屏”循環(huán)便是以延時(shí)程序做主體來運(yùn)行“等待”的——等待時(shí)機(jī)(如有鍵按入或某種因素引起復(fù)位)跳出“消屏”運(yùn)行程序,并“清零”標(biāo)示位“SIGN”,回到掃描顯示主循環(huán)中去!跋痢陛o助循環(huán)程序只是為了“消屏” ——數(shù)碼管及LED指示燈中的幾個(gè)或全部不亮,而不影響系統(tǒng)的其它功能。
3.3 時(shí)鐘程序
T0ZD: PUSH ACC ;時(shí)鐘程序
MOV TL0,#0B4H
MOV TH0,#3CH
INC 45H
MOV A,45H
CJNE A,#0AH,FW0
INC 46H ;秒計(jì)數(shù)
INC 40H ;40H為2s間隔輔助內(nèi)存單元
MOV 45H,#00H
MOV A,40H
CJNE A,#02H,T0ZD1
MOV 40H,#00H
LCALL VISIT ;調(diào)用采用溫度信息子程序
T0ZD1:MOV A,46H
CJNE A,#3CH,FW0
INC 47H ;分計(jì)數(shù)
MOV 46H,#00H
MOV A,47H
CJNE A,#3CH,FW0
INC 48H ;時(shí)計(jì)數(shù)
MOV 47H,#00H
MOV A,48H
CJNE A,#02H,FW0
MOV 48H,#00H
SETB SIGN ;“消屏”標(biāo)志位置“1”
FW0:POP ACC
RETI
時(shí)鐘程序其實(shí)是片內(nèi)定時(shí)/計(jì)數(shù)器0的中斷服務(wù)程序。這段程序給出的是開機(jī)或最后一次按鍵后2個(gè)小時(shí)“消屏”標(biāo)志位“SIGN”置“1”,即系統(tǒng)將進(jìn)入“消屏”運(yùn)行狀態(tài),直到有鍵按下或某種因素引起復(fù)位時(shí)才“喚醒”回到掃描顯示主循環(huán)。當(dāng)然,可根據(jù)具體的需要將時(shí)間設(shè)置成幾秒鐘、幾分鐘、幾十小時(shí)甚至幾天后才把“消屏”標(biāo)志位“SIGN”置為邏輯“1”,使系統(tǒng)進(jìn)入“消屏”運(yùn)行狀態(tài)。中斷服務(wù)程序的另一個(gè)重要功能就是定期汲取并處理信息。以上中斷服務(wù)程序是每間隔2s采訪一次溫度信息和端口監(jiān)控狀況用以運(yùn)算分析,以便及時(shí)對(duì)系統(tǒng)作出相應(yīng)的控制。
結(jié)束語
單片機(jī)控制數(shù)顯的“消屏”處理,類似于微電腦PC機(jī)的“靜屏”功能。從某種意義上講是延長了系統(tǒng)中部分元器件的使用壽命,而不影響單片機(jī)控制系統(tǒng)其它功能。這種貓頭鷹頭“睜一只眼,閉一只眼”的工作方式對(duì)那些“沒日沒夜、長年累月”運(yùn)行著的儀器設(shè)備來說是不無裨益的。再者,由多個(gè)單片機(jī)組合的控制系統(tǒng)運(yùn)用類似工作方式,在不影響系統(tǒng)監(jiān)控功能的前提下,此“休眠”彼“工作”互為調(diào)協(xié),互相應(yīng)和,或許是一著延長元器件使用壽命的好舉措。





