

	    /*
    UART hasznalata polling modszerrel
    Hardver:    ATmega8 @ 7.372800MHz
    PC Szoftver: Hyper terminal @ 9600 baud, Nincs Paritas Bit, 1 Stop Bit, Flow Control = NONE
    */
    #define F_CPU 8000000UL// rendszer orajel: 8 MHz
	
	#include <avr/io.h>
    #include <inttypes.h>
   	#include <util/delay.h>
		
    #define USART_BAUDRATE 2400 // soros kommunikacio sebessege: 2400 bps
    #define UBRR_ERTEK ((F_CPU / (USART_BAUDRATE * 16UL)) - 1) // UBRR

    
    char UARTAdatFogad() // Ez a fuggveny a beerkezo adatokat kiolvassa az UDR regiszter bejovo pufferebol
    {    while (!(UCSRA & (1<<RXC))); // Varakozas amig nincs uj bejovo adat
       
       //Most mar van beerkezett adat, amit kiolvasunk a pufferbol
         return (UDR);
    }

    void UARTszovegKuld(const char *data ) { // Ez a fuggveny a kuldendo adatot beirja az UDR regiszter kimeno pufferjebe
        while ((*data != '\0')) {
            while(!(UCSRA & (1<<UDRE)));  // Varakozas amig az Ado kesz nem lesz az adatkuldesre
                UDR = *data;
                 data++;
           }
         }


    void UARTAdatKuld(char data) // Ez a fuggveny a kuldendo adatot beirja az UDR regiszter kimeno pufferjebe
    {
       while(!(UCSRA & (1<<UDRE)));  // Varakozas amig az Ado kesz nem lesz az adatkuldesre
       // Az Ado mar kesz az adatkuldesre, a kuldendo adatot a kimeno pufferjebe irjuk
       UDR=data;
    }




    int main(void) // Foprogram
    {
		DDRB = (1<<PINB0) | (1<<PINB1) | (1<<PINB2) | (1<<PINB3) | (1<<PINB4) | (1<<PINB5) | (1<<PINB6) | (1<<PINB7);
		
       char data;

        // UART Konfiguralasa

            // 9600 bps soros kommunikacio sebesseg beallitasa
       UBRRL = UBRR_ERTEK;        // UBRR_ERTEK also 8 bitjenek betoltese az UBRRL regiszterbe
       UBRRH = (UBRR_ERTEK>>8);   // UBRR_ERTEK felso 8 bitjenek betoltese az UBRRH regiszterbe
       // Aszinkron mod, 8 Adat Bit, Nincs Paritas Bit, 1 Stop Bit
        UCSRB = (1 << RXEN) | (1 << TXEN);      // Enable UART receiver and transmitter
        UCSRC = (1 << UCSZ1) | (1 << UCSZ0);   // set to 8 data bits, 1 stop bit
        
		UARTszovegKuld("Szia Szabi\r\n");

       while(1) // Vegtelen ciklus
       {

	   	data=UARTAdatFogad();  // A berekezo bajt fogadasa

          if (data=='a'){PORTB |= 0b00000001;}; // ha data=A
                
          if (data=='s'){PORTB |= 0b00010000;}; // ha data=s
                
          if (data==' '){PORTB |= 0b00000000;};
          if (data=='A'){PORTB |= (1<<5);}; //ha data=A
          if (data=='D'){PORTB |= (1<<6);}; //ha data=D
		  
          // A beerkezett karaktert szogletes zarojelben kuldjuk vissza

       }
    }
