bokee.net

电子/电气工程师博客

正文 更多文章

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

                        单片机延时程序的设计思想
      
                                  王佰营      徐丽红

                           wbymcs51.blog.bokee.net

     单片机编程中,延时程序使用比较多,根据其延时方式不同可分为两类:
      一》阻塞式延时;
      二》非阻塞式延时;
     阻塞式延时,最常用,通常是在原地循环若干次,通过消耗机器周期来实现。此时,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)其他中断处理程序的额外时延;这是随机的,比如,在看表之前时间已到,
          这时有个中断也被响应,就要加上中断处理程序的时间延迟;
      在实际使用中,我们根据具体情况选择不同的延时方式。
     这种非阻塞式延时的思想,我们成功用在许多单片机控制系统中,效果很好。

    关键词:单片机 MCS51 延时 设计思想

 

分享到:

上一篇:CString成员函数使用实例

下一篇:X5045 汇编语言版驱动程序

评论 (1条) 发表评论

  • 乐天 (游客) : 如何用单片机延时300微秒

    2008-01-23 13:41

发表评论
验证码