#include<16f877a.h>
#device *=16
#device adc =10
#use delay (clock=4M)
#fuses XT,NOWDT,NOPROTECT,NOLVP
#include <lcd420.c>
#use standard_io(B)
#use fast_io(D)

long rpm;
#int_timer1

void  TIMER1_isr(void)
{
   //*****************rpm*********************//
      rpm=get_timer0();//lee el valor del timer0 y lo asigna a rpm
      rpm=rpm*60;     //multiplica x 60 el valor de rpm 
      lcd_gotoxy(1,1);
      printf(lcd_putc,"     RPM  %lu      ",rpm); 
     
      set_timer0(0);  
      set_timer1(3036);   
  }

//**********************************************



void main()
{
set_tris_d(0b00000000);
output_d(0b00000000);
float temperatura;
float voltaje;
float presion;

//******************************************
  setup_adc_ports(AN0_AN1_AN3);//* entradas analogicas*//
  setup_adc (ADC_CLOCK_INTERNAL);
  setup_COUNTERS(RTCC_internal.rtcc_div_1);//* marca de division*//
 
//******************************************
   setup_timer_0(RTCC_EXT_L_TO_H|RTCC_DIV_1);
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
   enable_interrupts(INT_TIMER1);
   enable_interrupts(GLOBAL);

 
      
   
lcd_init();
while(true)
{
   
set_adc_channel(0);
delay_ms(1);
temperatura=(float)read_adc()/2;

//*********grados centigrados

//**********prueba voltaje**//

set_adc_channel(1);
delay_ms(1);
voltaje=(float)read_adc()/63;//*segun el num x el que se divida es el valor
//*que aparece en la pantalla que es 1023 / la tension deseada siendo 1023
//* el maximo


//******presion de aceite******//
set_adc_channel(2);
delay_ms(1);
presion=(float)read_adc()/5,68;


//**********si la temperatura es menor que500 y mayor que35
if(temperatura<=500&&temperatura>=90)
{
output_high(PIN_D2);
delay_ms(300);
output_low(PIN_D2);

lcd_gotoxy(1,2);                  //**********
printf(lcd_putc,"%f",temperatura);//**********
lcd_gotoxy(7,2);
printf(lcd_putc,"*C");
lcd_gotoxy(10,2);
printf(lcd_putc,"alta temp");
delay_ms(100);

}
//************ si la temp es menor que 35
else {



lcd_gotoxy(1,2);                  //**********
printf(lcd_putc,"Temp     %f *C ",temperatura);//**********
//lcd_gotoxy(7,2);
//printf(lcd_putc,"*C");
//lcd_gotoxy(10,2);
//printf(lcd_putc,"normal     ");
delay_ms(100);
}


if  (voltaje<=12)
{

lcd_gotoxy(1,3);
printf(lcd_putc,"Bateria  %f baja  ",voltaje);
//lcd_gotoxy(7,3);
//printf(lcd_putc,"bajo votaje");
delay_ms(300);
}

if (voltaje>12&&voltaje<14,8)
{

lcd_gotoxy(1,3);
printf(lcd_putc,"Bateria  %f volts    ",voltaje);
//lcd_gotoxy(7,3);
//printf(lcd_putc,"volts      ");
delay_ms(300);
}
if (voltaje<30&&voltaje>15)
{
lcd_gotoxy(1,3);
printf(lcd_putc,"Bateria  %f alto   ",voltaje);
delay_ms(300);
}
//
//*************************************



if  (presion<=12)
{
output_high(PIN_D1);
delay_ms(300);
output_low(PIN_D1);
lcd_gotoxy(1,4);
printf(lcd_putc,"baja presion  %f",presion);
//lcd_gotoxy(7,4);
//printf(lcd_putc,"baja presion   ");
delay_ms(100);
}

 else 
{

lcd_gotoxy(1,4);
printf(lcd_putc,"Pres acite %f lbs",presion);
//lcd_gotoxy(7,4);
//printf(lcd_putc,"presion normal ");
delay_ms(100);
//*************************************

}




}
}