mikrocontroller.net

Forum: Projekte & Code UART Echo in C STK500


Autor: Markus Neubauer (roboscan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi.
Also ich denke gerade am anfang wenn man versucht mit UART zu spielen
könnte das nützlich sein.
Getestet auf einem STK500 mit ATMEGA8515L Chip.

#include <avr/io.h>
#include <stdint.h>

#ifndef F_CPU
#define F_CPU 3686400
#endif
#define UART_BAUD_RATE 9600
#define UART_BAUD_CALC(UART_BAUD_RATE,F_OSC) ((F_CPU) /
((UART_BAUD_RATE)*16L)-1)

unsigned char get;

int uart_putc(unsigned char c)
{
  while (!(UCSRA & (1<<UDRE)));
  UDR = c;
  return 0;
}

int main(void)
{

  UCSRB |= (1<<TXEN);  //Transmitter Enabled
  UCSRC |= (1<<URSEL) | (3<<UCSZ0);  //Asynchron 8N1
  
  UCSRB |= (1<<RXEN);  //Emfpang enabl

  UBRRH=(uint8_t) (UART_BAUD_CALC(UART_BAUD_RATE,F_CPU)>>8);
  UBRRL=(uint8_t)UART_BAUD_CALC(UART_BAUD_RATE,F_CPU);

  DDRB = 0xFF;
  PORTB = 0xFF;

  while(1)
  {

    while(!(UCSRA & (1<<RXC)))
    {
      PORTB = ~get;
    }
    get = UDR;
    uart_putc(get);
      
  }
}

Autor: murphy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie würde das in asm aussehen??

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.