#include <16F690.h>
#device adc=10
#FUSES HS, PUT, NOPROTECT, NOBROWNOUT, NOWDT, NOCPD
#use delay(clock=20000000)
#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_C1
#define LCD_DATA5 PIN_C2
#define LCD_DATA6 PIN_C3
#define LCD_DATA7 PIN_C4
#include <lcd.c>

long int time=0, fordulatpill=0;

#int_TIMER0
void TIMER0_isr() { //================interrupt timer================
time++;
if(time>19530) {
set_timer0(0); 
time=0;
fordulatpill=0;
}
}

#int_EXT
void EXT_isr() { //==============interrupt fordulatmérés===============
fordulatpill=(6000000/(51*time));
set_timer0(0); 
time=0;
}

void main() {

int a, b, c, d, i; //================deklaráció========================
float homerseklet; 
long int fordulat;

//setup_wdt(WDT_576MS|WDT_TIMES_64); 
setup_oscillator(OSC_NORMAL);
set_tris_a(0b00000100);
set_tris_b(0b00000000);

setup_timer_0(T0_INTERNAL|T0_DIV_4|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======================
if(NORMAL_POWER_UP==RESTART_CAUSE()){
lcd_gotoxy(1,1);
lcd_putc("CSONTOS PRODUCT");
restart_wdt();
for(i=0;i<100;i++){
delay_ms(30);
restart_wdt();
}
}

lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("henger:");
lcd_gotoxy(1,2);
lcd_putc("fordulat:");

set_tris_c(0b00000001); //==================ADC konfig===========================
setup_adc_ports(sAN4|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_8);

while(1){  //=================fő ciklus=====================

/*for(i=0;i<100;i++){ 
delay_ms(5);
restart_wdt();
}*/

homerseklet=0; //================ADC konverzió hőmérséklet=============
set_adc_channel(4); 
delay_ms(10); 
for(i=0;i<50;i++){ 
delay_ms(5);
homerseklet+=read_adc();
restart_wdt();
}
homerseklet=homerseklet/50.0;
homerseklet=homerseklet*(4.887585)-500;

/*if(homerseklet>1100) //=================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);
//restart_wdt();
}*/


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");
lcd_putc("  ");

a=b=c=d=0; //=========================fordulat kiírás===================
i=1;

for(i=0;i<50;i++){ 
delay_ms(5);
if(fordulatpill>fordulat) fordulat=fordulatpill;
restart_wdt();
}

if(fordulat>9999) fordulat=9999;

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(9,2);
lcd_putc(": ");
lcd_putc(a+48);
lcd_putc(b+48);
lcd_putc(c+48);
lcd_putc(d+48);
lcd_putc("  ");

restart_wdt();

}//WHILE
}//MAIN
   
