?? sdisp.asm
字號(hào):
;該程序?qū)崿F(xiàn)在三個(gè)數(shù)碼管上顯示123,顯示停留5秒鐘
;然后以0.5秒為間隔閃動(dòng)5次,不斷循環(huán)。
;采用靜態(tài)顯示方式
LED EQU 8000H ;左邊第1個(gè)數(shù)碼管的地址
BUFFER EQU 30H ;顯示緩沖區(qū)首地址
FLASH BIT 00H ;閃爍標(biāo)志
ORG 0
LJMP START
ORG 30H
START: MOV SP,#60H
SETB FLASH ;使顯示常亮
MOV R0,#BUFFER
MOV R2,#3 ;給顯示緩沖區(qū)的單元數(shù)
MOV A,#1
LOOP1: MOV @R0,A ;給顯示緩沖區(qū)賦值
INC A
INC R0
DJNZ R2,LOOP1
LOOP: LCALL DISP ;顯示數(shù)據(jù)
LCALL DELAY5S ;延時(shí)5秒鐘
MOV R3,#10 ;閃爍10次
LL1: LCALL DISP
LCALL DELAY ;延時(shí)0.5秒
CPL FLASH ;閃爍標(biāo)志取反實(shí)現(xiàn)顯示的閃爍
DJNZ R3,LL1
SETB FLASH ;閃爍標(biāo)志置1,實(shí)現(xiàn)顯示常亮
SJMP LOOP
;顯示子程序
;當(dāng)FLASH標(biāo)志為1時(shí),將顯示緩沖區(qū)的16進(jìn)制數(shù)顯示出來
;當(dāng)FLASH標(biāo)志為0時(shí),熄滅所有顯示器
;使用寄存器為A、R0、R2和DPTR
DISP: MOV R0,#BUFFER
MOV R2,#3 ;一共有3個(gè)數(shù)碼管
MOV DPTR,#LED ;送數(shù)碼管地址
JNB FLASH,DISP2 ;若閃爍標(biāo)志為0,則轉(zhuǎn)移
DISP1: PUSH DPH ;保護(hù)數(shù)碼管地址
PUSH DPL
MOV A,@R0
MOV DPTR,#TAB ;指向顯示段碼的碼表
MOVC A,@A+DPTR ;查表將需要顯示的數(shù)據(jù)變換為顯示段碼
POP DPL
POP DPH
MOVX @DPTR,A ;段碼送數(shù)碼管顯示
INC R0 ;指向下一個(gè)要顯示的數(shù)據(jù)
MOV A,DPH
ADD A,#10H
MOV DPH,A ;指向下一個(gè)數(shù)碼管
DJNZ R2,DISP1 ;沒有顯示完則繼續(xù)
RET
DISP2: CLR A
MOVX @DPTR,A ;熄滅數(shù)碼管
MOV A,DPH
ADD A,#10H
MOV DPH,A ;指向下一個(gè)數(shù)碼管
DJNZ R2,DISP2
RET
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
;延時(shí)0.5秒子程序
;使用寄存器:R5、R6和R7
DELAY: MOV R5,#2 ;延時(shí)0.5秒子程序
D1: MOV R6,#250
D2: MOV R7,#250
D3: NOP
NOP
DJNZ R7,D3
DJNZ R6,D2
DJNZ R5,D1
RET
;延時(shí)5秒子程序
;使用寄存器:R4
DELAY5S:MOV R4,#10 ;延時(shí)5秒子程序
DD1: LCALL DELAY
DJNZ R4,DD1
RET
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -