Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <avr/io.h>
- #include <inttypes.h>
- #define F_CPU 3686400UL
- #define BAUDRATE 9600
- #define UBRR ((F_CPU/(BAUDRATE*16UL))-1)
- void config_uart() //konfiguráció
- {
- UBRR0H = (UBRR>>8); // UBRR felso 8 bitjenek betoltese az UBRRH regiszterbe
- UBRR0L = UBRR; // UBRR also 8 bitjenek betoltese az UBRRL regiszterbe
- UCSR0B = (1 << RXEN0)|(1 << TXEN0); //transfer és receive engedélyezése
- UCSR0C = (0<<UMSEL01)|(0<<UMSEL00)|(0<<UPM01)|(0<<UPM00)|(0<<USBS0)|(0<<UCSZ02)|(1<<UCSZ01)|(1<<UCSZ00)|(0<<UCPOL0);
- } // Aszinkron mod, 8 Adat Bit, Nincs Paritas Bit, 1 Stop Bit
- void send(char data) //adatküldés
- {
- while(!(UCSR0A & (1<<UDRE0)) ); // Varakozas amig az ado kesz nem áll az adatküldésre
- UDR0=data; // Az ado kesz az adatkuldesre, kuldendo adat írása a kimeno pufferbe
- }
- char receive() //adatfogadás
- {
- while(!(UCSR0A & (1<<RXC0)) ); // várunk amig nincs uj bejovo adat
- return UDR0; //van beerkezett adat, amit kiolvasunk a pufferbol
- }
- //-----------------------------------------------------------------------------------------------------------------
- int main(void)
- {
- DDRC=0xff; //data register port c kimenet
- char adat;
- config_uart();
- while(1)
- {
- adat=receive(); //adat változóba kerül a fogadott adat
- if(adat=='a') //ha 'a' karakter érkezik, akor
- {
- PORTC=0xff; //portc magas szinten lesz és
- send(adat); //visszaküldi adat értékét UART-on
- }
- else
- {
- PORTC=0x00; //más esetben LED kialszik
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement