Hallo,

RxVal=*(int*)&RX[3];
mit &RX[3] ist gemeint die speicher adresse von byte nummer 3 (z.B. adresse 2222 irgendwo im computer) byte nummer 4 liegt immer auf die nachtste speicher adresse 2223

(int*) heist interpretiere mal die adresse 2222 als sei es ein anzeiger/anweiser nach einen integer wert (ein wert der aus 2 bytes besteht).

* heist lese mal die inhalt von adresse 2222. Durch die (int*) wird die addresse 2222 als ein integer gelesen dass heisst die addresse 2223 wird auch in bezug genommen und mit ausgelesen.

Aber da gibt's viele 'C' bucher dazu.


[list]
#pragma used+
//#pragma ist ein anweisung fur die compiler und die 'used +' soll irgendwo im compiler handbuch stehen (ich hab keine ahnung was dies hier fur die compiler bedeutet

char getchar1(void)
{

//hier ist eine function 'getchar' definiert, dieze function kann
mann von irgendwo im program anrufen/ausfuren durch einfach
'getchar();' zu schreiben

char status,data;
//reserviere mahl computer speicher platz fur 2 bytes 'status' und 'data'

while (1)
{
//alles zwischen die '{' und zubehorende '}' zeigen wird unendlich mal ausgefuhrt

while (((status=UCSR1A) & RX_COMPLETE)==0);
//1. (status=UCSR1A) die inhalt vom UCSR1A register wird in speicherplatz 'stastus' kopiert
//2. ((...) & RX_COMPLETE) hier wird getestet ob dat bit RX_COMPLETE (so irgendwo definiert sein) in 'status' anwesend ist
//3. while((())==0) solange das resultat der test null ist wird die while schleiife immer wieder aufneu ausgefuhrt, in diesen fall wird die schleife verlassen wenn RX_COMPLETE hoch ist, wenn ein byte empfangen ist

data=UDR1;
//speicher dass empfange byte im 'data' speicherplatz

if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
//vorher in die 'while' schleife war register UCSR1A in 'status' kopiert, jetzt wird getestet ob einer oder mehere der drei fehler bits in diesem register hoch sind, so ob irgendwo etwas fehl geslagen hat

return data;
//schicke dass empfangene byte zuruck an die function die diesen function (getchar1) angerufen hat

void putchar1(char c)
//function um ein byte zu versenden
{
while ((UCSR1A & DATA_REGISTER_EMPTY)==0);
//so lange bit DATA_REGISTER_EMPTY im UCSR1A register nicht hoch (sondern niedrich) ist, oder anders gesagt, solange kein byte im versand register anwesend ist, bleib in diese schleife hangen

UDR1=c;
//kopier dass zu versenden byte in die versend buffer, damit wird dass byte automatisch vom mikrokontroller versendet.

....pppffffffffffffffffffffff

und jetzt mahl irgendwo 'C' lernen....

gruss

Henk