Hallo zusammen !
Kann jemend mir erklären wieso Loop Schlefe funktioniert nicht.Ich
dachte dass LED1 am Port B wird blinken.Im voraus - danke.
ich schreibe:
.include"8515def.inc"
.def temp =r16
.def count =r17
.def count1 =r18
.cseg
.org 0x000
rjmp main
;init Routine
init:
ldi temp,0xff
out DDRB,temp
out PORTB,temp
ret
;Loop Routine
loop:
inc count ;inkrementiere
cpi counter,255 ;vergleiche mit 255
brsh loop1 ;if kleiner dann loop1, else-HauptProg
ret
loop1:
inc count1
cpi count1,255
brsh loop1
rjmp loop
;Blink Routine
ein:
cbi PORTB,1
ret
aus:
sbi PORTB,1
ret
;Hauptprogramm
main:
ldi temp,LOW(RAMEND)
out SPL,temp
ldi temp;HIGH(RAMEND)
out SPH,temp
rcall init
rcall ein
rcall loop
rcall aus
rcall loop
rjmp main
Hi, wenn ich das richtig sehe, fehlt die Initialisierung des Stacks ... Gruß UBoot-Stocki
Der Wurm ist dort begraben:
;Loop Routine
loop:
inc count ;inkrementiere
cpi counter,255 ;vergleiche mit 255
brsh loop1 ;if kleiner dann loop1, else-HauptProg
ret
loop1:
inc count1
cpi count1,255
brsh loop1
rjmp loop
Es muß heißen: brlo statt brsh!
Ungewöhnliches Schleifenkonzept. Womöglich ist die Schleife dennoch zu
schnell, um ein Blinken zu erkennen.
Grüße
Oliver
Aha, habe die Stackinitialisierung dann doch gefunden :-) Hätte schwören können, dass sie fehlt ... Gruß UBoot-Stocki P.S.: Für Schleifen verwende ich das Prog im Anhang ...
Die Programm für schleifengeneration ist einfach genial !!! Jetzt alles funktioniert. Danke allen für die Hilfe. Andrey Richter
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.