#include <htc.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include "config.h"
#include "1wire.h"
#include "lcd.h"
extern unsigned char __resetbits;
extern bit __powerdown;
extern bit __timeout;
void lcd_dec(long data, unsigned int ndigits);
void interrupt isr(void);
__CONFIG(WDTE_ON & FOSC_HS & PWRTE_ON & BOREN_ON & LVP_OFF);

void main()
{
	TRISA = 0b00000001;
	ADCON1 = 0x06;
	OPTION_REG=0B11111110;	//0B11111101 nél már írja!!!
	INTCON=0b11000000;
	T2CON=0b01111011;
	PR2=100;
	
	float temp;
	long uctemp;
	lcd_init();
	TMR2ON=1;
	TMR2IE=1;	//Timer2 megszakítás
	
	__delay_ms(75);
		RA0 = 1;
		__delay_ms(75);
		__delay_ms(75);
		__delay_ms(75);
		RA0 = 0;
		__delay_ms(75);
		__delay_ms(75);
		__delay_ms(75);
	while(1)
	{
		lcd_goto(0x00);
		lcd_puts("reading");
		temp = ds1820_read();
		uctemp=(temp*1000);
		lcd_goto(0x40);
		lcd_puts("Temp:");
		lcd_dec(uctemp,3);
		lcd_putch('C');

	}	
}

void lcd_dec(long data, unsigned int ndigits) {
 static char sign, s[12];
 unsigned int i;
     i=0; sign='+';
    if(data<0) { sign='-'; data = -data;}
     do {
        s[i]=data%10 + '0';
        data=data/10;
        i++;
        if(i==ndigits) {s[i]='.'; i++;}
     } while(data>0);
     lcd_putch(sign);
     do{
        lcd_putch(s[--i]);
    } while(i);
 }


void interrupt isr(void){
 if(TMR2IE&&TMR2IF){
	if(__timeout==0)	
	 {
	  lcd_clear();
	  lcd_goto(0x00);
      lcd_dec(__timeout,0);
	  __delay_ms(1000);
	 }	
	TMR2IF=0;
	return;
	}
}