#int_TIMER0
void TIMER0_isr(void)
{
delay_ms(30);
contador=1;
set_timer0(255);
}
#int_EXT
void Start_isr(void) //interrupción de Marcha
{
delay_ms(30);
if (uni!=0 || cen!=0)
{delay_ms(30); Stop=0; Marcha();}
}
#int_RB
int8 Pulsadores_isr()
{
if (CENTENAS==1) //Pulsador incremental CENTENAS
{delay_ms(400); cen++;}
if (UNIDADES==1) //Pulsador incremental UNIDADES
{delay_ms(400); uni++;}
//Son los encargados de que los pulsadores de entrada
//Lleven el conteo de preselección
if (uni>9) {dec++; uni=0;} //Si unidades >9, incrementa centenas y pon uni a 0
if (dec>9) dec=0; //Si decenas >9, pon nuevamente a 0
if (cen>9) {mil++; cen=0;} //Lo mismo pero con centenas y millar
if (mil>9) mil=0;
uni2=0; dec2=0; cen2=0; mil2=0;
}
void main()
{
set_tris_a(0b010000);
set_tris_b(0b11110001);
lcd_init();
setup_timer_0(RTCC_EXT_L_TO_H|RTCC_DIV_1);
ext_int_edge(L_TO_H);
enable_interrupts(int_timer0);
enable_interrupts(int_EXT);
enable_interrupts(int_RB);
enable_interrupts(global);
clear_interrupt(int_RB);
clear_interrupt(int_EXT);
clear_interrupt(int_timer0);
reset();
lcd_init();
inicial();
while (true)
{
lcd_gotoxy(1,1); lcd_putc("INTRODUCE EL N");
lcd_gotoxy(15,1); lcd_putc(223);
lcd_gotoxy(1,2); lcd_putc("DE ESPIRAS");
lcd_gotoxy
(12,2); printf(lcd_putc
,"%u",mil
); lcd_gotoxy
(13,2); printf(lcd_putc
,"%u",cen
); lcd_gotoxy
(14,2); printf(lcd_putc
,"%u",dec
); lcd_gotoxy
(15,2); printf(lcd_putc
,"%u",uni
);
}
}
void marcha()
{
lcd_putc("\f");
while(true){
lcd_gotoxy
(1,1); printf(lcd_putc
,"BOBINANDO....."); lcd_gotoxy(1,2); lcd_putc("ESPIRAS N");
lcd_gotoxy(10,2); lcd_putc(223);
lcd_gotoxy
(12,2); printf(lcd_putc
,"%u",mil2
); lcd_gotoxy
(13,2); printf(lcd_putc
,"%u",cen2
); lcd_gotoxy
(14,2); printf(lcd_putc
,"%u",dec2
); lcd_gotoxy
(15,2); printf(lcd_putc
,"%u",uni2
);
if (contador==1) {uni2++; contador=0;}
if (uni2>9) {dec2++; uni2=0;}
if (dec2>9) {cen2++; dec2=0;}
if (cen2>9) {mil2++; cen2=0;}
if (mil2==mil && dec2==dec &&
cen2==cen && uni2==uni) { lcd_putc("\f"); break; fin();}
}
}