延时仿真与实际不一样是什么问题
时间:10-02
整理:3721RD
点击:
程序是这样的:
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。谁能告诉我这个是什么问题啊。
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。谁能告诉我这个是什么问题啊。
仿真和实际肯定会是有误差的,仿真只是在理想的情况下的模拟,实际的元件势必有误差
首先谢谢您的回复。但是这个差的太大了,差五倍啊,另外我刚才试了下,要是用STC89C52RC仿真和实际的就差不多,但是用STC12C5A60S2就差很多,应该是Delay_ms(1000)是一秒,用前面那个时间误差不是很大,用后面那个的话要Delay_ms(5000)才1秒左右。能说一下为什么这两个芯片差这么多吗
呵呵,问题原来出在芯片上。89C52是12T的。60S2是1T。速度是89C52的12倍。请熟悉下指令周期与机器周期。两款的周期是不同的。
还有你编程的程序,用到了5*t .我总觉得这样写不好。t每增加1 。for循环增加5次。这样误差容易增大、
哦,非常感谢您的回复。
我只想说 马扎正解 (别扭)