#include <16f628.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay (clock=4000000)
#include <lcd.c>
#use standard_io(a)
INT counter=0;
float rpm;
#INT_timer1
void timer1_isr(VOID)
{
//set_tris_A(11111111);
counter = get_timer0 () ;
IF (input (PIN_A2)) /* para motores de 8 cilindros*/
{
rpm = counter * 4; /*rpm = counter * 2.0 * 120; */
}
IF (input (PIN_A3)) /* para motores de 6 cilindros*/
{
rpm = counter * 3; /*rpm = counter * 2.0 * 120; */
}
IF (input (PIN_A4)) /*para motores de 4 cilindros*/
{
rpm = counter * 2; /*rpm=counter * 2.0 * 120; */
}
lcd_putc ("\f RPM\n");
lcd_gotoxy (5, 2);
IF (input (PIN_A0) )
printf (lcd_putc
, "izq %5.0f", rpm
);
IF (input (PIN_A1) )
printf (lcd_putc
, "der %5.0f", rpm
);
IF ( ! input (PIN_A0)& ! input (PIN_A1) )
printf (lcd_putc
, "\fCONECTAR ENTRADA\n DE GIRO");
delay_ms (250) ;
set_timer0 (0) ;
set_timer1 (3036) ;
}
void inicio(VOID)
{
INT i, j;
lcd_putc ("\f Tacometro\n Pirata");
delay_ms (3000) ;
lcd_putc ("\f Laboratorio");
lcd_gotoxy (1, 2) ;
lcd_putc (" Electronica A");
delay_ms (1500); lcd_putc ("\f") ;
FOR (j = 0; j < 4; j++)
{
lcd_gotoxy (5, 1) ;
lcd_putc ("CARGANDO") ;
FOR (i = 5; i < 13; i++)
{
lcd_gotoxy (i, 2) ;
lcd_putc (" - "); delay_ms (75) ;
}
lcd_putc ("\f") ;
}
lcd_putc ("\f") ;
}
void main(VOID)
{
setup_timer_0(rtcc_ext_l_to_h|rtcc_div_2);
setup_timer_1(t1_internal|t1_div_by_8);
setup_ccp1(CCP_OFF);
setup_comparator(NC_NC_NC_NC);
enable_interrupts(INT_timer1);
enable_interrupts(global);
set_timer0(0);
set_timer1(3036);
lcd_init();
inicio();
WHILE(true);
}