keil c语言 延迟程序,Keil C51程序设计中几种精确延时方法

本文介绍了在Keil C51环境下,针对51单片机如何实现精确延时的方法。文章讨论了使用定时器/计数器和软件延时的策略,包括中断方式的延时、软件延时函数的编写,以及如何通过示波器、反汇编工具和性能分析器来计算和优化延时时间。内容详细解析了各种延时技巧,对单片机开发人员具有实践指导意义。
摘要由CSDN通过智能技术生成

前几天时间在做一个基于51单片机开发板的等精度频率计,用LCD1602液晶显示的,晶振是22.1184MHZ,用得是测频率法,目的是想做到能够测试0--900KHZ的信号。

液晶显示部分花了我好几天才搞定!最后终于能够测量来自信号发生器的脉冲信号啦,可是发现在测高频部分误差很大,精度不高,感觉很不满意,但是估计问题是出在延时函数上面,我是用定时器延时的,地球人都知道用C51语言语言啥都好,就是有个生下来就有的缺点:延时不精确,不好控制,加之本人还处于菜鸟阶段,结果调试延时函数就快把我搞死啦,至少搞了一天,我把睡觉吃饭的时间还都给精简啦!差点崩溃!!

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png就自爱这个时候我抱着一丝希望去网上搜搜,看看有没有那位大哥有调试延时函数的锦囊妙计,还算走运,找到了一篇很经典的文章,现在本人就将它拿出来同大家分享一下,希望碰到同样问题的单片机爱好者能够看到,少走一些弯路!

a4c26d1e5885305701be709a3d33442f.png

Keil C51程序设计中几种精确延时方法

单片机因具有体积小、功能强、成本低以及便于实现分布式控制而有非常广泛的应用领域[1]。单片机开发者在编制各种应用程序时经常会遇到实现精确延时的问题,比如按键去抖、数据传输等操作都要在程序中插入一段或几段延时,时间从几十微秒到几秒。有时还要求有很高的精度,如使用单总线芯片DS18B20时,允许误差范围在十几微秒以内[2],否则,芯片无法工作。用51汇编语言写程序时,这种问题很容易得到解决,而目前开发嵌入式系统软件的主流工具为C语言,用C51写延时程序时需要一些技巧。

实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。

1 使用定时器/计数器实现精确延时

单片机系统一般常选用11.059 2 MHz、12 MH

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值