单片机汇编keil,我改变R5的值,为什么p0显示的速度并没有什么改变,都是快速闪动

ORG 0000H SJMP MAIN MOV A,#0FEHMAIN: MOV P1,A
LCALL DELAY CPL A SJMP MAIN
DELAY: MOV R5,#50D2: MOV R7,#255D1: MOV R6,#255 DJNZ R6,$ DJNZ R7,D1 DJNZ R5,D2 RET END

你这个程序有问题,你没发现吗?取反后应该再进行延时。按下面程序,你试试!
ORG 0000H
SJMP MAIN
MOV A,#0FEH
MAIN: MOV P1,A
LCALL DELAY
CPL A
LCALL DELAY
SJMP MAIN
DELAY: MOV R5,#50
D2: MOV R7,#255
D1: MOV R6,#255
DJNZ R6,$
DJNZ R7,D1
DJNZ R5,D2
RET
END
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-11-29
改变代码中 DELAY: MOV R5,#50 这一句的#50这一数字,才能改变延时值。

除非你在 每次(!!!) 进入delay后到达D2那句后 直接改变R5的值,不然不能持续起作用的。本回答被网友采纳
第2个回答  2014-11-29
那个R5是控制延时的,改变那个值当然就会改变延时的

单片机汇编keil,我改变R5的值,为什么p0显示的速度并没有什么改变,都是...
你这个程序有问题,你没发现吗?取反后应该再进行延时。按下面程序,你试试!ORG 0000H SJMP MAIN MOV A,#0FEH MAIN: MOV P1,A LCALL DELAY CPL A LCALL DELAY SJMP MAIN DELAY: MOV R5,#50 D2: MOV R7,#255 D1: MOV R6,#255 DJNZ R6,DJNZ R7,D1 DJNZ R5,D2...

keil模拟单片机延时汇编程序执行,显示的运行时间为什么和理论不一样...
仿真模拟 与 电脑速度有关,不可能达到和理论不一样,只有 在 实际单片机上 运行,才会与 计算理论值一致。

单片机keil的调试问题 为什么仿真里P0端口的值不等于Pins的值?
输出的寄存器是用来设置端口的输出状态的,输入寄存器是用来显示输入电平的,所以输入的寄存器和端口真正的电平状态,输出寄存器不一定和输入寄存器一致。

keil硬件仿真时,显示变量的值错误
JLINK,这个问题我没遇到,但是用STM32的SWJ模式好些,省IO口,还速度快。watch窗口里的变量即便是在片子运行期间都会跟着变化,不是实时的,有滞后,但好过JTAG模式那样停止后才更新。我是观察16次定时器捕捉的值,存到RAM的自定义数组里。还有一点,注意MDK的版本,最新的4.0还有问题,用3.8的很不...

单片机写的汇编程序如下,我想问的是程序是有结束的地方END,可是为什么...
end 只代表文本代码的结束,你这样用是不对的,编译器可能会将跳转到end变为跳转到程序初始区,你可以用KEil的反编译功能,调试一下这个程序,看程序跳转到哪里,不过调试之前,先将你的延时程序中的r1,r2,r3,还有r0,r7的值变小,否则单步调试很麻烦。如果想停止程序,去掉 ljmp rel ...

单片机 KEIL软件调试时发现寄存器和他的值都不显示。
是不显示还是没变化,不显示可能是你没把寄存器的窗口调出来,有很多串口的。

我在KEIL里编写一个数码管显示小数的程序。我的P0口接片选共八个,P1...
单片机是实用型的计算机,没有必要用浮点数。小数,都用整数来计算。一般的用字节型,较大的数字,用整型即可,这就有5位十进制数字了。而实用型的数据显示,一般用四位有效数字即可。计算复杂的中间变量,用长整型即可保证精度。只是在显示的时候,根据需要,在某个位,显示小数点即可。

典型51单片机的P0,P1,P2,P3口都有哪些功能?
1、P0口:真正的双向口,输出锁存,输入缓冲,输入前要先置1(KEIL包含的头文件已经有动作了,如果用汇编,要人工置1),输出为漏极开路,输出一般都要上拉电阻。输入为高阻态,能驱动8个TTL负载。当有片外存储器时,作数据线使用。 2、P1口:最简单的口,输入也要先置1,无高阻态,...

AT89C51单片机怎么用汇编语言让4个数码管同时显示1234?
1、首先我们先打开keil。2、接着,我们要定义好库函数,void main(){while(1)\/\/不断循环显示{dispaly();}}void dispaly(){P0=smg[1];\/\/选择显示数字几,P1=0x7f;\/\/控制是否点亮数码管。3、接着,我们加上一条循环语句。delay(5);\/\/显示5毫秒P0=0XFF;\/\/消影P0=smg[2];P1=0xbf;delay...

keil中汇编程序运行正确生成了.hex文件加载到proteus的原理图的单片机中...
proteus也要进行设置,双击芯片把时钟大小写进去。在keil里也要设置相关的芯片,与proteus匹配好。如果硬件电路没问题,就可以正常仿真了。

相似回答