ORG 00H
START:
MOV A, #0FFH ; ACC=FHH,设置左移初始值
CLR C ; 清进位CY
MOV R1,#8 ; R0为移位计数器,R1=8
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 程序初始化;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LOOP:
RLC A ; 左移一位
MOV P0,A ; 输出到P0口,低电平
CALL DELAY ; 调用延时子程序
DJNZ R1,LOOP ; 是否左移了8次,如果不是则跳回LOOP
MOV R2,#7 ; 右移7次的计数器
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;左移7位;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LOOP_1:
RRC A ; 右移一位
MOV P0, A ; 输出到P0口,低电平
CALL DELAY ; 调用延时子程序
DJNZ R2,LOOP_1 ; 是否右移了7次,如果不是则跳回LOOP_1
JMP START ; 重复执行该程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;右移7位;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY: ; 延时子程序(200ms) ,晶振12MHZ.
MOV R3,#20
D1:
MOV R4,#20
D2:
MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
DJNZ R3,D1
RET ; 延时结束
END ; 结束
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;指令运用:
1.数据装载指令:MOV,Rn,#n.n是数值或数据
2.清零操作:CLR,A
3.位移动操作:RLC A,RRC A
4.调用子程序:CALL DELAY
5.循环指令:DJNZ R4,D2
6.返回指令:RET和RETI。这里RETI没有使用
7.结束指令:END