#include "..\Header\vezerlo.h"
#include <i2c.h>
#include <timers.h>
#include <delays.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

#define		IOCONA		0x05			// I/O Configuration Reg
#define		IOCONSETA	0b10111000		// IOCON register setting
#define		GPPUA		0x06			// Pull-Up Control Reg
#define		GPIOA		0x09			// General Purpose I/O
#define		OLATA		0x0A

/* Fordítási direktívák    */
#pragma config WDT   = OFF   // Watch Dog Timer bekapcsolása
#pragma config OSC   = HS  // Oscillator 20 Mhz
#pragma	config LVP   = OFF // Low Voltage Program mód kikapcsolása
#pragma config XINST = ON  // Extended mode engedélyezése!

void write(unsigned char mem_adr, char dat);

#pragma code
void main (void)
{   
	Nop(); Nop();

	SSPADD  = 49; //100000=20000000/(4*(SSPADD+1))
    OpenI2C(MASTER, SLEW_OFF);  //open I2C as master
	PIR1    = 0; // Power On Reset
    PIE1    = 0; // a periféria megszakítások tiltása

	ADCON0bits.ADON = 0; // Analóg átalakítás kikapcsolása
	ADCON1 = 0b11111111; // Minden jelet digitálisként kezelünk

	write(GPPUA     ,1);
	write(IOCONA    ,0);
	write(IOCONSETA ,0);
	write(OLATA     ,1);

   	while(1);
}

void write(unsigned char mem_adr, char dat)
{
	i2c_start();
		DelayFor12TCY();
	i2c_out_byte(0x41);
		DelayFor12TCY();
	i2c_nack();
		DelayFor12TCY();
	i2c_out_byte(mem_adr);
		DelayFor12TCY();

	RestartI2C();

	i2c_out_byte(0x40);
		DelayFor12TCY();
	i2c_nack();
		DelayFor12TCY();
	i2c_out_byte(dat);
		DelayFor12TCY();
	i2c_nack();
		DelayFor12TCY();
	i2c_stop(); 

	Delay100TCYx(250);
	Delay100TCYx(250);
}
