Hallo,
sry, dass ich nochmal nerve, aber ich probier schon die ganze Zeit, sone Art "Lichtschalter" hinzubekommen.
Vorneweg erstmal: Ich hab das myAvr-Board 1.4
Hab einen Taster mit PortD.2 und einen Taster mit PortD.3 verbunden. Dann hab ich noch eine LED mit PortB.2 verbunden. Wenn ich den Taster1 (PortD.2) drücke, soll die LED ausgehen und wenn ich Taster2 (PortD.3) drücke, soll die LED angehen. Ich bekomms einfach net, vlt. könnt ihr mir weiterhelfen, das ganze möcht ich gern mit Assembler realisieren.
Hier mein Code:
Code:
.include "m8def.inc"
.def temp = r16
ldi temp, LOW(RAMEND) ;LOW-Byte der obersten RAM-Adresse
out SPL, temp
ldi temp, HIGH(RAMEND) ;HIGH-Byte der obersten RAM-Adresse
out SPH, temp
ldi temp, 0b00000000
out DDRD, temp ;PortD als Eingang
ldi temp, 0b11111111
out DDRB, temp ;PortB als Ausgang
out PortD, temp ;Pullups von PortD aktivieren
main:
sbic PIND, 2 ;Liegt an D.2 low an? Wenn nicht, dann nächsten Befehl überspringen
sbi PortB, 2 ;Wenn ja, dann B.2 auf high setzen
sbic PIND, 3 ;Liegt an D.3 low an? Wenn nicht, dann nächsten Befehl überspringen
cbi PortB, 2 ;Wenn ja, dann B.2 auf low setzen
rjmp main ;Endlosschleife
Ich denk mal, Geübte steigen durch den Code durch.
Das was er jetzt macht: Am Anfang leuchtet die LED ganz schwach (soll aber ganz aus sein). Wenn ich auf einen Taster drücke, geht sie aus (wenn ich ihn aber wieder loslasse, ist sie wieder schwach an) und wenn ich auf den anderen Taster drücke, leuchtet sie stark (geht dann aber auch wieder auf schwach, wenn ich den Taster loslasse )
Gruß
Thomas
Lesezeichen