延时仿真与实际不一样是什么问题

2019-07-15 22:55发布

程序是这样的:
void Delay_ms(unsigned int t)          
{
        unsigned char j;
        unsigned int i;
        for(i = 5*t;i > 0;i --)
        for(j = 90;j > 0;j --);

}

这是1ms延时程序,软件仿真时时间是对的,但是下载到板上时间就很短了,Delay_ms(5000)应该是5秒的,我用秒表测实际才1秒多一小点。仿真频率和板上的晶振是一样的11.0592MHZ。谁能告诉我这个是什么问题啊。
QQ图片20130819210731.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
skyman1991
1楼-- · 2019-07-16 01:49
仿真和实际肯定会是有误差的,仿真只是在理想的情况下的模拟,实际的元件势必有误差
kunwen2013
2楼-- · 2019-07-16 05:25
首先谢谢您的回复。。。但是这个差的太大了,差五倍啊,另外我刚才试了下,要是用STC89C52RC仿真和实际的就差不多,但是用STC12C5A60S2就差很多,应该是Delay_ms(1000)是一秒,用前面那个时间误差不是很大,用后面那个的话要Delay_ms(5000)才1秒左右。能说一下为什么这两个芯片差这么多吗
冰葑世纪
3楼-- · 2019-07-16 06:19
kunwen2013 发表于 2013-8-19 21:36
首先谢谢您的回复。。。但是这个差的太大了,差五倍啊,另外我刚才试了下,要是用STC89C52RC仿真和实际的就 ...

呵呵,问题原来出在芯片上。89C52是12T的。60S2是1T。速度是89C52的12倍。请熟悉下指令周期与机器周期。两款的周期是不同的。
冰葑世纪
4楼-- · 2019-07-16 06:33
还有你编程的程序,用到了5*t .我总觉得这样写不好。t每增加1 。for循环增加5次。这样误差容易增大、
kunwen2013
5楼-- · 2019-07-16 10:01
 精彩回答 2  元偷偷看……
玉疏
6楼-- · 2019-07-16 15:51
我只想说 马扎正解 (别扭)

一周热门 更多>