Оно и на HT "ЦЭ" неплохо дышит в 512 байтах :)
//my_cruise
#include <pic.h>
#include <htc.h>
__CONFIG(MCLRDIS & WDTDIS);
#define RES 0b00001110
#define ON 0b00001101
#define PLUS 0b00001011
#define ALL_OFF 0b00001111
#define TRESH 20000 // 1 сек
static volatile unsigned int cnt; // @ 0x10;
void delay(unsigned int value)
{
char i;
while(value > 0)
{
for (i=0;i<97;i++);
value--;
}
}
void main(void)
{
OSCCAL=0b10000000; // минимальная частота для снижения потребления
TRIS = 0b00001111; // настраиваем линии GP3, GP0, GP1, GP2 на вход
OPTION=0b11000000; // выключим всякие wake up
CMCON0=0b01000000; // отключаем компаратор
GPIO=0x00; // выходы = 0
//GPIO=0x0f; // выходы = 1 // для отладки
delay(5000); // после подачи питания (включения зажигания) ждем 5 сек;
TRIS = ON; // кнопка ON
delay(150); // 150 мс
TRIS = ALL_OFF; //
while (1)
{
if (GP3==0)
{
delay(10); // 10 мс // проверка на дребезг
if (GP3!=0) continue;
cnt=0;
while ((GP3==0) && (cnt< TRESH)) cnt++; // подсчитаем время нажатия кнопки
if (cnt < TRESH) TRIS = RES;
else TRIS = PLUS;
delay(150);
TRIS = ALL_OFF;
while (GP3==0); // если кнопка не отжата ждем..
delay(10);
}
}
}