急!!51单片机P3。3口输入,P1。1口输出,将灯左移问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 07:54:03
原语句是 ORG 0810H
J100: MOV A,#00H
J101: JB P3.3,J101
MOV R2,#20H
LCALL DELY
JB P3.3,J101 ;P3.3电平为低吗?
J102: JNB P3.3,J102
MOV R2,#20H
LCALL DELY
JNB P3.3,J102 ;P3.3电平高吗?
INC A ;加1
PUSH ACC
CPL A ;取反
MOV P1,A ;驱动发光二极管
POP ACC
AJMP J101 ;循环
;---------------------------------------------
DELY: PUSH 02H
DEL2: PUSH 02H
DEL3: PUSH 02H ;延时
DEL4: DJNZ R2,DEL4
POP 02H
DJNZ R2,DEL3
POP 02H
DJNZ R2,DEL2
POP 02H
DJNZ R2,DELY
RET
;--------------------------------------------
END

要改成左移方式点亮,怎么改啊???急啊,谢谢了!!!

我来回答吧,好久不用汇编了,首先,你为什么要改这个呢?这样还不如重新写一个的简单,还有,为什么不用c写?那样会更更简单,嘻嘻,废话了。下面对你的程序做了简单修改,默认是高电平输出点亮你的led,如果你的p1输出的是低电平点亮的话,只需要将第二行的赋值语句改为:MOV A,#0feH就可以了,呵呵,你自己对比一下吧。如果我写的不对或者有疑问可以给我留言 http://hi.baidu.com/xiaozhishmily 呵呵。

ORG 0810H
J100: MOV A,#01H ;累加器的初值写为1,最低位的灯亮
J101: JB P3.3,J101
MOV R2,#20H
LCALL DELY

JB P3.3,J101 ;P3.3电平为低吗?
J102: JNB P3.3,J102
MOV R2,#20H
LCALL DELY
JNB P3.3,J102 ;P3.3电平高吗?
; INC A ;加1
; PUSH ACC
; CPL A ;取反
RLC A ;循环左移指令,带进位
MOV P1,A ;驱动发光二极管
; POP ACC
AJMP J101 ;循环

;---------------------------------------------
DELY: PUSH 02H
DEL2: PUSH 02H
DEL3: PUSH 02H ;延时
DEL4: DJNZ R2,DEL4
POP 02H
DJNZ R2,DEL3
POP 02H
DJNZ R2,DEL