-
Erste Gehversuche in ASM
Hi,
gestern ist endlich mal mein Breadboard gekommen und ichd achte mir, dass ich n bischen mit Assembler spiel, weil ich mich noch nicht so wirklich mit C oder Bascom beschäftigt hab.
Gut... Also mald as Tutorial von mikrocontroller.net geschnappt und gebastelt.
Nur weiss ich nicht, warum dieses programm keine LED zum leuchten bringt:
Code:
.include "m16def.inc"
ldi r16, 0xFF
out DDRB, r16
out PORTB, r16
loop: rjmp loop
Die LEDs hängen an PORTB6 und PORTB7. Eigentlich müssten die ja leuchten.
Bei diesem Programm tun sie es brav:
Code:
.include "m16def.inc" ;Definitionsdatei einbinden
ldi r16, 0xFF ;0xFF ins Arbeitsregister r16 laden
out DDRB, r16 ;Inhalt von r16 ins IO-Register DDRB ausgeben (Ausgabe)
ldi r16, 0x00 ;0xFF ins Arbeitsregister r16 laden
out DDRD, r16 ;Inhalt von r16 ins IO-Register DDRD ausgeben (Eingabe)
loop:
sbic PIND, 7 //Wenn PIND7 0 ist, nächsten Befehl überspringen
rjmp loop
sbi PORTB, 7 //PORTB7 auf 1 setzen
ende: rjmp ende
Natürlich erst, wenn man den Taster drückt....
Anmerkung: Wenn ich den Taster drücke ist LOW am Controller, weil ich nen Pullup Widerstand zu VCC dabei hab.
Kann mir da jemand helfen?
Der Controller ist auch nicht kaputt. Diese Blinkschaltung in Bascom funktioniert zum Beispiel einwandfrei:
Code:
$regfile = "m16def.dat"
$crystal = 8000000
Config Pinb.7 = Output
Config Pinb.6 = Output
Do
Portb.7 = 1
Portb.6 = 0
Wait 1
Portb.7 = 0
Portb.6 = 1
Wait 1
Loop
-
Hast du die LEDs wie im Tutorial gegen Vcc abgeschlossen?
-
Arg!
Genau andersrum...
Aber das sollte eigentlich egal sein oder?
Wenn ich High auf nem Port ausgeb und der Strom durch die LED auf GND fließt is die doch auch an oder?
Und warum geht das ganze in Bascom und im Assembler nicht? Ich habs mit 0x00 und mit 0xFF getestet....
edit:
Hab die LEDs jetzt einfach mal gegen VCC gelegt... Ändert sich nichts. Wobei mir das eh nicht gefällt, weil ich dann in dem programm alles invertiert angeben muss....