Advertisement
Guest User

mcag

a guest
Jun 25th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.28 KB | None | 0 0
  1. #include <avr/io.h>
  2. #include <util/delay.h>
  3.  
  4. void setup();
  5. void uart_putByte(uint8_t byte);
  6. void uart_putString(uint8_t* str);
  7. uint8_t uart_getByte();
  8.  
  9. int main(){
  10.     //Ruft setup
  11.     setup();
  12.  
  13.  
  14.     while(1) {
  15.         for(uint8_t  i=1; i<10; i++ ) {
  16.             uart_putByte( '0' + i);
  17.             _delay_ms( 1000 );
  18.         }
  19.         _delay_ms( 1000 );
  20.         uart_putByte( '\n');
  21.         uart_putString("UART TEST BItches!\n");
  22.         uint8_t rec = uart_getByte();
  23.         uart_putString("Got: ");
  24.         uart_putByte(rec);
  25.     }
  26.  
  27.  
  28.     return 0;
  29. }
  30.  
  31. void setup(){
  32.  
  33.     //UBBRL und UBBRH mit dem Wert aus dem Datenblatt laden
  34.     UBRRH = 0x00;
  35.     UBRRL = 7;
  36.  
  37.     //->Even parity
  38.     //->1 Stop Bit
  39.     //->8 Bits an Daten
  40.  
  41.     //UCSRA laden
  42.     UCSRA = 0x00;
  43.  
  44.     //UCSRB laden
  45.     UCSRB = (1<<RXEN) | (1<<TXEN);
  46.  
  47.     //UCSRC laden
  48.     UCSRC = (1<<URSEL) | (1<<UCSZ0) | (1<<UCSZ1) | (1<<UPM1);
  49.  
  50. }
  51.  
  52. void uart_putByte(uint8_t byte){
  53.     //Warten bis UDR leer ist -> Bit in UCSRA
  54.     while( !( UCSRA & ( 1<<UDRE )));
  55.     //Daten in UDR laden
  56.     UDR = byte;
  57. }
  58.  
  59. void uart_putString(uint8_t* str) {
  60.     while(str != 0){
  61.         uart_putByte(*(str++));
  62.     }
  63. }
  64.  
  65. uint8_t uart_getByte(){
  66.     //Warten bis Empfangen komplett ist -> Bit in UCSRA
  67.     while( !( UCSRA & ( 1<<RXC ) ) );
  68.     //Daten aus UDR lesen
  69.     return UDR;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement