Forum: Mikrocontroller und Digitale Elektronik Taster-Abfrage


von Stephan Lutz (Gast)


Lesenswert?

Hallo,

ich habe da ein Problem:
Ein Mikrocontroller vom Typ AT89S8252 soll fünf Taster nach ihren
Zuständen abfragen. Wenn Taster 1 gedrückt wird, leuchtet LED1 auf, bis
Taster 3 (Stop) gedrückt wird.

Die Ports habe ich schon mit dem Oszi durchgemessen, die sind high.

Die Taster gehen direkt auf die Ports und schalten gegen Masse.

Hier der Code:

#include 8051.H
         .org 0000H

start:         call LEDs_aus
               clr  P1.5 ;LED3 (Mitte) an
main:          jb  P1.0,fbon ;Prüfen ob Taster gedrückt. (Taster 1)
               jb  P1.4,fboff;aus (Mitte)
               sjmp main
fbon:          call LEDs_aus
               clr  P1.1
               sjmp main
fboff:         call LEDs_aus
               clr  P1.5
               sjmp main
LEDs_aus:      setb P1.1 ;LED1 aus
               setb P1.3 ;LED2 aus
               setb P1.5 ;LED3 (Mitte, Stop) aus
               setb P1.7 ;LED4 aus
               setb P3.1 ;LED5 aus
               ret
               .end

Achso, noch die Belegung:

P1.0: Taster 1 gegen Masse
P1.1: LED1
P1.2: Taster 2 gegen Masse
P1.3: LED2
P1.4: Taster 3 gegen Masse
P1.5: LED1
P1.6: Taster 4 gegen Masse
P1.7: LED2
P3.0: Taster 5 gegen Masse
P3.1: LED1


--
Ich bin ratlos.

danke für eure Hilfe schon im Voraus!

Viele Grüße,
Stephan

von Jochen (Gast)


Lesenswert?

Hallo
wir sind auch ratlos musst schon mehr sagen was, wie, ....
du hast was gemessen was, wie, ....
wird das programm richtig geflasht?

Zuletzt noch:
Als compiler empfehl ich
http://www.controllertechnik.de/software.html
als flash programm:
http://www.modul-bus.de/mbnews/mbnews02/isp.htm

Jochen

von Denis Gérard (Gast)


Lesenswert?

interruptvektoren, stackinitialisierung ?

von Stephan Lutz (Gast)


Lesenswert?

Hallo,

erstmal sorry, ich hätte das ganze besser beschreiben müssen.

Das Ganze läuft auf dem Mikrocontroller-Board von Elektor, das mit dem
Buch "Basiskurs Mikrocontroller" geliefert wird.

Genaue Daten dazu weiß ich nicht, aber ich kann was aus dem Buch
scannen und dann online stellen, wenn das was hilft.


Zum Programmieren und flashen benutze ich TASM (bzw. das WIndows-Tool
von Elektor "TASMedit").

ATMELisp habe ich auch, ich habe schon mehrfach den µC damit löschen
müssen, da sogar eine LED geleuchtet hat, als ich den Controller den
Port setzen lies.

Ich hab mit dem Oszi die Ports gemessen, an denen die Taster hängen und
nur dann, wenn die Taster nicht gedrückt waren. Die Ports waren dann
high, was ja wohl zur Abfrage richtig ist????

Liegt es vielleicht daran, dass ich die Taster ohne Pull-Up oder
Pull-Down - Rs drangehängt habe?

Laut Datenblatt hat der Controller an den Ports 1 und 3 eingebaute
Pull-UPs.

Die ganze Schaltung soll als Schrittmotorschaltung mit TCA 3727
fungieren. Hier die Anordnung der Taster:
------------------------------
| o  || o  || o  || o  || o  |
|    ||    ||    ||    ||    |
------------------------------
Schnell|Langs.|Stop|Langs.|Schnell|
  Rückwärts   |    |  Vorwärts


Belegung der Taster und LEDs siehe in meinem vorherigen Post.


Kann es sein, dass der Controller defekt ist?

Ich habe hier noch einen Ersatz.


Danke für Eure Hilfe und Mühe!

Stephan

von Benedikt (Gast)


Lesenswert?

Schau dir das mal an:
main:          jb  P1.0,fbon ;Prüfen ob Taster gedrückt. (Taster 1)
               jb  P1.4,fboff;aus (Mitte)

jb P1.0, also wenn P1.0 auf High liegt, was der Fall ist wenn der
Taster nicht gedrückt wird, wird die LED umgeschaltet. Das muss jnb
heißen, denn der Taster verursacht einen LowPegel.

Und zum Thema Stack, Interrupvektoren usw.
@Denis Gérard
Bisher nur AVRs programmiert, oder ?
Der 8051 benötigt keine Stackinitialisierung, das wird beim Reset
automatisch erledigt...

von Stephan Lutz (Gast)


Lesenswert?

Hallo Benedikt,

noch eine Frage: B. Kainka schreibt in seinem Buch auch jb PX,X
und seine Taster gehen an Masse?? Wie geht das?

NOch was: Brauche ich keine Pull-Up oder Pull-Down Widerstände?

VG,
Stephan

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.