📄 liushuideng.asm
字号:
org 0000h
jmp 40h
org 40h
start:;acall dandltor
;acall dandrtol
;acall duodltor
;acall duodrtor
;mov r4,#4
;acall duodltor_cl
;acall duodltor_cm
;acall duodrtol_cl
;acall duodrtol_cm
;jmp start
;*********************************************************************
;子程序:duodrtol duod代表多灯,rtol代表从右至左
;功能:实现多灯从右至左依次全亮,循环3次
;*********************************************************************
duodrtol:
mov r0,#24
initval2:mov a,#7fh
mov p0,a
rgtolf2: dec r0
acall delay1s
mov r1,a
rr a ;向左移位使LED循环点亮
anl a,r1
mov p0,a
jz initval2 ;累加器为零的跳转
cjne r0,#00h,rgtolf2
ret
;*********************************************************************
;子程序:duodltor duod代表多灯,ltor代表从左至右
;功能:实现多灯从左至右依次全亮,循环3次
;*********************************************************************
duodltor:
mov r0,#24
initval1:mov a,#0feh
mov p0,a
lftorg1:dec r0
acall delay1s
mov r1,a ;R1用于保存移位前的p0值
rl a ;向左移位使LED循环点亮
anl a,r1
mov p0,a
jz initval1 ;累加器为零的跳转
cjne r0,#00h,lftorg1
ret
;**********************************************************************
;子程序:dandltor dand代表单灯,ltor代表从左到右
;功能:实现单灯从左至右依次点亮3次
;无参数输入
;**********************************************************************
dandltor:
mov a,#0feh
mov r0,#24
lftorg:dec r0
mov p0,a
acall delay1s
rl a ;向左移位使LED循环点亮
cjne r0,#00h,lftorg
ret
;**********************************************************************
;子程序:dandrtol dand代表单灯,rtol表示从右到左
;功能:实现单灯从右到左依次点亮3次
;无参数输入
;**********************************************************************
dandrtol:
mov a,#7fh
mov r0,#24
rgtolf:dec r0
mov p0,a
acall delay1s
rr a ;向右移位使LED循环点亮
cjne r0,#00h,rgtolf
ret
;***********************************************************
;子程序:delay1s
;功能:延时1s
;***********************************************************
delay1s:mov r7,#100 ;R7存放计数循环值
delay10ms: ;延时10ms
mov tmod,#10h ;T1工作在定时方式1
mov th1,#0d8h
mov tl1,#0f0h
setb tr1 ;启动T1工作
djnz r7,delay10ms
ret
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -