📄 text1.asm
字号:
;###################################################
ORG 0000H
LJMP STAR
ORG 0050H
STAR:
;主程序#############################
MAIN: MOV SP,#30H ;设定椎栈指针
;ACALL DISPLAY_L0 ;调用子程序;①
;ACALL D1S;②
;ACALL DISPLAY_L1;③
;ACALL D1S;④
;ACALL DISPLAY_LL;⑤
;ACALL D1S;⑥
;ACALL DISPLAY_LR;⑦
;ACALL D1S;⑧
ACALL DISPLAY_ALL;⑨
AJMP MAIN;
;////////////////////////////////
;只点亮L0 发光管的子程序
DISPLAY_L0:MOV P0,#0FFH;使所有的灯灭
SETB P3.7;关选通
CLR P0.0 ;预备点亮L0
CLR P3.7 ;开选通点亮L0
RET
;/////////////////////////////////
;只点亮L1 发光管的子程序
DISPLAY_L1:MOV P0,#0FFH ;使所有的灯灭
SETB P3.7 ;关选通
CLR P0.1 ;预备点亮L1
CLR P3.7 ;开选通点亮L1
RET
;/////////////////////////////////
;只点亮L0 L2 L4 L6 发光管的子程序
DISPLAY_LL:MOV P0,#0FFH
SETB P3.7
MOV P0,#0AAH ;此条语句等效的二进制语句为: MOV P0,#10101010B
CLR P3.7 ;开选通点亮L0 L2 L4 L6
RET
;/////////////////////////////////
;/////////////////////////////////
;只点亮L1 L3 L5 L7 发光管的子程序
DISPLAY_LR:MOV P0,#0FFH
SETB P3.7
MOV P0,#55H ;此条语句等效的二进制语句为: MOV P0,#01010101B
CLR P3.7 ;开选通点亮L1 L3 L5 L7
RET
;/////////////////////////////////
;/////////////////////////////////
;流水灯子程序
DISPLAY_ALL:MOV A,#01111111B;只点亮L7 发光管参数设定
ACALL DISPLAY_LS;传递参数,只点亮L7
ACALL D1S;延时
MOV A,#10111111B;只点亮L6 发光管参数设定
ACALL DISPLAY_LS;传递参数,只点亮L6
ACALL D1S;延时
MOV A,#11011111B
ACALL DISPLAY_LS
ACALL D1S
MOV A,#11101111B
ACALL DISPLAY_LS
ACALL D1S
MOV A,#11110111B
ACALL DISPLAY_LS
ACALL D1S
MOV A,#11111011B
ACALL DISPLAY_LS
ACALL D1S
MOV A,#11111101B
ACALL DISPLAY_LS
ACALL D1S
MOV A,#11111110B
ACALL DISPLAY_LS
ACALL D1S
RET
;/////////////////////////////////
;流水灯公用调用子程序
DISPLAY_LS:MOV P0,#0FFH ;使所有的灯灭
SETB P3.7 ;关选通
MOV P0,A ;预备点亮
CLR P3.7 ;开选通点亮
RET
;/////////////////////////////////
;延时程序,读者可根据所选用的晶体及指令周期自行计算
D1MS: MOV R7,#20H
LOOP1: MOV R6,#32H
LOOP2: DJNZ R6,LOOP2
DJNZ R7,LOOP1
RET
;套用延时程序,以增加延时时间
D1S: MOV R5,#250
LOOP6: ACALL D1MS
DJNZ R5,LOOP6
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -