PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Erste Gehversuche in ASM



Andy1988
11.05.2006, 15:21
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:

.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:

.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:

$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

Madgyver
11.05.2006, 15:34
Hast du die LEDs wie im Tutorial gegen Vcc abgeschlossen?

Andy1988
11.05.2006, 15:45
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....