关于PIC单片机的“休眠”和“唤醒”

2020-02-06 10:13发布

关于PIC单片机的“休眠”和“唤醒”自己还是不太会用。希望各位大虾能给点指导。
现在主要是用PIC12F635单片机。用其中一个引脚GP0做为按键输入,其中一个引脚GP4作为输出。要达到的效果就是:平时都是“休眠”状态,当有按键按下时,单片机立即“唤醒”,GP4开始发出某段波形。就是想问一问这“休眠”与“唤醒”,具体怎么设置,希望有朋友写一小段用C的休眠和唤醒程序。让我能入个门。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
24条回答
millwood0
2020-02-07 17:38
I am not going to write the code for you but here is an example where the pic wakes up from a wdt reset and retains its value.

============code====================

#include <htc.h>
#include "gpio.h"

__CONFIG(MCLRDIS & WDTEN & BORDIS & PWRTEN & INTIO);

#define LED_PORT                GPIO
#define LED_DDR                        TRISIO
#define LED_PINs                0xff

void mcu_init(void) {
        ANSEL=0x00;                        //all pins digital
        CMCON=0x07;                        //analog comparators off
        PSA=1;                                                                                //prescaller to wdt
//        PS2=1, PS1=1, PS0=1;                                                //prescaler to 1<<0b111. time-out period=18ms*128=2s
        PS2=0, PS1=1, PS0=1;                                                //prescaler to 1<<0b011. time-out period=18ms*8=160ms
        IO_CLR(LED_PORT, LED_PINs);        //led_pins low
        IO_OUT(LED_DDR, LED_PINs);
}

void
main(void)
{
        static unsigned char wdt_counter=0;
       
        mcu_init();
        while (1){
                //TODO Auto-generated main function
                if (!TO) {
                        //CLRWDT();                        //clear wdt status
                        wdt_counter++;                //if wdt reset
                        LED_PORT = wdt_counter;
                        while (1);                        //wait for the next wdt
                }
                //do something here
        }
}
==============end code==========================

一周热门 更多>