21.08.2012 Aufrufe

Computertechnik mit Mikrocontrollern

Computertechnik mit Mikrocontrollern

Computertechnik mit Mikrocontrollern

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

KAPITEL 13. AUFBAU DES SYSTEMS 180<br />

#define getbyte_T 16<br />

#else // ATmega48 ...<br />

#define getbyte_T 16<br />

#endif<br />

#define getbyte_init()\<br />

UBRR0H = (getbyte_clock/getbyte_baud/getbyte_T-1)>>8;\<br />

UBRR0L = (getbyte_clock/getbyte_baud/getbyte_T-1);\<br />

sbi (UCSR0B,RXEN0);<br />

#define getbyte_ready() bit_is_set(UCSR0A,RXC0)<br />

unsigned char getbyte () {<br />

loop_until_bit_is_set (UCSR0A,RXC0);<br />

return UDR0;<br />

}<br />

#endif<br />

Auf die Initilisierung von UBRR kann eventuell verzichtet<br />

werden, da sie ja auch von putbyte init() erledigt wird. Dann<br />

bleiben nur sechs Worte Programmcode übrig.<br />

RS232 Eingabe <strong>mit</strong> UART und Interrupt<br />

//<br />

// Name: software/include/getbyte_buff.c<br />

// Function: AVR serial getbyte over UART using interrupt<br />

// History: 20031223 Hanns-Konrad Unger creation<br />

// Usage: #define getbyte_clock 6553600 /* frequence of system-clock */<br />

// #define getbyte_baud 38400 /* baud-rate */<br />

//<br />

// #include "getbyte_buff.c"<br />

// getbyte_init();<br />

// if (getbyte_ready()) c=getbyte();<br />

//<br />

#ifndef getbyte_buff_c<br />

#define getbyte_buff_c<br />

#include <br />

#include <br />

#define getbyte_init()\<br />

UBRRH = (getbyte_clock/getbyte_baud/16-1)>>8;\<br />

UBRRL = (getbyte_clock/getbyte_baud/16-1);\<br />

sbi (UCSRB,RXEN);\<br />

sbi (UCSRB,RXCIE);\<br />

sei();<br />

#define getbyte_bufinc(x) (((x)==getbyte_buflen-1)?((x)=0):((x)+=1))

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!