用CHMOS和CMOS工艺制成的单片机都属于低功耗单片机,都设置有等待方式和掉电方式两种节电运行功能。两种节电方式均可通过软件来选择运行,在这两种节电运行方式下,可大大降低单片机的功耗。使用单片机的等待方式,不仅可降低其功耗,还可用于增强其抗干扰能力。下面以80C31单片机为例说明使用其等待方式实现其抗干扰的原理及技术。
1.80C31的等待工作方式80C31单片机的等待方式是通过对其内部PCON(电源控制寄存器)中的IDL(等待方式位)进行编程来实现的。当IDL=1时,80C31进入等待工作方式,此时,送往CPU的时钟信号被封锁,CPU进入等待状态,其内部的SP、PC、PSw、ACC等寄存器以及各I/O口引脚的状态被完整地保留下来,CPU就像在睡眠一样,可称之为进入睡眠状态。此时,内部时钟信号仍继续供给中断系统、定时/计数器和串行口,它们仍可工作。退出睡眠状态的方法有中断退出和硬件复位退出两种。由于在睡眠状态时,中断系统仍可工作,因此,任何允许中断请求变为有效时,均使硬件对IDL位清零,从而退出睡眠状态,并开始执行中断服务程序,中断返回后,下一条要执行的指令正是原先置等待工作方式指令后的那条指令。
2.CPU抗干扰技术微机应用系统的抗干扰设计涉及到许多方面。此处只讨论CPU本身的抗干扰方法。在大多数情况下,干扰是通过三总线而作用到CPU上的。当{2PU受到干扰时,将不能按正常状态执行程序,从而引起混乱。人们研究和采用人工复位、掉电保护、指令冗余、软件陷阱、程序运行监视系统以及系统恢复等技术来实现CPU的抗干扰。根据上面对80C3l CPU等待工作方式的原理说明,当CPU进入睡眠状态时,不会对系统三总线上出现的干扰做出反应,因此可大大降低CPU对干扰的敏感程度,从而增强CPU的抗干扰能力。我们可将其称为CPU的睡眠抗干扰。
3.80C31 CPU的睡眠抗干扰技术通过对80C3l CPU进入和退出睡眠状态过程的分析,可采用下面两种方法实现睡眠抗干扰。
方法一 让CPU在没有正经工作时就睡觉,有活干时由中断系统唤醒它,干完活后接着睡觉。
对大多数单片机应用系统,CPU并非一直忙于干正经事情,很多情况下是在执行一些踏步等待指令或循环检查程序,此时CPU虽未干什么重要工作,但却是清醒的,很容易受干扰。如果安排其在没有正经工作时就睡觉,有活干时由中断系统唤醒它,:
干完活后接着睡觉,就可使其受干扰的威胁大大降低,并可降低其功耗。按照这种思想,设计软件时,可在主程序完成各种自检。
和初始化工作以后,用下列两条指令取代循环踏步指令:
LOOP: ORL PCON.#01HSJMP LOOP
把CPU要做的所有工作都安排在中断服务子程序中完成,把系统的监控程序放在定时中断子程序中。主程序在执行ORLPCON,#01H后,CPU便进入睡眠状态,此时程序计数器PC中的地址指向下一条指令SJMP LOOP。当需要CPU执行任务时,就通过中断系统将CPU唤醒,CPU响应中断,将PC的值压人堆栈,然后执行中断子程序本身,完成任务以后,执行一条开中断指令,确保CPU在睡眠之后仍能被唤醒,最后执行中断返回指令,CPU将执行主程序中的SJMP LOOP指令,又转回到ORLPCON,#01H这条指令上,执行完这条指令后,CPU便再次进入睡眠状态,如此周而复始。应将可能引起强烈干扰的I/O操作指令放在CPU进入睡眠状态前执行,即放在中断子程序的尾部。为确保CPU不过早被唤醒,以躲过强烈干扰的高峰,可临时关闭一些次要的中断,仅保留一个内部定时中断,定时尽可能长些,并作好标记。当下次定时中断响应后,根据标记,恢复系统的正常中断设置方式。
这种方法因CPU大部分时间处于睡眠状态,因此抗干扰性好,且可大大降低CPU的功耗,但可能涉及的中断类型多,需要多个中断源,控制较复杂。
方法二 使CPU平常处于正常工作状态,当执行了有可能引起较强烈干扰的指令后(例如,在一些大功率微机控制系统中,大电流和高电压设备的投入与切除都是由执行指令来完成的,将会引起强烈干扰),使其进入睡眠状态,保持睡眠一段时间,以避过干扰高峰。在进入睡眠状态前,设置好定时中断,在避过干扰高峰后,由定时中断将CPU唤醒,进入正常工作状态。
此种方法涉及的中断可少一些,控制较简单,但因CPU大部分时间处于正常工作状态,因此其抗干扰性和降低功耗的效果比前一种方法差。
4.结语利用低功耗单片机的等待工作方式,不仅可以降低CPU的功耗,还可增强CPU的抗干扰能力。本文论述的两种方法,虽各有优缺点,但只要合理使用,可使CPU的抗干扰能力大为增强,在设计单片机应用系统时可参考使用。