/* 
 * File:   ds18b20.h
 * Author: patrik
 *
 * Created on 10 July 2015, 03:58
 */

#ifndef DS18B20_H
#define	DS18B20_H
#define idov 5
#define ido1 1
#define ido0 6
#define idoAmigFelmegyAzAdatvonal 3//2-nel meg nem megy egybe a vonal
#define idoMintavetel 1
//#define byte unsigned char
#ifdef	__cplusplus
extern "C" {
#endif
#include "LCD.h"
volatile unsigned char homerseklet[8];
volatile unsigned char j; 
void adatOlvasas()
{
    for (unsigned char i = 7; i >= 0; i--)
    {
        TRISC7 = 0;
        RC7 = 0;
        TRISC7 = 1;
        delay(idoMintavetel);
        if(RC7)                     
            homerseklet[i] = 1;
        else homerseklet[i] = 0;
        delay(idov);
    }
}
void adatIras(byte adat)
{
    if (adat & 0x01) 
    {
        TRISC7 = 0;
        RC7 = 0;
        delay(ido1);
        TRISC7 = 1;
        delay(idoAmigFelmegyAzAdatvonal);
    }else 
        {
            TRISC7 = 0;
            RC7 = 0;
            delay(ido0);
            TRISC7 = 1;
            delay(idoAmigFelmegyAzAdatvonal);
        }
    if (adat & 0x02)
    {
        TRISC7 = 0;
        RC7 = 0;
        delay(ido1);
        TRISC7 = 1;
        delay(idoAmigFelmegyAzAdatvonal);
    }else 
        {
            TRISC7 = 0;
            RC7 = 0;
            delay(ido0);
            TRISC7 = 1;
            delay(idoAmigFelmegyAzAdatvonal);
        }
    if (adat & 0x04)
    {
        TRISC7 = 0;
        RC7 = 0;
        delay(ido1);
        TRISC7 = 1;
        delay(idoAmigFelmegyAzAdatvonal);
    }else 
        {
            TRISC7 = 0;
            RC7 = 0;
            delay(ido0);
            TRISC7 = 1;
            delay(idoAmigFelmegyAzAdatvonal);
        }
    if (adat & 0x08)
    {
        TRISC7 = 0;
        RC7 = 0;
        delay(ido1);
        TRISC7 = 1;
        delay(idoAmigFelmegyAzAdatvonal);
    }else 
        {
            TRISC7 = 0;
            RC7 = 0;
            delay(ido0);
            TRISC7 = 1;
            delay(idoAmigFelmegyAzAdatvonal);
        }
    if (adat & 0x10) 
    {
        TRISC7 = 0;
        RC7 = 0;
        delay(ido1);
        TRISC7 = 1;
        delay(idoAmigFelmegyAzAdatvonal);
    }else 
        {
            TRISC7 = 0;
            RC7 = 0;
            delay(ido0);
            TRISC7 = 1;
            delay(idoAmigFelmegyAzAdatvonal);
        }
    if (adat & 0x20) 
    {
        TRISC7 = 0;
        RC7 = 0;
        delay(ido1);
        TRISC7 = 1;
        delay(idoAmigFelmegyAzAdatvonal);
    }else 
        {
            TRISC7 = 0;
            RC7 = 0;
            delay(ido0);
            TRISC7 = 1;
            delay(idoAmigFelmegyAzAdatvonal);
        }
    if (adat & 0x40)
    {
        TRISC7 = 0;
        RC7 = 0;
        delay(ido1);
        TRISC7 = 1;
        delay(idoAmigFelmegyAzAdatvonal);
    }else 
        {
            TRISC7 = 0;
            RC7 = 0;
            delay(ido0);
            TRISC7 = 1;
            delay(idoAmigFelmegyAzAdatvonal);
        }
    if (adat & 0x80)
    {
        TRISC7 = 0;
        RC7 = 0;
        delay(ido1);
        TRISC7 = 1;
        delay(idoAmigFelmegyAzAdatvonal);
    }else 
        {
            TRISC7 = 0;
            RC7 = 0;
            delay(ido0);
            TRISC7 = 1;
            delay(idoAmigFelmegyAzAdatvonal);
        }
}
void jelenlet()
{
    TRISC7 = 0;
    RC7 = 1;
    RC7 = 0;
    delay(47);//proteus szerint min 537us
    TRISC7 = 1;
    delay(2);//23us,ezutan johet a mintavetel
    if (RC7)//a proteus szerint max 150us-ra huzza le a ds18b20 a vonalat 
        j = 0;//a delay 2-tol 13-ig jo,az idoben 23-150us
    else 
        j = 1;
    delay(14);//hasrautesszeruen varunk,hogy a vegere erjunk
}             //hogy a vonal felmenjen egybe


#ifdef	__cplusplus
}
#endif

#endif	/* DS18B20_H */

