📄 asm.asm
字号:
ORG 0000H
START: MOV A,#0FFH ;
CLR C ;
MOV R2,#16 ;循环次。
LOOP: RLC A ;带进位左移。
MOV P2,A ;输出到P2口。
LCALL DELAY ;延时一段时间
DJNZ R2,LOOP ;反复循环
MOV R2,#16 ;再往回循环。
LOOP1: RRC A ;带进位右移
MOV P2,A ;输出到P2口。
LCALL DELAY ;延时一段时间
DJNZ R2,LOOP1 ;反复循环
MOV A,#7EH ;发光管初值
MOV R0,#12 ;循环次数
LOOP2: MOV P2,A
LCALL DELAY ;调用延时程序
MOV R1,A ;
ORL A,#0F0H ;或运算,用于将高四位清除
RL A ;左移,实现灯向左依次显示
XCH A,R1 ;交换
ORL A,#0FH ;或运算,用于将低四位清除
RR A ;右移,实现灯向右依次显示
ANL A,R1 ;组成一个完整的字节
DJNZ R0,LOOP2 ;R0不为零,则循环
LCALL DELAY1 ;延时
MOV R6,#8
LOOP3: MOV A,#01010101B ;
MOV P2,A ;
LCALL DELAY
MOV A,#10101010B ;
MOV P2,A ;
LCALL DELAY
DJNZ R6,LOOP3
MOV R6,#8
LOOP6: MOV A,#11001100B ;
MOV P2,A ;
LCALL DELAY
MOV A,#00110011B ;
MOV P2,A ;
LCALL DELAY
DJNZ R6,LOOP6
MOV R6,#8
LOOP7: MOV A,#11101110B ;
MOV P2,A ;
LCALL DELAY
MOV A,#00010001B ;
MOV P2,A ;
LCALL DELAY
DJNZ R6,LOOP7
MOV R6,#8
LOOP4: MOV A,#0FH ;
MOV P2,A ;
LCALL DELAY
MOV A,#0F0H ;
MOV P2,A ;
LCALL DELAY
DJNZ R6,LOOP4
MOV R6,#8
LOOP5: MOV A,#00H ;
MOV P2,A ;
LCALL DELAY
MOV A,#0FFH ;
MOV P2,A ;
LCALL DELAY
DJNZ R6,LOOP5
LJMP START ;重新开始
DELAY: MOV R3,#20
D1: MOV R4,#20
D2: MOV R5,#225
DJNZ R5,$
DJNZ R4,D2
DJNZ R3,D1
RET
DELAY1: MOV R3,#20
D3: MOV R4,#20
D4: MOV R5,#100
DJNZ R5,$
DJNZ R4,D4
DJNZ R3,D3
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -