Sida 1 av 1
Hjälp med att ta mig ur en loop
Postat: 18 juni 2009, 21:38:20
av Spket
Hej!
Skulle behöva ha hjälp med att ta mig ur denna loop när min application har räknat färdigt. Det jag har är 8st lysdioder och jag räknar upp binärt dvs, 00000000, 00000001, 00000010, 00000011 osv. Men hur tar jag mig ur denna loop när målet 11111111 är färdigt?
Försökte göra så här tidigare
Kod: Markera allt
Lightsup
movf Display,w
movwf PORTD
incf Display,f
call Delay2
btfss Display,7
goto Lightsup
men då räknade den bara upp till 01111111 å så fortsatte den vidare med programmet.
Tacksam för hjälp
Re: Hjälp med att ta mig ur en loop
Postat: 18 juni 2009, 22:18:30
av sodjan
Kanske :
Kod: Markera allt
Lightsup
movf Display,w
movwf PORTD
call Delay2
incf Display,f
btfss STATUS, Z
goto Lightsup
?
Re: Hjälp med att ta mig ur en loop
Postat: 19 juni 2009, 09:25:16
av Spket
Funka utmärkt! Tackar
Re: Hjälp med att ta mig ur en loop
Postat: 10 augusti 2009, 16:15:28
av thomasa88
Varför inte:
Re: Hjälp med att ta mig ur en loop
Postat: 10 augusti 2009, 20:04:22
av jesse
tja.... inte så konstigt om man vet varför man skriver btfss STATUS, Z
När sätts Z-flaggan?
Flaggor är ofta väldigt kortlivade och om man gör ett call-anrop som innehåller en massa okända instruktioner så kommer den (alltså Z flaggan i det här fallet) garanterat att vara ändrad och därmed förlorar man syftet med btfss. Nu vet inte jag vad just den instruktionen gör (har aldrig programmerat PIC), men jag antar att den gör olika saker beroende på hur Z flaggan är ställd. Detta beror i sin tur på den operation man gjorde senast som påverkar Z.
Google säger: Depending on a bit status in 'f' register that is being tested, instructions skip or don't skip over the next program instruction.
Det var väl det jag misstänkte.
Re: Hjälp med att ta mig ur en loop
Postat: 10 augusti 2009, 20:44:06
av sodjan
> Varför inte:
Ja, varför inte ? Två flugor i en smäll...
incfsz = incf + btfss (på Z-flaggan), så klart...
Re: Hjälp med att ta mig ur en loop
Postat: 10 augusti 2009, 21:35:27
av jesse
äsch... jag blandade ihop thomas88:s inlägg med koden i det första (läste lite slarvigt).... vad jag svarade på var förstås varför inte den första koden fungerade... ursäkta... lite stressad just nu.
Re: Hjälp med att ta mig ur en loop
Postat: 10 augusti 2009, 22:00:09
av sodjan
> vad jag svarade på var förstås varför inte den första koden fungerade...
Och det var inte heller rätt...

Det har inte med Z flaggan att göra
eftersom testen var på bit 7 i ett vanlig register ("Display"). Och att
koden fungerar så som beskrevs i första-inlägget är ju ganska klart.
Re: Hjälp med att ta mig ur en loop
Postat: 12 augusti 2009, 10:23:31
av jesse
Ska nog hålla mig till AVR trådarna i fortsättningen
