數(shù)碼管掃描程序(采用數(shù)據(jù)表格)
CNT EQU 30H ;賦值指令:給標(biāo)號(hào)CNT賦值,標(biāo)號(hào)CNT=30H
本文引用地址:http://m.butianyuan.cn/article/201611/315800.htmORG 0000H
MOV P1,3FH
;剛開始的數(shù)據(jù)恢復(fù)程序(延時(shí))
START: MOV R1,#00H
L0: DJNZ R1,L0
MOV SP,#50H
MOV CNT,#00H ;計(jì)數(shù)器先清零
LOOP: MOV A,CNT ;把CNT(地址)中的數(shù)(存的是程序表中的地址)付給A
MOV DPTR,#TABLE ;定義字形表的起始地址
MOVC A,@A+DPTR ;TABLE為表的起始地址
CALL OUTPUT ;跳轉(zhuǎn)到輸出程序
INC CNT ;計(jì)數(shù)器加一
MOV A,CNT ;重新把CNT放在A中
CJNE A,#10,LOOP ;比較不相等轉(zhuǎn)移指令,如果數(shù)碼管顯示過9后,就不再轉(zhuǎn)移了
MOV CNT,#00H ;數(shù)碼管顯示9后,從新使計(jì)數(shù)器記0
SJMP LOOP ;重新循環(huán)
;程序中的數(shù)據(jù)表格,DB為定義字節(jié)指令(從指定的地址開始,在程序存儲(chǔ)器的連續(xù)單元中定義字節(jié)數(shù)據(jù))
TABLE: DB 3FH ;0
DB 06H ;1
DB 5BH ;2
DB 4FH ;3
DB 66H ;4
DB 6DH ;5
DB 7DH ;6
DB 27H ;7
DB 7FH ;8
DB 6FH ;9
;輸出函數(shù)
OUTPUT: PUSH PSW
CPL A ;取反指令
MOV P1,A
CALL DELAY
POP PSW
RET
;延時(shí)函數(shù),延時(shí)125ms
DELAY: PUSH PSW
MOV R0,#00H
L1: MOV R1,#00H
L2:DJNZ R1,L2
DJNZ R0,L1
POP PSW
RET
END
評(píng)論