單片機(jī)控制數(shù)顯“消屏”算是的探討
CLR SIGN ;初始化清零“消屏”標(biāo)志位
LOOP0:MOV R1,#51H ;顯示字段的緩沖區(qū)由內(nèi)存51H單元開(kāi)始
MOV R2,#04H
MOV R3,#05H ;顯示數(shù)碼為5位
LOOP1:MOV DPH,#00H
MOV DPL,#50H
MOV A,@R1
MOVC A,@A+DPTR
JNB DECIMAL,LOOP2
ADD A,#02H ;小數(shù)點(diǎn)顯示處理
LOOP2:MOV P0,A
MOV A,#03H
ADD A,R2
MOV P3,A
JNB FUNCT,KSM0 ;跳至鍵解釋子程序
JNB FANNER,KSM0 ;跳至鍵解釋子程序
JNB EYRE,KSM0 ;跳至鍵解釋子程序
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)系都沒(méi)有具體闡述,因?yàn)椋鼈儾挥绊戧P(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)。“消屏”輔助循環(huán)程序中包含子延時(shí)程序。其實(shí),整個(gè)“消屏”循環(huán)便是以延時(shí)程序做主體來(lái)運(yùn)行“等待”的——等待時(shí)機(jī)(如有鍵按入或某種因素引起復(fù)位)跳出“消屏”運(yùn)行程序,并“清零”標(biāo)示位 “SIGN”,回到掃描顯示主循環(huán)中去。“消屏”輔助循環(huán)程序只是為了“消屏” ——數(shù)碼管及LED指示燈中的幾個(gè)或全部不亮,而不影響系統(tǒng)的其它功能。
評(píng)論