标题: 这个单片机程序delayms处延时时间为啥是5x50ms [打印本页]

作者: 51_users    时间: 2020-10-15 20:57
标题: 这个单片机程序delayms处延时时间为啥是5x50ms
前两位59s循环,在delayms处为什么延时5x50ms?

16027665322945117623004583252803.jpg (660.94 KB, 下载次数: 111)

16027665322945117623004583252803.jpg

16027665694567552653980595665865.jpg (842.39 KB, 下载次数: 98)

16027665694567552653980595665865.jpg

作者: amandv    时间: 2020-10-15 23:00
看定义自程序是MS,参数是几就是几MS。

前两位59s循环是在定时器完成的,你的书写得很明白。
作者: 51_users    时间: 2020-10-16 07:33
amandv 发表于 2020-10-15 23:00
看定义自程序是MS,参数是几就是几MS。

前两位59s循环是在定时器完成的,你的书写得很明白。

不是5x50ms,是5ms,前面理解错了,谢谢。那这个消影时间为什么是5ms而不是其他的数呢?
作者: wulin    时间: 2020-10-16 14:02
楼主理解错误,delay(5);不是消影时间,是维持当前显示状态的时间。书中消隐代码也是错的,达不到消隐目的。正确写法如下:
void display(uchar shi, uchar ge)
{
        P0=0x00;                        //送段消隐
        dula=1;                                //段码锁存
        dula=0;       
        P0=0xfe;                        //送位码
        wela=0;                                //位码锁存
        wela=1;
        P0=table[shi];                //送十位段码
        dula=1;                                //段码锁存
        dula=0;       
        delay(5);                        //延时5ms,维持当前显示状态
       
        P0=0x00;                        //送段消隐
        dula=1;                                //段码锁存
        dula=0;       
        P0=0xfd;                        //送位码
        wela=1;                                //位码锁存
        wela=0;
        P0=table[ge];                //送个位段码
        dula=1;                                //位码锁存
        dula=0;       
        delay(5);                        //延时5ms,维持当前显示状态
}
作者: 51_users    时间: 2020-10-17 08:04
wulin 发表于 2020-10-16 14:02
楼主理解错误,delay(5);不是消影时间,是维持当前显示状态的时间。书中消隐代码也是错的,达不到消隐目的 ...

知道了,谢谢你
作者: 人人学会单片机    时间: 2021-3-27 09:22
1、假设在同一个硬件上做测试,单片机CPU指令周期是一致的。那么 变量i、K,存放在data跟存放在XDATA,读写速度能一样?精确计算有意义吗?
2、假设都存放在data,延迟1ms只需要char类型的变量即可完成,但是,延迟100ms必须16位变量,那么执行时间还能照着公式去套算?
3、假设上述条件都一样,计算好的延迟时间是1ms并且误差1%,打开中断之后,延迟时间变成了5毫秒了。误差500%了,精确计算有意义吗?
4、假设上述条件不影响延迟时间,那么,编译器呢?谁敢说编译器不同的优化等级不影响delay的延迟时间?
5、还有硬件不同的情况,就需要重新计算了。比如晶振频率不同,CPU内核速度不同,STC8H单片机就比STC15快了很多了比89系列快了十几倍了。

所以,不要去精确的计算delay 延迟了多少时间,毕竟单片机的运行情况有很多变数。学会提高CPU的代码执行效率,是很有必要的!
“什么是单片机?咱玩的就是时间!”




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1