l
這是一個常用程序段—子程序—標準程序,通過端口掃描而獲得輸入數(shù)據(jù)或控制輸出數(shù)據(jù),達到節(jié)省位或字節(jié)的目的—節(jié)約硬件資源。
關(guān)于掃描,可以從位及其取反實現(xiàn)流水燈著手來理解?梢酝ㄟ^移位實現(xiàn)流水燈—掃描?梢酝ㄟ^字節(jié)數(shù)據(jù)(01H,02H,04H,08H,10H,20H,40H,80H—陽極管)的端口發(fā)送實現(xiàn)流水燈—掃描?梢酝ㄟ^數(shù)據(jù)表(DB 01H,02H,04H,08H,10H,20H,40H,80H—陰極管)實現(xiàn)流水燈—掃描?梢酝ㄟ^循環(huán)跳轉(zhuǎn)實現(xiàn)流水燈—掃描。掃描注意入比出查—獲得輸入要比較數(shù)據(jù)、發(fā)送輸出要檢查出口
掃描獲取端口字節(jié)
掃描輸出位移動產(chǎn)生動態(tài)效果(01、02、04、08、10、20、40、80),可以用字節(jié)表
掃描輸出字符字節(jié),通過延時可以變換字符以便造成數(shù)字進位效果
ORG 0000H
START:
dbuf equ 30h ;置存儲區(qū)首址
temp equ 40h ;置緩沖區(qū)首址
dp00: mov a,@r0 ;取要顯示的數(shù)據(jù)
disp0: mov r0,#temp ;顯示子程序
dp01: mov a,@r0
segtab: db 0C0H,0F9H,0A4H,0B0H,99H,92H ;共陽極管
delay: mov r4,#29h ;延時子程序
aa1: mov r5,0ffh
aa: djnz r5,aa
???????????????????????
************************************************************************
還可以用其他程序形式進行掃描,像循環(huán)、遞增或遞減判斷程序等。掃描技術(shù)可以用于點陣顯示,液晶板(LCD)顯示。這些都需要字符編碼、顯示延時、掃描端口以充分利用資源(節(jié)約資源)。
l 實例1—關(guān)于動態(tài)顯示—LED閃爍
ORG 0000H
RET
GUAN :
其他方法(如:延時子程序)也可以實現(xiàn)動態(tài)顯示。
ORG 0000H ;這是偽指令,機器并不執(zhí)行,用于程序的交流。指令執(zhí)行的起始地址,十進制用D表示,十六進制用H表示,二進制用B表示。一個字節(jié)(8位機、16位機、32位機、64位機)一次執(zhí)行。也可以按位來執(zhí)行,也就是一個bit。
ORG 00000000B與ORG 0000H作用相同。注意8位(bit)一個字節(jié)。16位的處理器需要用0000 0000H 表示。16或32位以上,使用操作系統(tǒng)(Wince、Linux等)更有效,可以利用大量的、底層的、專業(yè)化、標準化的面向控制的庫函數(shù)(如:API等)。
START: ;這是偽指令,機器并不執(zhí)行。只是為了匯編語言講故事的可理解性
PC→MOV P1,A ;將累加器中的數(shù)(常數(shù)0D)傳送給端口P1(P1口8位全部置0,低電平, P1端口各位處于關(guān)閉狀態(tài),LED燈處于系統(tǒng)響應的準備狀態(tài)),按字節(jié)傳送數(shù)據(jù)。特別記憶:PC→表示指針所指地址,并會自動加1。
PC→MOV C,0A0H ;檢測P2.0口的狀態(tài),將P2.0口的狀態(tài)(由按鍵狀態(tài)決定)傳送給位累加器C,位累加器C的地址是PSW(程序狀態(tài)字寄存器)的進位標志位CY(D7H\PSW.7)。P2.0口可以是開或關(guān),也就是置1或0,高電平或低電平),按字節(jié)傳送數(shù)據(jù)。要通過位累加器C和其它存儲地址進行數(shù)據(jù)交換。該語句也可以寫成:MOV C,P2.0,比較字節(jié)數(shù)據(jù)傳送MOV A,#00H或MOV A,P1。
PC→MOV P1.0,C;等價于MOV 90H,C;將位累加器C地址中的值傳送給P1.0口(90H是其直接地址),也就是將P2.0口的狀態(tài)(由直接地址0A0H狀態(tài)決定)傳送給直接地址90H,P1.0口
PC→MOV P1.1,C ;等價于MOV 91H,C
PC→MOV P1.2,C ;等價于MOV 92H,C
PC→MOV P1.3,C ;等價于MOV 93H,C 等等
END ;偽指令,程序結(jié)束標志
l 實例5—雙四數(shù)碼管組雙端口數(shù)字顯示—單端口掃描移動仿真—點陣
雙四數(shù)碼管組雙端口數(shù)字顯示—單端口掃描移動仿真,可以被分解為
a) 雙四數(shù)碼管組雙端口數(shù)字顯示—單端口無掃描無移動—>數(shù)字變化(依靠數(shù)表和指針),
b) 雙四數(shù)碼管組雙端口數(shù)字顯示—單端口掃描移動—>數(shù)字不變化(依靠數(shù)表和指針),
c) 雙四數(shù)碼管組雙端口數(shù)字顯示—單端口掃描移動—>數(shù)字變化(依靠數(shù)表和指針),