#include <avr/io.h>

#define F_CPU 4000000UL
#include <util/delay_basic.h>

#include <stdlib.h>

#define E_ON    PORTB |=  (1<<PB7)
#define E_OFF   PORTB &= ~(1<<PB7)
#define ADAT    PORTB |=  (1<<PB6)  // RS_ON  //
#define PARANCS PORTB &= ~(1<<PB6)  // RS_OFF //
#define RED_ON PORTA |= (1<<PA1)
#define RED_OFF PORTA &= ~(1<<PA1)
#define YELLOW_ON PORTA |= (1<<PA2)
#define YELLOW_OFF PORTA &= ~(1<<PA2)
#define GREEN_ON PORTA |= (1<<PA3)
#define GREEN_OFF PORTA &= ~(1<<PA3)

void delay(unsigned char d)
	{
		unsigned char i;
		for(i=0;i<d;i++)
			{
				_delay_ms(1);
			}
	}

void send_char(unsigned char ch)
	{
		RED_ON;
		unsigned char ch1 , ch2;
		ch1=0;
		ch2=0;
		ch1=(ch & 0xF0) >>4;
		ch2=ch & 0x0F;		

		PORTB=ch2;
		ADAT;
		E_ON;
		delay(1);
		E_OFF;

		delay(1);

		PORTB=ch1;
		ADAT;
		E_ON;
		delay(1);
		E_OFF;
		RED_OFF;
	}

void send_parancs(unsigned char p)
	{
	    RED_ON;
		unsigned char p1 , p2;
		p1=0;
		p2=0;
		p1=(p & 0xF0) >>4;
		p2=p & 0x0F;
		
		PORTB=p1;
		PARANCS;
		E_ON;
		delay(1);
		E_OFF;

		delay(1);

		PORTB=p2;
		PARANCS;
		E_ON;
    	delay(1);
		E_OFF;
		RED_OFF;
	}

void lcd_locate(unsigned char lcdx ,unsigned char lcdy)
	{
		if (lcdy==1)
			{
				if(lcdx<17)
					{
						
					}
			}
		if (lcdy==2)
			{
			}
		if (lcdy==3)
			{
			}
		if (lcdy==4)
			{
			}

	}

void lcd_del()
	{
		send_parancs(0x01);
	}

int main(void)
{

DDRB=0xFF;
DDRD=0xFF;
DDRA= (1<<PINA1) | (1<<PINA2) | (1<<PINA3);

delay(2000);

YELLOW_ON;
send_parancs(0x0C);
send_parancs(0x0C);
send_parancs(0x0C);
send_parancs(0x28);
YELLOW_OFF;

delay(2000);

unsigned long buffer[4];
unsigned char a=124;

while(1)
{
GREEN_ON;
a++;
//itoa(a,buffer,10);
lcd_locate(0,0);
//send_char(buffer[1]);							
//send_char(buffer[2]);
//send_char(buffer[3]);
send_char(0x42);
delay(1000);

}
}
