/*	FŰTÉS AUTOMATIZÁLÁS
					
	Leidgeb Dániel	*/


/* Header fájlok betöltése */

#include "stdio.h"
#include "p18f6722.h"
#include "delays.h"
#include "math.h"
#include "menu.h"
#include "6722.h"
#include "lcd.h"
#include "clock.h"
#define USE_OR_MASKS
#define RD16_ON 0x80
#include "timers.h"




/* Változók Deklarálása */

int l;


/* Függvény az ADC Modul inicializálására */

void ADCInit(){ 

	ADCON2=0b10001010;
}

/* Függvény a paraméterként megadott ADC csatorna "olvasására" */

unsigned int ADCRead(unsigned char ch)
{
   if(ch>13) return 0;  //Nem valós csatorna
   ADCON0=0x00;
   ADCON0=(ch<<2);   			//ADC csatorna kiválasztása
   ADCON0bits.ADON=1;  			//ADC modul bekapcs.
   ADCON0bits.GO=1;				//Konvertálás megkezdése
   while(ADCON0bits.NOT_DONE); //Várakozás a konvertálás befejezésére
   ADCON0bits.ADON=0;  			//ADC modul kikapcs.
   return ADRES;
}

/* Függvény a hőmérséklet kiiratására */

void temp_read_write_to_lcd (void) {
	
	unsigned int val; 				//ADC érték
	unsigned int temp_value;    	//Hőmérséklet érték

	val = ADCRead(0);				//0-ás csatorna olvasása (RA0)
	temp_value = ceil(val*0.48876); //Celsiussá konvertálás
	l = temp_value;	
	lcd8_putnumber(temp_value);		//temp_value kiírása lcd-re
	lcd8_putc(space);				//Szóköz beszúrása
	lcd8_putc(celsius_sign);		//"C" karakter beszúrása

	Delay1KTCYx(1000);				//Várunk egy kicsit...

}




        volatile unsigned char delay;	///< számláló a késletetéshez

//--Timer2 interrupt kiszolgálása
#pragma interrupt hi_isr
void hi_isr() {
	clock();
}

#pragma interruptlow lo_isr
void lo_isr() {
    if (PIR1bits.TMR1IF && PIE1bits.TMR1IE) {
        
        clock();

        lcd8_write_command(0xD4);// Kurzor a negyedik sorba
for(j=0; j<4; j++) {
		if(tomb4[j]!=0)
        lcd8_putc(tomb4[j]);	//"tömb4" tömb karaktereinek kiírása (amég van)
		else break;
}

temp_read_write_to_lcd();

for(j=0; j<12; j++) {
		if(tomb5[j]!=0)
        lcd8_putc(tomb5[j]);	//"tömb5" tömb karaktereinek kiírása (amég van)
		else break;
	}
        PIR1bits.TMR1IF=0;   	//Timer1 interrupt jelz?bitjének törlése
    }
}
/***************************/
/*** ITT KEZDŐDIK A MAIN ***/
/***************************/

void main(void){
 
    mInitAllLEDs();                    // LED-ek inicializálása
    mInitALLSwitch();                    // Gombok inicializálása
    lcd8_init();                       // Az LCD inicializálása
    lcd_cgram_init();  
	TRISC = 0b11111111;
	ADCInit();			//ADC inicializálása
//-- A megszakítási rendszer inicializálása -----------------
    RCONbits.IPEN=1;   		//Kétszint? megszakítási mód beállítása
    INTCONbits.GIEH=1;   	//A magas prioritású interrupt engedélyezése
    INTCONbits.GIE=1;   	//Az alacsony prioritású interrupt engedélyezése
   

 T1CON = RD16_ON    		//TMR1 16-bites írás/olvasás mód
            | T1_PS_1_1   	//Nincs el?osztás
            | T1_OSC1EN_ON   	//T1OSC bekapcsolása
            | T1_SYNC_EXT_ON  	//Küls? bemen?jel szinkronizálása
            | T1_SOURCE_EXT; 	//Küls? jelforrás lépteti a TMR1 számlálót
    TMR1H=0;               	//TMR1 törlése
    TMR1L=0;
    IPR1bits.TMR1IP=0;   	//Timer1 megszakítás alacsony prioritású legyen
    PIR1bits.TMR1IF=0;   	//Timer1 interrupt jelz?bitjének törlése
    PIE1bits.TMR1IE=1;   	//Timer1 interrupt engedélyezése
    T1CONbits.TMR1ON = 1;    	//Elindítja Timer1-et		//Az alacsony prioritású interrupt tiltása

	
lcd8_write_command(0xC0);	// Kurzor a második sorba
for(j=0; j<20; j++) {
		if(tomb2[j]!=0) 
        lcd8_putc(tomb2[j]);	//"tömb2" tömb karaktereinek kiírása (amég van)
		else break;
}
lcd8_write_command(0x94); 	// Kurzor a harmadik sorba
for(j=0; j<20; j++) {
		if(tomb3[j]!=0) 
        lcd8_putc(tomb3[j]);	//"tömb3" tömb karaktereinek kiírása (amég van)
		else break;
}

while (1) {
       



if(l > 35){
LED_1 = 1;
LED_2 = 0;
LED_3 = 0;
LED_4 = 0;
}
else if(l>30){
LED_1 = 0;
LED_2 = 1;
LED_3 = 0;
LED_4 = 0;
}
else if(l>25){
LED_1 = 0;
LED_2 = 0;
LED_3 = 1;
LED_4 = 0;
}
else if(l>20){
LED_1 = 0;
LED_2 = 0;
LED_3 = 0;
LED_4 = 1;
}
else
{LED_1 = 0;
LED_2 = 0;
LED_3 = 0;
LED_4 = 0;}
}

    


}