使用取反(CPL)实现跑马灯的闪烁,随后给P0口赋值实现移动。 注;使用的是12MHZ频率,
ORG 0000H
LJMP LOOP1
ORG 0030H
LOOP1: MOV A,#11111111B
clr p1.4 ;打开使能
MOV R1,#5 ;闪烁5次
LOOP: CPL A ;取反
MOV P0 , A ;输出
ACALL DEL
CPL A
MOV P0 , A
ACALL DEL
DJNZ R1 , LOOP ;减一非零判断
MOV P0,#11100111B
ACALL DEL
MOV P0,#11011011B
ACALL DEL
MOV P0,#10111101B
ACALL DEL
MOV P0,#01111110B
ACALL DEL
LJMP LOOP1
LOOP3: ACALL DEL
SJMP LOOP1
DEL: MOV R5,#6H ;延时子程序部分
F3: MOV R6,#0FFH ;BCD码为255
F2: MOV R7,#0FFH ;总延时为0.7803s
F1: DJNZ R7,F1
DJNZ R6,F2
DJNZ R5,F3
RET
END
-------------------------------------------------------------------------
带C循环做移动,使用一条跳转转移指令就可实现一直循环下去,延时为1.3s!
ORG 0000H
SJMP BEGAIN
ORG 0030H
BEGAIN: MOV P0, #0FFH ;初始状态
clr p1.4 ;打开led使能
mov P2, #00110101B ; 锁存2个74hc573,防止数码管点阵干扰.
MAIN : CLR A
MOV A ,#11111110B ; 0FEH
LOOP: RLC A
MOV P0 , A
ACALL DEL
LJMP LOOP
DEL: MOV R5,#10H
F3: MOV R6,#0FFH
F2: MOV R7,#0FFH
F1: DJNZ R7,F1
DJNZ R6,F2
DJNZ R5,F3
RET
END
|