单片机流水灯高手过来look look

来源:百度知道 编辑:UC知道 时间:2024/06/21 04:05:28
ORG 0000H
START:MOV R2,#8
MOV A,#0FEH
SETB C
LOOP:MOV P1,A
LCALL DELAY
RLC A
DJNZ R2,LOOP
MOV R2,#8
LOOP1:MOV P1,A
LCALL DELAY
RRC A
DJNZ R2,LOOP1
LJMP START
DELAY:MOV R5,#20
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
END
SETB C这句非常不理解,如果SETB C,一灯左右移动,但我改成CLR C,二灯左右移动,问题是为什么C开始要置1??在proteus中证明了

“如果SETB C,一灯左右移动,但我改成CLR C,二灯左右移动 ”出现这个是正常的

因为RLC和RRC都是带进位CY的循环移动如果C中位0,当然移动后就有2个低了就亮2个灯,同理为1的话就只有1个低啦,就亮一个灯...........回去看看书吧!书上讲的很清楚哦

RLC 是带C标记位进行左移,若C开始设为1,p1口只能有有个口为低电平,所以只有一个亮灯在左移或右移,若C开,始设为低电平,则开始是p1.0为低,左移到一位,则p1.0和p1.1都变低了,从而有2只灯亮。