keil模拟单片机延时汇编程序执行,显示的运行时间为什么和理论不一样?

如题所述

仿真模拟 与 电脑速度有关,不可能达到和理论不一样,
只有 在 实际单片机上 运行,才会与 计算理论值一致。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-25
一,晶振的设置是否和你预期的一样
二,你这是应该C语言的程序,不是汇编的,
三,要看实际的运行时间,那么要反汇编就可以看清楚了追问

晶振设置了12兆,程序也是汇编的,如下:
DELAY:
MOV R2,#20
D:
MOV R3,#248
DJNZ R3,$
DJNZ R2,D
END
理论大概10.002毫秒,仿真是9.981毫秒

追答

由于你的程序到此结束了,1+(248*2+2+1)*20,
如果是函数调用的话,前后还要各加上2个指令周期。

第2个回答  2013-01-25
“理论大概10.002毫秒,仿真是9.981毫秒”

那是你理论算错了。
应当是
(1+2×248+2)×20+1 = 9981 个指令周期

对于12MHz晶振,一个指令周期1μs,因此总共9.981ms本回答被提问者和网友采纳
第3个回答  2013-01-25
先看看keil的仿真设置里晶振的频率设置对了没有