首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

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

2012-04-16 
keil 中 1s的延时程序 在仿真中体现不出delay:mov r5,#50de1:mov r6,#100de2:mov r7,#100djnz r7,$djnz r6

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,不知道不同的版本这里的设置是否有不同,你自己注意看看。

热点排行