Problem mit AT89LP4052 (COM Schnittstelle)

OP #1394142
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.
Angehängte Dateien:
#1394177
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
OP #1394225
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.
#1394349
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren