电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> 单片机 >> 正文

单片机延时程序的设计思想

作者:佚名    文章来源:本站原创    点击数:    更新时间:2008-11-29

  单片机编程中,延时程序使用比较多,根据其延时方式不同可分为两类:
      一》阻塞式延时;
      二》非阻塞式延时;
     阻塞式延时,最常用,通常是在原地循环若干次,通过消耗机器周期来实现。此时,CPU再不能干别的事(CT0/CT1/CT2/串口仍可工作,延时可被中断暂时打断,会使延时加长),实时性比较差。
     非阻塞式延时是在延时期间CPU仍可干别的事,不会在哪儿等,实时性比较好。
     打个比方,你在环形操场跑步,相当于CPU的PC指针在主程序中循环(多数程序都是这样)。有个延时程序要求你等100毫秒把手举起来一下(用此表示CPU处理一个事件):当是阻塞式延时方式时,你就在原地踏步跑,等100毫秒后,你把手举起来一下再接着跑;当是非阻塞式延时方式时,你只是在一个地方放个秒表,并启动它,但你并不停下而是继续跑。每次跑到这个地方,你只要看一下秒表,看是否到100毫秒,若到了,你就把手举起来一下,若没到,你就继续沿跑道跑。
     从上边的例子可清楚看出,阻塞式延时,影响主程序循环一次的执行时间(影响实时性!);非阻塞式延时,基本不影响主程序循环周期(CPU只是多执行一两条指令判断一下时间是否到),但需要有个“秒表”。这个“秒表”可用一个定时器完成,并作为整个系统的时基,供需要时基的部分使用;如单片机控制系统的人机界面,显示闪烁时就需要。比如,将定时器0设定为5毫秒,由此可产生10毫秒,25毫秒,50毫秒,100毫秒,250毫秒和500毫秒等等时钟信号。
     现在分析影响延时精度的因素:
      影响阻塞式延时的因素有:
        1)设计程序时计算执行机器周期数的偏差;
        2)中断处理程序的额外时延;
      影响非阻塞式延时的因素有:
        1)所用定时器基本时基的精度(如上例:5毫秒);
        2)主程序的循环周期;这是随机的,比如,当看秒表时,时间还没到,
           在下次看表之前时间却到了,最坏情况是差一个主程序循环周期;
        3)其他中断处理程序的额外时延;这是随机的,比如,在看表之前时间已到,
          这时有个中断也被响应,就要加上中断处理程序的时间延迟;
      在实际使用中,我们根据具体情况选择不同的延时方式。
     这种非阻塞式延时的思想,我们成功用在许多单片机控制系统中,效果很好。

Tags:单片机,延时,程序,设计思想  
责任编辑:admin
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

还可以输入 200 个字
[ 查看全部 ] 网友评论
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询