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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.