Hey Leute,
ich brauche bitte eine wenig Unterstützung.
Das folgende Programm sollte mir eine Tasterschaltung auf dem Arduino
Uno R3
realisieren.
1 |
|
2 | ldi r16, 0xFF ; Alle Pins am Port D durch Ausgabe von 0xFF ins
|
3 | out DDRD, r16 ; Richtungsregister DDRD als Ausgang konfigurieren
|
4 |
|
5 |
|
6 | ldi r16, 0x00 ; Alle Pins am Port B durch Ausgabe von 0x00 ins
|
7 | out DDRB, r16 ; Richtungsregister DDRB als Eingang konfigurieren
|
8 |
|
9 | loop:
|
10 | in r16, PINB ; an Port B anliegende Werte (Taster) nach r16 einlesen
|
11 | out PORTD, r16 ; Inhalt von r16 an Port D ausgeben
|
12 | rjmp loop ; Sprung zu "loop:" -> Endlosschleife
|
Es funktioniert auch. Nur leider verstehe ich nicht, warum es nur an PD1
und PB1 funktioniert.
Am gesamten Port sind doch die Bits entweder auf 0 oder 1 gesetzt.
Müsste die LED nicht an PD0-PD7 leuchten und der Taster auch an PB0-PB2
funktionieren.
Und wie kann ich mit Assembler einen einzelnen Pin konfigurieren?
Muss ich trotzdem noch das Datenrichtungsregister definieren oder kann
ich stattdessen mit PD# und PB# arbeiten?
LG Ben