打印
[技术问题解答]

快速写出“精确”的延时

[复制链接]
1000|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
西门扫雪|  楼主 | 2015-12-17 20:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家都知道精确延时在很多时候是很需要的,可是对于一直用c来写程序的人很难知道自己写的delay  到底延时多久。

              举个例子吧,例如i2c的延时,有时需要delay 4个us,那我只需要写出一个delay为1us的 然后再循环几次就差不多了。虽然循环会来带误差,只要循环次数少些,也不会太大的。

              如何呢确定一个1us的延时,大家可以写一个delay;
void  delay_us (unsigned short  n)

            {

               unsigned short  i;

                for(n;n>0n--)

                  for(i=0;i<10;i++);



            }

          接下来就是while(1)

        {

             LED = 0;

            delay_us(1);


             LED = 1;

            delay_us(1);


        }
然后用示波器测量出IO口高低电平的时间就好了,不断修改 for(i=0;i<10;i++);中的i<10  ,直到接近1us就好了

相关帖子

沙发
aliu_us| | 2016-3-25 21:31 | 只看该作者
楼主的方法符合楼主的需要,没有批评的意思。
只是偶然让我想起20多年前的事情,博大家一乐。

当时给中科院电工所调试打标机的下位机程序。
他们自己估计费了很大的劲也没弄好,出点钱让学生时代的我弄。
我也弄了好久,前后得有一个多月吧,最后发现最大的问题是上下位机
的通讯不稳定,造成一些稀奇古怪的事情。
原来是最初的人不想计算波特率,拿示波器比照上下位机的波形宽度一样
就当OKAY了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

286

帖子

1

粉丝