找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

这个单片机程序delayms处延时时间为啥是5x50ms

查看数: 2770 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-10-15 20:57

正文摘要:

前两位59s循环,在delayms处为什么延时5x50ms?

回复

ID:390416 发表于 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的代码执行效率,是很有必要的!
“什么是单片机?咱玩的就是时间!”
ID:595380 发表于 2020-10-17 08:04
wulin 发表于 2020-10-16 14:02
楼主理解错误,delay(5);不是消影时间,是维持当前显示状态的时间。书中消隐代码也是错的,达不到消隐目的 ...

知道了,谢谢你
ID:213173 发表于 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,维持当前显示状态
}
ID:595380 发表于 2020-10-16 07:33
amandv 发表于 2020-10-15 23:00
看定义自程序是MS,参数是几就是几MS。

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

不是5x50ms,是5ms,前面理解错了,谢谢。那这个消影时间为什么是5ms而不是其他的数呢?
ID:414556 发表于 2020-10-15 23:00
看定义自程序是MS,参数是几就是几MS。

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

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表