#include <16F628A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES CPD //Data EEPROM Code Protected
#FUSES PROTECT //Code protected from reads
#FUSES MCLR
#FUSES HS
#use delay(clock=4MHz)
#DEFINE LEDESTADO PIN_A1
#DEFINE ENCLAVO PIN_A0
#DEFINE BTN PIN_B0
const unsigned long setpoint = 24576;
int A=0;
int1 FBYN1_PRESS = 0;
#INT_TIMER1
void TIMER1_isr(void)
{
set_timer1(setpoint);
if(--A == 0){
disable_interrupts(INT_TIMER1);
OUTPUT_LOW(ENCLAVO);
OUTPUT_LOW(LEDESTADO);
}
}
void main()
{
SET_TRIS_A(0b00000);
OUTPUT_LOW(ENCLAVO);
OUTPUT_LOW(LEDESTADO);
setup_timer_1(T1_EXTERNAL|T1_DIV_BY_8);
SETUP_CCP1(CCP_OFF);
SETUP_COMPARATOR(NC_NC_NC_NC);
enable_interrupts(GLOBAL);
while(TRUE)
{
if(!INPUT(BTN)){
OUTPUT_HIGH(ENCLAVO);
OUTPUT_HIGH(LEDESTADO);
A=2; // 20 segundos
SET_TIMER1(setpoint); //24576
enable_interrupts(INT_TIMER1);
while(!INPUT(BTN));
}
}
}