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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren