C51精确延时程序

本文详细探讨了如何在C51编程环境中实现精确的延时程序,结合汇编语言,深入讲解了延时函数的工作原理和优化技巧,为嵌入式系统开发提供了实用的指导。
摘要由CSDN通过智能技术生成

void delay2(unsigned char i)
       {
         while(--i);
         }
为最佳方法。


分析:假设外挂12M(之后都是在这基础上讨论)
我编译了下,传了些参数,并看了汇编代码,观察记录了下面的数据:
delay2(0):延时518us          518-2*256=6
delay2(1):延时7us
delay2(10):延时25us            25-20=5
delay2(20):延时45us            45-40=5
delay2(100):延时205us          205-200=5
delay2(200):延时405us          405-400=5

见上可得可调度为2us,而最大误差为6us。
精度是很高了!

但这个程序的最大延时是为518us 显然不
能满足实际需要,因为很多时候需要延迟比较长的时间。


那么,接下来讨论将t分配为两个字节,即uint型的时候,会出现什么情况。

void delay8(uint t)
{
while(--t);
}
我编译了下,传了些参数,并看了汇编代码,观察记录了下面的数据:

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yantaoliu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值