普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 4273|回复: 1

关于延时时间与机器周期,请教。

 关闭 [复制链接]

12

主题

46

帖子

160

积分

注册会员

Rank: 2

积分
160
发表于 2017-1-15 21:54:59 | 显示全部楼层 |阅读模式


void Delay10ms(void)   //误差 0us
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}
130*38=4940 个机器周期,就是10ms???  4940个机器周期,应该是  4940us  吧???


void Lcd1602_Delay1ms(uint c)   //误差 0us
{
    uchar a,b;
        for (; c>0; c--)
        {
                 for (b=199;b>0;b--)
                 {
                          for(a=1;a>0;a--);
                 }      
        }
           
}



200 个机器周期,就是1ms???  200 个机器周期,应该是  200us  吧???


我HC6800ES V2.0的板子,12MHZ的晶振,机器周期书上说是1us呀。
回复

使用道具 举报

20

主题

1344

帖子

8381

积分

论坛元老

Rank: 8Rank: 8

积分
8381
发表于 2017-1-16 07:29:30 | 显示全部楼层
这样计算是不正确的。
每条(注意,是每条语句)语句执行都是需要时间的,而且不是每条语句执行的时间就是一个机器周期。
如上程序,for要用时间,判断C>0也要时间,c--还要用时间,不是循环次数计算时间。可以用u4的调试功能,试验出具体是多少时间。还可以用STC下载软件中的专门项目提供的软件延时程序。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-26 16:52 , Processed in 0.105717 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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