在keil中模拟,单步运行的时候,总在这里循环:
IDATALOOP: MOV @R0,A
DJNZ R0,IDATALOOP
我运行的是简单的流水灯程序,程序如下:
ORG 0000H
AJMP DIS1
ORG 030H
DIS1: MOV P1,#0FEH
ACALL DEL
MOV P1,#0FDH
ACALL DEL
MOV P1,#0FBH
ACALL DEL
MOV P1,#0F7H
ACALL DEL
MOV P1,#0EFH
ACALL DEL
MOV P1,#0DFH
ACALL DEL
MOV P1,#0BFH
ACALL DEL
MOV P1,#07FH
ACALL DEL
DIS3: MOV P1,#0FFH
MOV P3,#0FEH
ACALL DEL
MOV P3,#0FDH
ACALL DEL
MOV P3,#0FBH
ACALL DEL
MOV P3,#0F7H
ACALL DEL
MOV P3,#0EFH
ACALL DEL
MOV P3,#0DFH
ACALL DEL
MOV P3,#0BFH
ACALL DEL
MOV P3,#07FH
ACALL DEL
DIS2: MOV P3,#0FFH
MOV P2,#0FEH
ACALL DEL
MOV P2,#0FDH
ACALL DEL
MOV P2,#0FBH
ACALL DEL
MOV P2,#0F7H
ACALL DEL
MOV P2,#0EFH
ACALL DEL
MOV P2,#0DFH
ACALL DEL
MOV P2,#0BFH
ACALL DEL
MOV P2,#07FH
ACALL DEL
DIS0: MOV P2,#0FFH
MOV P0,#07FH
ACALL DEL
MOV P0,#0BFH
ACALL DEL
MOV P0,#0DFH
ACALL DEL
MOV P0,#0EFH
ACALL DEL
MOV P0,#0F7H
ACALL DEL
MOV P0,#0FBH
ACALL DEL
MOV P0,#0FDH
ACALL DEL
MOV P0,#0FEH
ACALL DEL
MOV P0,#0FFH
AJMP DIS1
DEL: MOV R5,#04H
DEL1: MOV R6,#0FFH
DEL2: MOV R7,#0FFH
DEL3: DJNZ R7, DEL3
DJNZ R6, DEL2
DJNZ R5, DEL1
RET
END
请问问题出在哪?怎么改正。谢谢!
Keil使用中遇到的问题
在使用Keil C51过程中,可能会遇到一系列问题。首先,安装Keil C51后,为打开项目,务必下载Keil MDK-ARM并安装配套的pack,可通过官网keil.com获取(需梯子)。遇到报错"Target 'STM32F429_439xx' uses ARM-Compiler 'Default Compiler Version 5' which is not available"时,解决方法是进入Options f...
STM32单片机在Keil5下仿真的问题解决
经过多次迭代和测试,这款编程器最终取得了用户的一致好评。它不仅适用于STM32系列、LPC系列、K60系列、HT32系列、NV32系列、EFM32系列等众多ARM Cortex-M系列单片机的调试,还能兼容市面上绝大多数ARM Cortex-M系列单片机。在稳定性、兼容性以及成本控制方面,这款编程器都展现出了优秀的表现。随着这款...
Keil4怎样编写单片机的程序?
1、首先在电脑桌面中,双击“Keil4”图标打开软件。2、点击上部菜单栏中的“工程”,在下拉菜单中选择“新建工程文件”。3、把工程文件保存到目标文件夹里去,工程文件命名可以随意写入一些数字。4、选择单片机类型,根据实际情况进行选择,例如“Atmel”中的“89C52”。5、点击“文件”,在“文件”的下拉...
keil编译没有错误为什么烧进单片机不运行
Keil没有报错只能说明逻辑没有错误,但是不能运行有两方面原因:第一是你的程序设计有问题。第二是单片机硬件电路的问题。请在单片机可以正常工作的情况下,检查程序中各个子程序,引脚定义等等。
keil选错单片机型号有什么影响
keil选错单片机型号的影响有程序无法下载、编译错误。1、程序无法下载:当设计的程序与所选单片机不匹配时,会导致程序无法正确下载到芯片中,从而无法工作。2、编译错误:Keil提供了单片机的头文件、库文件、启动文件等一系列支持文件,当选择错误的单片机型号时,这些文件和程序之间的联系就会出现问题,从而...
keilc开发单片机程序有哪些优缺点
keilc开发单片机程序会大大缩短开发周期,其优点是可读性好,移植容易,使用是普遍的,因为它同时兼顾了多种高级语言的特点,运算速度非常快。缺点是占用资源较多,因为指定在编码之后会变成很多条机器码,就很容易导致空间不足。keilc开发单片机程序要注意寄存器不能重复使用,否则程序的运行会变得不正常。
单片机汇编语言keil文件错误error A46: CODE-ADDRESS EXPECTED
1、错误提示:代码地址错误,代码可能越界,超过代码区容量,或者,非法的不支持的变量定义。2、数据地址错误:可能越界,超过单片机数据容量,建议看看单片机型号是否选择正确。3、没有定义的变量,查看包含文件是否正确,可能单片机型号和包含文件不相符。4、指令不支持数据格式类型,查看指令说明,将数据格式...
我在keil软件 用c语言写51单片机的时候发现?
其实,C语音的变量并不直接定义到寄存器,而是定义到内存单元,寄存器算是个中介,数据从内存取出临时存放到寄存器,然后将当时用不上的数据又从寄存器回写到内存,这样就解决了寄存器共享问题了;另外,你在调试时,再打开个反汇编窗口,跟踪C语音程序的汇编代码,就更清楚了;...
用于开发STM32、开发keil软件和开发C51的keil软件相冲突怎么解决?_百度...
\\r\\n打开stm32工程当然没有问题.\\r\\n \\r\\n第二个方法: 让keilMDK兼容51的工程,只要一个keil就都能编译51和stm32的工程了:\\r\\n1、安装keilC51,安装目录 C:\\keilC51\\\\r\\n2、安装keilMDK,安装目录 C:\\keilMDK\\\\r\\n3、把 C:\\keilC51\\ 里面的 C51 文件夹复制到 C:\\keilMDK\\ 里\\r\\...
单片机Keil问题
先回答你第一个问题:DATALOOP: MOV @R0,A DJNZ R0,IDATALOOP 第一条是将A中的内容放入R0所指的地址中,如果R0的数值比较大的话,用单步运行就需要很长时间。有个方法可以解决,即在KEIL调试时,修改R0里的数值,将它变成1或者01H,就可以出循环了。第二个问题:你的程序是实现P1循环→P3循环→...