51单片机汇编程序如下 为什么一直都是p1.0为低电平啊 我设置的是循环啊??

ORG 00H
MOV A, #0FFH
START:CLR C
RLC A
MOV P2,A

CALL DELAY
JMP START
DELAY:MOV R2,#20
D1:MOV R3,#20
MOV R4,#248
DJNZ R4,$
DJNZ R3,D1
DJNZ R2,DELAY
RET
END

延时程序出错了DELAY:MOV R2,#20
D1:MOV R3,#20
MOV R4,#248
DJNZ R4,$
DJNZ R3,D1
DJNZ R2,DELAY
RET
应改为
DELAY:MOV R2,#20
D1:MOV R3,#20
D2: MOV R4,#248
DJNZ R4,$
DJNZ R3,D2
DJNZ R2,D1
RET
不改的话你的程序永远跳不出循环,你的P2.0口,永远是低电平,而且不会变,
你编的程序也有问题,现在实现的是接P2口的八个灯,低亮,而且只会递亮8次就一直亮着了
如果要实现流水,主程序改为:
ORG 00H
MOV A, #0FEH
START:
MOV P2,A
RL A

如果想要实现递高主程序改为
ORG 00H
MAIN: MOV A, #0FFH
MOV R5,#8
START:CLR C
RLC A
MOV P2,A

CALL DELAY
DJNZ R5,START
JMP MAIN
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-02
首先,你的延时子程序有错。
另外,不知你是实现什么样的循环,是不是低电平只1 位的,一直从P2.0到P2.7再反复?如果是,不应该转到START ,应该要转到下一位。不然每次都 CLR C ,移位白移了。

你的延时子程序有错。
ORG 00H
MOV A, #0FFH
START:CLR C
S0: RLC A
MOV P2,A
CALL DELAY
AJMP S0
DELAY:MOV R2,#20
D1:MOV R3,#20
D2:MOV R4,#248
DJNZ R4,$
DJNZ R3,D2
DJNZ R2,D1
RET

END

...为什么一直都是p1.0为低电平啊 我设置的是循环啊??
RET 不改的话你的程序永远跳不出循环,你的P2.0口,永远是低电平,而且不会变,你编的程序也有问题,现在实现的是接P2口的八个灯,低亮,而且只会递亮8次就一直亮着了 如果要实现流水,主程序改为:ORG 00H MOV A, #0FEH START:MOV P2,A RL A 如果想要实现递高主程序改为 ORG 00H MAIN: M...

51单片机怎么初始化io口为低电平?
1、首先注意51单片机上电的时候会有个复位的操作,复位的时候不执行单片机内部程序,复位之后51单片机的所有IO口都为高电平;2、在单片机复位之后在main函数里执行程序,如果要使Io口初始化为低电平,就要在while循环的上方把IO置低;例如:一般程序的结构是这样的:void main(){ ...IO = 0 ; \/...

求大佬,用汇编语言编程,51单片机在p1.0端每隔一秒交替输出高低电平
这很容易做。用定时器定时器20ms,或50ms,在中断程序中计断次数,中断50次或20次就是1秒,在P1.0脚交替高低电平即可。

怎么用汇编语言在单片机一个I\/O输出高电平和低电平
看是什么单片机,不同的单片机汇编语言也是不同,拿51单片机来说,如果只是一个I\/O口,用SETB实现输出高电平,用CLR实现输出低电平,比如P1口,就是SETB P1.0,CLR P1.0以此类推P1.1,P1.2直到P1.7,注意如果使用P0口需接上拉电阻

51单片机用isp下载程序后不运行
首先,在你测试硬件是否正常的时候,应该尽量剥离软件的问题,即,无论你把什么片子插到什么板子上,都应该用最最简单的程序,比如:程序一开始,就让P1.0输出低电平,让P1.1输出高电平,仅做此一件事情后,就进入死循环,然后你判断硬件是否OK就很简单了,用万用表量下,P1.0为0v,P1.1为5v...

求51单片机按键点灯汇编程序,按一下按键灯亮(一直亮),再按一下灭_百度...
;以下为一个按键控制一个灯的程序!!!ORG 0000H SETB P1.0 START:JB P1.0,NEXT ;设按键为低电平有效。JNB P1.0,CPL P3.0 NEXT:SJMP START END

51单片机中如何通过一个端口高低电平,控制另外端口的高低电平? C语言程...
不明白你需要的控制需求,如果你说的“给P1.0口加高电平”这句话理解为给P1.0外加一个高电平,那么编程中只要加一个判断就可以实现你的目的了,可以参考按键程序,(如果是按键判断需要加入防抖动代码)示意代码如下:sbit k=P1^0;\/\/定义一个端口名称 if(k) P2=1;\/\/如果端口为1,P2置1 else...

51单片机汇编程序问题
MOV TL0, #0B0H SETB ET0 SETB EA SETB TR0 ;定时器0控制位 ; ---此处,缺少循环,自动往下执行到中断程序去了 SJMP $ ;---加上这行,再试试看。INT_T0:MOV TH0, #3CH ;重新装入初值 MOV TL0, #0B0H ……...

51单片机C语言程序:当P1^0口输入为高电平的时候,P2^4也输出高电平,当P1...
sbit P1.0=P1^0;sbit

在keil_C51设计中几种精确延时的方法
熟悉硬件的开发人员,也可以利用示波器来测定延时程序执行时间。方法如下:编写一个实现延时的函数,在该函数的开始置某个I\/O口线如P1.0为高电平,在函数的最后清P1.0为低电平。在主程序中循环调用该延时函数,通过示波器测量P1.0引脚上的高电平时间即可确定延时函数的执行时间。使用反汇编工具计算...

相似回答