#include <16F690.h>
#device adc=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, BROWNOUT, NOCPD, INTRC_IO
#use delay(clock=8000000)
#define LCD_ENABLE_PIN PIN_C7
#define LCD_RS_PIN PIN_C6
#define LCD_RW_PIN PIN_C5
#define LCD_TYPE 2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
#include <lcd.c>

long int time, fordulat;

#int_TIMER0
void TIMER0_isr() { //================interrupt timer================
time++;
if(time>1953) {
set_timer0(0); 
time=0;
fordulat=0;
}
}

#int_EXT
void EXT_isr() { //==============interrupt fordulatmérés===============
fordulat=(6000000/(512*time));
set_timer0(0); 
time=0;
}

void main() {

int a, b, c, d, i; //================deklaráció========================
float homerseklet;

setup_oscillator(OSC_8MHZ);
set_tris_a(0b00000100);

setup_timer_0(T0_INTERNAL|T0_DIV_16|T0_8_BIT); //======interrupt konfig========
 enable_interrupts(INT_TIMER0); //TMR0 megszakítás be
 enable_interrupts(GLOBAL); //GIE bekapcsol
 ext_int_edge(H_TO_L); //Magasról alacsonyra - Lefutó él
 enable_interrupts(INT_EXT); //RA2 megszakítás be

lcd_init(); //=====================lcd feliratozás======================
lcd_gotoxy(1,1);
lcd_putc(" Hello Michael!");
delay_ms(2000);
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("henger:");
lcd_gotoxy(1,2);
lcd_putc("fordulat:");

set_tris_c(0b00000011); //==================ADC konfig===========================
setup_adc_ports(sAN4|sAN5|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);

while(1){  //=================fő ciklus=====================

set_adc_channel(4); //================ADC konverzió hőmérséklet=============
delay_ms(10); 
homerseklet=read_adc();
delay_ms(700);
homerseklet=homerseklet*(5000.0000/1023)-500;

if(homerseklet>320) //=================magas hőmérséklet riasztás============
for(i=0;i<255;i++){
output_high(PIN_C2);
delay_us(450);
output_low(PIN_C2);
delay_us(50);}

a=b=c=0; //=========================hőmérséklet kiírás===================
i=1;

while(i){ 
if(homerseklet>=100) { a++; homerseklet-=100;  }
else 
if(homerseklet>=10) { b++; homerseklet-=10; }
else 
if(homerseklet>=1) { c++; homerseklet-=1; }
else i=0;
}
lcd_gotoxy(9,1);
lcd_putc(a+48);
lcd_putc(b+48);
lcd_putc(".");
lcd_putc(c+48);
lcd_putc(0xDF);
lcd_putc("C");

a=b=c=d=0; //=========================fordulat kiírás===================
i=1;

if(fordulat>8000) fordulat=8000;

while(i){ 
if(fordulat>=1000) { a++; fordulat-=1000;  }
else 
if(fordulat>=100) { b++; fordulat-=100; }
else 
if(fordulat>=10) { c++; fordulat-=10; }
else 
if(fordulat>=1) { d++; fordulat-=1; }
else i=0;
}

lcd_gotoxy(11,2);
lcd_putc(a+48);
lcd_putc(b+48);
lcd_putc(c+48);
lcd_putc(d+48);



}//WHILE
}//MAIN
   
