mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pin abfragen


Autor: olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich arbeite zur Zeit mit dem STK500 und einem AT90S4433.

Wie kann ich - mit Assembler - abfragen ob ein Pin gedrückt ist oder
nicht und davon abhängig eine Aktion ausführen.

Ich dachte mir folgendes sei möglich, aber irgendwie funktioniert es
nicht:

in temp, PIND
cpi temp, 1
breg aktion

Wenn der erste Pin an PortD gedrückt wird, sollte doch der Wert des
Bytes 1 betragen, oder?

Postet gerne andere Möglichkeiten. Ich probiere alles gerne aus..

MfG.Olli

Autor: MasterD (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hi,
vielleicht kannst du dir was abschauen.
"getTd" liest den Port ein und wartet nis alle eingänge prellfrei
sind
"getTf" erkennt die flanke, d.h. nur wenn der Taster gedrückt wird
passiert was, wenn er dann gehalten wird, passiert nichts.
der code müsste aber einigermaßen verständlich kommentiert sein
viel erfolg
mfg,
MasterD

Autor: olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke erstmal. Werde mir den Code mal anschauen.

Bezüglich der Prellfreiheit (komisches Wort). Das ist in meinem Fall
kein Problem da die letztendliche Schaltung nict mehr von der Mechanik
von Tasten abhängt. Das hätte ich wahrscheinlich erwähnen sollen.

Autor: MasterD (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hätte aber nichts geändert, das ist halt da mit drin :-)

Autor: olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ehrlich gesagt ist mir das ganze ein wenig lang, weil meine anwendung
doch ziemlich zeitabhängig ist.

Würde nicht so was einfaches wie

    sbic PIND, 2
    rcall transmit

auch klappen?

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

"Wenn der erste Pin an PortD gedrückt wird, sollte doch der Wert des
 Bytes 1 betragen, oder?"

Ja schon, aber was ist mit den andere Pins, was liegt da in der
Zwischenzeit an? Normalerweise isoliert man das zu untersuchende Bit
mittels andi / ori - Befehlen.

Mittels "cpi temp, 1" prüftst Du das ganze Register, ob es 1 ist.
Vielleicht liegt es daran!?

Gruß

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.