當年在大學裏面,用的是個什麽牌子的實驗箱,實驗程序,就是這個題目。
想不到,多年後,還有人問這樣的問題。
翻開筆記,整理了壹下程序,如下。
現在樓主要求使用proteus仿真,本人尚未測試,LED輸出的部分,軟件、硬件都需要重新設計。
=====================
2.多路分支程序
根據A中內容(來自20H單元)進行多路分支的程序如下:
ORG 0000H
MOV 20H, #0 ;每次實驗,這裏可以改為0、1、2和3
;-----------------------------------
MOV A, 20H ;取預置數據
MOV DPTR, #J_TAB ;散轉表起始地址
RL A ;A 乘以 2
JMP @A+DPTR ;散轉指令
;------------------------------- 多路分支結構----
J_TAB: ;散轉表
AJMP P1
AJMP P2
AJMP P3
AJMP P4
P1:
MOV 20H, #0C0H ;"0"字的7段碼
LJMP DISPLAY
P2:
MOV 20H, #0F9H ;"1"字的7段碼
LJMP DISPLAY
P3:
MOV 20H, #0A4H ;"2"字的7段碼
LJMP DISPLAY
P4:
MOV 20H, #0B0H ;"3"字的7段碼
;----------------------------------------------
DISPLAY: ;循環顯示程序
MOV A, 20H ;取來7段碼
MOV R0, #22H ;顯示器段地址
MOV R1, #21H ;顯示器位地址
MOVX @R0, A ;將7段碼輸出
MOV A, #01H ;最"右"邊的位發光
D_LOOP:
MOVX @R1, A
MOV R2, #20H ;準備延時
LCALL DELAY ;調用延時子程序
RL A ;左移顯示的位
SJMP D_LOOP ;無窮循環
;----------------------------------------------
DELAY: ; 延時子程序
PUSH 02H
DL0: PUSH 02H
DL1: PUSH 02H
DJNZ R2, $
POP 02H
DJNZ R2, DL1
POP 02H
DJNZ R2, DL0
POP 02H
DJNZ R2, DELAY
RET
;----------------------------------------------