www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Taster-Abfrage


Autor: Stephan Lutz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jochen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Denis Gérard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
interruptvektoren, stackinitialisierung ?

Autor: Stephan Lutz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Stephan Lutz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.