当前位置: 代码迷 >> 单片机 >> keil 中 1s的延时程序 在仿真中体现不出,该怎么解决
  详细解决方案

keil 中 1s的延时程序 在仿真中体现不出,该怎么解决

热度:102   发布时间:2016-04-28 16:08:28.0
keil 中 1s的延时程序 在仿真中体现不出
delay:mov r5,#50
de1 :mov r6,#100
de2 :mov r7,#100
  djnz r7,$
  djnz r6,de2
  djnz r5,de1
  ret
按计算是1s的延时,但是在keil仿真时 小灯闪烁得很快
  希望解决

------解决方案--------------------
探讨
仿真使用电脑的cpu来算,当然快了。
这个演示程序使用指令的计算时间来延时,cpu的计算速度越快,延时越小

------解决方案--------------------
keil软仿真需要设置单片机用的晶振频率的。你算1s时用的是什么频率?
另外,可以在仿真时看keil左边栏,有一个时间值,是从启动到当前pc所经历的时间。
你可以用单步调试,执行到这段延时的第一步,然后将光标定位到延时程序结束后的一条指令,然后用“运行到光标所在行”的方式,直接运行完这一段延时,再看那个时间值,算一下差值就知道实际用了多长时间。
------解决方案--------------------
ding
------解决方案--------------------
这个问题很简单啦。
在keil中,打开菜单project\Options for Target "Target 1"
然后在弹出的对话框的debug属性页左上方勾上"Limit Speed to Real-Time"前的单选框。

呵呵,虽然很简单,但是最开始我也被这个问题弄的头疼过。
对了,我的keil是v8.05,不知道不同的版本这里的设置是否有不同,你自己注意看看。
  相关解决方案