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

#ifndef putbyte_port_c<br />

#define putbyte_port_c<br />

#include "mainboard.h"<br />

#define putbyte_init() sbi (putbyte_DDR, putbyte_PB);\<br />

sbi (putbyte_PORT,putbyte_PB)<br />

void putbyte (unsigned char txbyte)<br />

{<br />

char len = 1+8+1; /* startbit+databits+stopbit */<br />

char carry = 1; /* startbit */<br />

int cnt;<br />

txbyte = ~txbyte;<br />

for (;;)<br />

{<br />

if (carry) // (!carry)<br />

cbi (putbyte_PORT,putbyte_PB);<br />

else<br />

sbi (putbyte_PORT,putbyte_PB);<br />

cnt=putbyte_clock/putbyte_baud/4-4;<br />

#ifdef O0<br />

asm ("loop4cycl: subi r24,1"); /* subtract constant 1 */<br />

asm (" sbci r25,0"); /* compute carrybit */<br />

asm (" brne loop4cycl");<br />

#else<br />

#ifdef O1<br />

while (--cnt);<br />

#else<br />

#error Use "gcc -O1 -DO1 ..." to compile while (--cnt);<br />

#endif<br />

#endif<br />

if (! --len) break;<br />

carry = txbyte % 2;<br />

txbyte /= 2;<br />

}<br />

}<br />

#endif<br />

Die Geschwindigkeit der Übertragung, Baudrate 2 genannt,<br />

wird durch eine Zählschleife beeinflußt. Wie wir schon gesehen<br />

haben, sind Zählschleifen vom Grad der Optimierung<br />

abhängig. Deshalb muss für verschiedene Optimierungsstufen<br />

ein unterschiedlicher Code erzeugt werden.<br />

2 Die Einheit Baud für Impulse pro Sekunde erinnert an den französi-<br />

chen Erfinder Baudot.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!