51单片机汇编

来源:百度知道 编辑:UC知道 时间:2024/05/30 01:47:35
;此程序实现P2口从零到七逐个亮、最后全亮,
;在由七返回逐位灭去
;疑问程序运行时影响p2.0位, 这个程序高电平点亮二极管
;我的实验板是低电平点亮,在此求助,谢谢
;我的程序很糟
ORG 0000H
START: MOV A, #00H ;初始化
MOV P2, A

MOV R2, #08H
CLR C
LOP1:
MOV P2, A
LCALL DELAY1
INC A
RLC A

DJNZ R2, LOP1

MOV A, #0FFH
MOV R3, #06H

LOP2: CLR C
RRC A
DEC A
MOV P2, A
LCALL DELAY2

DJNZ R3, LOP2
JMP START
DELAY1: MOV R4, #10
DE0: MOV R5, #100
DE1: MOV R6, #120
DJNZ R6, $
DJNZ R5, DE1
DJNZ R4, DE0
RET

DELAY2: MOV R7, #13
DE2: LCALL DELAY1
DJN

LOP1:
MOV P2, A
LCALL DELAY1
INC A
RLC A
DJNZ R2, LOP1
首先你说该程序是高电平点亮led
这里的第一句,(A)=00000000B
第三句,(A)=00000001B
第四句,(A)=00000010B
再次循环后,A的最低位还是为0,所以说你这个程序点不亮P2.0的灯。

帮你修改如下:
LOP1:
MOV P2, A
LCALL DELAY1
SETB C
RLC A
DJNZ R2, LOP1

自己仔细分析下就清楚了。