在有些使用场合下,CPU只需间断性作业或对外部事情作出处理,平常处于待机状况。PIC16C5X单片机有一种节能办法,睡觉(SLEEP)办法,在这种状况中,振动驱动器停止作业, I/O口坚持履行SLEEP指令前的状况,然后大大下降体系功耗。因为PIC16C5X单片机无中止功用,要退出睡觉办法,只要两种办法:(1)“看门狗”(WDT)溢出。
(2)在复位脚加低电平,而使芯片复位。本文选用第二种办法。在图1给出的比如中,PIC16C5X平常处于睡觉态,当恣意一键按下时,将它从睡觉状况中唤醒,进行键盘处理。为便于阐明,在本例中,SW1按下时,点亮,如下图所示
绿灯;当SW2按下时,红灯亮。读者可按实际需要编写处理程序,参见图2。
在进入睡觉态前,将键扫描输出线SCAN1和SCAN2置为低电平。这样,当进入睡觉状后,无键按下时,电容C充电充沛,使PIC16C5X单片机复位脚坚持着高电平。一旦有键按下,C经过电阻R2或R3放电,使C上的电压快速下降(大约1ms),然后将复位脚拉为低电平,迫使PIC16C5X退出睡觉态而进入复位。复位时,SCAN1和SCAN2主动从输出态变为输入态(高阻态),C的放电回路被阻断,VCC经电阻R1对C充电至高电平。需注意的是,RC值要挑选恰当,使充放电周期小于P%&&&&&%16C5X的复位时刻(大约18ms)。更远远小于键按下的最小时刻(大约50–100ms)。复位完毕后,在程序中,每隔20ms将SCAN1和SCAN2置低电平一次以采样键值。为避免%&&&&&%放电时刻过长,将拉低,再次形成复位,每次扫描即SCAN1或SCAN2为低电平的时刻大约为10us。当键处理程序完成后,程序对键盘循环扫描直至键开释。然后将SCAN1和SCAN2输出置成低电平,偏重新进入睡觉状况。R4-R8首要用于避免C放电而可能对芯片形成的损伤。作业时序见图3所示。