c语言延时函数_金橙智能 | 51单片机延时函数精讲

点击蓝字关注我们

当我们对c语言和汇编有一定了解的时候,就会知道在用到对时间精度比较高的程序时,用c语言显然是有些麻烦的(而且实现起来也不容易),所以此时一般都是用汇编程序来写。小橙同学通过在c语言中嵌入汇编的方式,总结了51的精确延时函数,今天分享给大家。

12MHz晶振的机器周期为1us,所以执行一条单周期指令所需要的时间就是1us,比如空指令NOP指令。当我们需要延时1us的时候,就可以调用_nop_();函数,是c函数,相当于一个nop指令。使用时要包含intrins.h头文件。

6a54d2c09a8339d1e7e269227b10d164.png

当我们需要延时5us时候,可以写一个延时函数,delay_5us()函数。

1cce574a671daf0430c0108f7c7a3f91.png

因为调用函数需要消耗一个指令周期,该指令消耗2个周期(2us),函数执行完毕之后需要返回主函数,需要一个返回指令,该指令消耗2个周期(2us),再加一个延时函数,就是5us。

如果我们要写10us的延时,以此类推,只需要

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值