|
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表面一套,背里一套,表面的乱七八糟,背里的很正常,求教各位大佬帮忙验证和解释一下该怎么办才能解决这些问题。
|
|