找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1783|回复: 6
打印 上一主题 下一主题
收起左侧

keil和Proteus联调程序乱跳

[复制链接]
跳转到指定楼层
楼主
Keil和Proteus联调51程序时,遇到了好几个问题:第一,每点一次Keil里的单步,Keil和Proteus里就会自动跳过好多行代码,无论是C51还是汇编,都有这个问题,尝试过把代码优化设置为0级(不优化),依旧没用,还完全不理会我设置的断点,尝试过卸载重装,还换了Keil4也没用。反汇编的内容是正确的,代码运行效果是对的,只是不能单步,Keil里的一个单步会随机跳过某几行,但是这些行并不对应C程序,这就导致程序执行的每一句顺序都是对的,只是没有办法一行一行运行或者设置断点停在该停的地方,整体看上去就像是乱跑一样,一会往上,一会往下。
第二,keil的变量监视中所有值都是零,但是对这些变量实际值是有的,只是没显示出来,也不知道为什么。
第三,Keil对C51的编译结果的最后一行都是NOP,尽管这样,代码走到这一行的时候,在Proteus里显示的是原本该正常显示的正确的汇编指令。
第四,keil有时候就跟抽风了一样,上次还能正常显示反汇编指令,下一次调试就全部编程NOP,但是Proteus里显示的还是正确的汇编指令,运行结果都对,这一点还在汇编窗口向下滚动时体现出来,当我往下滚动汇编窗口的指令的时候,尽管已经到了代码区结尾的NOP指令,Proteus竟然接受到keil发出的继续下一步的指令,然后就是Keil这边完全不知道跑到了哪,但是Proteus里按原来的顺序指令继续正常执行。
整体看来就仿佛keil表面一套,背里一套,表面的乱七八糟,背里的很正常,求教各位大佬帮忙验证和解释一下该怎么办才能解决这些问题。


scp_2021-10-12_11-23.png (79.08 KB, 下载次数: 40)

scp_2021-10-12_11-23.png

scp_2021-10-12_11-231.png (17.99 KB, 下载次数: 33)

scp_2021-10-12_11-231.png

LED.zip

27.43 KB, 下载次数: 6

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:342822 发表于 2021-10-12 18:36 | 只看该作者
直接在Proteus中调试
回复

使用道具 举报

板凳
ID:514901 发表于 2021-10-13 09:06 | 只看该作者
建议直接在proteus写代码,然后在proteus里面调试代码哦
回复

使用道具 举报

地板
ID:739545 发表于 2021-10-13 09:24 | 只看该作者
追根刨底是好事,但是你要的结果是什么,如果只是看运行的状态,没必要搞那么细,最后什么结果都没有得到。即使是和实物联调,你会发现和proteus一样的现象.这是keil内部C语言反编译的结果。所以个人认为还是专注看重点
回复

使用道具 举报

5#
ID:722144 发表于 2021-10-13 16:09 | 只看该作者
单步和查看变量是调试的重要手段,对于小实验也许只看看结果就行,但是碰到稍微复杂一点的程序,少了这两样几乎就等于IDE报废了,感觉还是搞清楚哪里有问题比较好,即使这些问题解决不了
回复

使用道具 举报

6#
ID:969628 发表于 2021-10-19 23:21 来自手机 | 只看该作者
我也在今天尝试联调时遇上了同样的问题,看来单步执行只在proteus里才能正常工作,两个一起就不行了
回复

使用道具 举报

7#
ID:230742 发表于 2021-10-20 03:28 | 只看该作者
建议还是用可以仿真的芯片直接调试硬件吧。就算把proteus调好了,到实际做硬件的时候又会有问题。个人感觉proteus就是浪费时间。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表