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.