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 178<br />

cbi (UCSRB,UDRIE);<br />

}<br />

void putbyte (unsigned char txbyte)<br />

{<br />

while (putbyte_buffil >= putbyte_buflen) asm ("sleep");<br />

cbi (UCSRB,UDRIE);<br />

putbyte_buffer[putbyte_bufput]=txbyte;<br />

putbyte_bufinc(putbyte_bufput);<br />

putbyte_buffil++;<br />

sbi (UCSRB,UDRIE);<br />

}<br />

#endif<br />

Diese Version nutzt die Hardware in vollem Umfang aus.<br />

Zwar werden nicht wenig Programmworte verbraucht, zusätzlich<br />

benötigt das Programm auch noch einen Ringpuffer im<br />

wertvollen Schreib-/Lesespeicher, dafür ist der Bedarf an Rechenzeit<br />

minimal. Beim Aufruf von putbyte init() muss man<br />

berücksichtigen, dass der Interrupt frei geschaltet wird! So<br />

lange der Ringpuffer belegt ist, legt sich die CPU schlafen.<br />

Nachdem das Senden über die RS232-Schnittstelle funktioniert,<br />

ist das Empfangen nicht mehr schwer. Als Hauptprogramm<br />

erstellen wir ein Echo, das empfangene Zeichen einfach<br />

wieder zurückschickt:<br />

/*<br />

** Name: software/rs232/rs232.c<br />

** Funktion: echos keyboard<br />

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

*/<br />

#include <br />

#define putbyte_clock Clock<br />

#define putbyte_baud 2400<br />

#include "../include/putbyte_uart.c" // uses uart<br />

//#include "../include/putbyte_buff.c" // uses uart with interrupt<br />

//#include "../include/putbyte_disp.c" // uses lcd-display<br />

#define getbyte_clock putbyte_clock

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!