Forum: Mikrocontroller und Digitale Elektronik Problem mit AT89LP4052 (COM Schnittstelle)


von Thomas H. (thblitz)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein Problem mit diesem µC Daten über die serielle Schnittstelle 
zu versenden.

Im Anhang ist mein aktueller Code enthalten.Ich benutze aktuell den SDCC 
Version 2.8.8#5353 Feb 3 2009.
Die vorgänger Version läuft bereits auf einem AT89C2052.

An den Eingägen von Port1 sind Taster angeschlossen und sobald ein oder 
mehrere Taster betätigt werden soll ein bestimmmtes Zeichen über die 
serielle Schnittstelle versand werden.

Aktuell kommt kein Signal raus.

Gruß Thomas H.

von Peter D. (peda)


Lesenswert?

Das ist ne blöde Idee, immer den ganzen Port auszuwerten, wenn es doch 
nur ein Pin sein soll.

Tasten fragt man deshalb so nie ab, sondern mit Bitmasken:
1
if( taste & 1<<0 ) // mache was ..
2
if( taste & 1<<1 ) // mache was ..
3
// usw.

Will man noch Entprellen und Flankenauswertung, nimmt man am besten die 
Bulletproof-Sorglos Routine aus der Codesammlung.
Da in C, läßt sie sich ganz einfach von AVR auf 8051 umschreiben 
(Interrupt Syntax, Timerinitialisierung).


Peter

von Thomas H. (thblitz)


Lesenswert?

Peter Dannegger schrieb:
> Das ist ne blöde Idee, immer den ganzen Port auszuwerten, wenn es doch
> nur ein Pin sein soll.
>
> Tasten fragt man deshalb so nie ab, sondern mit Bitmasken:
>
1
> if( taste & 1<<0 ) // mache was ..
2
> if( taste & 1<<1 ) // mache was ..
3
> // usw.
4
>
>
> Will man noch Entprellen und Flankenauswertung, nimmt man am besten die
> Bulletproof-Sorglos Routine aus der Codesammlung.
> Da in C, läßt sie sich ganz einfach von AVR auf 8051 umschreiben
> (Interrupt Syntax, Timerinitialisierung).
>
>
> Peter

Hallo Peter,

das mache ich auch meistens. Aber ich habe auch Zustände da sind zwei 
Tasten gleichzeitig gedrückt. Wenn mann es dann über Bitmasken macht 
wird das leicht unübersichtlich.

Das ist auch nicht das Problem. Ich hab das Problem das der µC keine 
Übertragung mach (wenn ich ein Byte in SBUF schreibe).

Ich habe den Verdacht das ich beim Initialisieren einen Fehler habe. Ich 
sehe nur nicht welchen :) .

Gruß Thomas H.

von Peter D. (peda)


Lesenswert?

Thomas H. schrieb:

> das mache ich auch meistens. Aber ich habe auch Zustände da sind zwei
> Tasten gleichzeitig gedrückt.

Dann nimmt man ne Maske für genau die 2 Bits.

Bzw. mit der Entprellroutine nimmt man eine Taste als Shifttaste, d.h. 
wertet deren entprelltes Bit aus. Die Taste allein macht dann nichts, 
denn exakt gleichzeitig kann niemand 2 Tasten drücken.
Bei dem Keyboard drückt man ja auch immer die Shift-, Num-, Controltaste 
etwas früher.


Das stupide Schreiben auf SBUF ist auch ne blöde Idee.
Man muß doch erst testen, ob ein vorheriges Schreiben beendet ist!
Mach Dir ne putchar Funktion oder nimm die des Compilers.


Peter

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.