Гудвинволшебник (28.12.2014 22:26, просмотров: 854) ответил Крок на Только извращенцы могут писать для пиков программы длинней одной страницы. Это же ПИК, а не пеньтиум!
Посему лучший контроллер у некрочип PIC10F200!
#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);
}
}
}