Код: Выделить всё
#pragma config IOSCFS = 8MHZ // Internal Oscillator Frequency Select bit (8 MHz)
#pragma config MCPU = OFF // Master Clear Pull-up Enable bit (Pull-up disabled)
#pragma config WDTE = ON // Watchdog Timer Enable bit (WDT enabled)
#pragma config CP = OFF // Code protection bit (Code protection off)
#pragma config MCLRE = ON // GP3/MCLR Pin Function Select bit (GP3/MCLR pin function is MCLR)
#include <xc.h>
#define _XTAL_FREQ 8000000
#define OUT GP2
void main(void)
{
ADCON0 = 0b01000001; //вкл АЦП, канал А0
OPTION = 0b00111111; //тактирование сторожевого таймера, предделитель 1:128 (2.3с)
TRIS = 0b11111011; //GP2 выход, остальные вход
GPIO = 0b00000000; //обнулить
while(1)
{
CLRWDT(); //сброс сторожевого таймера
ADCON0 = 0b01000001;//включение АЦП, после сна выключается
GO_nDONE = 1; //начать преобразование
while(GO_nDONE); //ждать, пока АЦП преобразует
if(ADRES < 167) //если ниже 5.3В, АКБ выкл
{
OUT = 0;
}
if(ADRES > 189) //если выше 6В, АКБ вкл
{
OUT = 1;
}
SLEEP(); //заснуть
NOP();
}
}
Применять другой контроллер не предлагать
