Assembler AVR Atmega Taster simulieren? Also einem Eingangs-pin einen Wert geben?

OP #5470348
Lesenswert?
• ▲
▼
Assembler

Ich bin ziemlich neu und würde gerne in Atmel Studio einen Taster 
"simulieren" (für den Atmega16).

Ich habe $0F auf DDRD gesetzt, damit sollten PD0-3 Eingänge und PD4-7 
Ausgänge sein.
Nun möchte ich, dass etwas passiert, wenn der Taster PD4 betätigt wird. 
Ich habe aber leider keinen Taster zu Hause, weshalb ich gerne dem PD4 
eine eins zuweisen würde, damit ich im Atmel Simulator gucken kann, ob 
mein nachfolgender Code, also die Abfrage, ob am Pin eine 1 vorliegt, 
auch funktioniert.
Ausgabepins kann ich ja kinderleicht definieren mit out PORTD, xxx aber 
wie funktioniert das für Eingabepins?
Gast #5470358
Lesenswert?
• ▲
▼
Hi,
entsprechendes Portbit mit Maus anklicken/setzen... wo ist das Problem?
>Ausgabepins kann ich ja kinderleicht definieren mit out PORTD, xxx aber
>wie funktioniert das für Eingabepins?
normalerweise mit PinD
Viel Erfolg,Uwe
Gast #5470547
Lesenswert?
• ▲
▼
Taster wird abgefragt mit folgenden Befehlen

SBIS heißt von 1 auf 0 des PinXn oder

SBIC heißt von 0 auf 1 des PinXn

Zu beachten ist das man beim Sprung in die Routine als erstes ca 
150ms-200ms wartet damit der selbe Pin nicht schon weitere Aktionen 
ausführt falls dieser im Unterprogramm auch verwendet wird.

zb Steuerkreuz für ein Menu...

Andere Möglichkeiten sind zb den gesamten PinX in ein Register schieben, 
dann xor um das Prellen zu umgehen..


Das Selbe funktioniert auch wenn das DDRx mit $FF gesetzt worden ist 
kann trotzdem mit PinXn der Zustand der einzelnen Pins abgefragt werden
Gast #5470559
Lesenswert?
• ▲
▼
Markus M. schrieb:
> Ich habe $0F auf DDRD gesetzt, damit sollten PD0-3 Eingänge und PD4-7
> Ausgänge sein.

Falsch

$0f = binär 00001111, gesetzt wird nur das untere Nibble, also Px0-3 als 
Ausgang im DDRx und das obere Nibble Px4-7 als Eingang im DDRx!!!

Datenblatt lesen ebenso dazu im Anhang das Instruction Set wo die 
Befehle erklärt sind


In der Software bzw im Simulator musst due nur die PinXn anklicken und 
dann dich für positive (1-aktiv) oder negative (0-Aktiv) entscheiden mit 
den darauf folgenden Befehl
OP #5470807
Lesenswert?
• ▲
▼
Sorry Leute!

Am Anfang hatte ich mich verschrieben, ich meinte natürlich PD0-3 sind 
Ausgänge und 4-7 Eingänge.

Dass ich die Pins einfach in der Software anklicken kann, wusste ich gar 
nicht, funktioniert aber wunderbar!
Daher vielen vielen Dank an alle, die sich die Zeit genommen haben, 
einem blutigen Anfänger weiterzuhelfen.

Übrigens besitze ich keinen Taster, da ich die Sache für die Uni 
schreiben soll und aus eigener Initiative niemals auf die Idee gekommen 
wäre, Assembler zu lernen. Aber ich muss zugeben, es macht Spaß :D

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.