Sida 1 av 1
Vart tog "goto $-1" vägen??
Postat: 3 juni 2008, 17:46:16
av SM7UCZ
Håller på och konverterar ett gammalt 16F873 program till 18F2220 processor. Har märkt att genvägen vid hopp t.ex "goto $-1" funkar dåligt. Finns det något liknande i 16 bit coden?
Postat: 3 juni 2008, 17:56:57
av bearing
Vad menar du med "funkar dåligt?"
Symbolen $ är ju PC:ns värde. Om det värdet blir fel så är det antagligen fel i assemblern. Fast det verkar inte troligt. Visa oss koden som funkar dåligt.
Postat: 3 juni 2008, 18:09:57
av SM7UCZ
Jag hade denna text i 16F873
;************************************************************
delay1
clrwdt
clrf slask
clrf slask1
movlw .25
movwf slask1
lab1
clrwdt
decfsz slask,f ;fördröjningsregister
goto $-2
decfsz slask1,f
goto $-4
return ;återgå dit anropet kom ifrån
;***********************************************************
När jag ändrat "goto lab1" funkade programmet
Postat: 3 juni 2008, 18:25:02
av JockeE
I PIC18 tar varje instruktion två byte, vilket innebär att alla instruktioner ligger på jämna adresser, om du bara hoppar en byte hamnar du helt fel. Alltså måste goto $-1 bli goto $-2.
Men vissa instruktioner tar upp ännu mer utrymme, dessutom blir koden svårläst med dessa $xxx. Så jag rekommenderar starkt att man använder riktiga labels istället.
Postat: 3 juni 2008, 18:32:29
av SM7UCZ
Då har jag en förklaring.
Jag fick ju även en varning vid kompileringen
Tack!
Postat: 3 juni 2008, 19:17:00
av sodjan
Strunta help i $-hopp och kör med labels enbart.
En anledning har du just upptäckt...
> Jag fick ju även en varning vid kompileringen
- Exakt vilken varning var det ?
- Vad sa den varningen dig ??
- Varför fanns inte varningen med i ditt *första* inlägg ????
Är det det faktum att du fick en varning som du menar "funkar dåligt" ??
Postat: 3 juni 2008, 19:20:12
av strombom
Helt underbart roligt att det verligen fungerade just "dåligt" i den här koden

(den missar ju bara clrwdt)
clrwdt
decfsz slask,f ;fördröjningsregister
goto $-2
decfsz slask1,f
goto $-4
att goto $-4 hoppar via goto $-2 var störtskönt

Postat: 3 juni 2008, 19:25:38
av ahlsten
sodjan skrev:
1. Exakt vilken varning var det ?
1. Vad sa den varningen dig ??
2. Varför fanns inte varningen med i ditt *första* inlägg ????
Fibonacci-numrering?

Lite OT, sry...
Postat: 3 juni 2008, 19:32:38
av strombom
ahlsten: du ska självklart addera siffran med antalet frågetecken och dela med två (avrunda uppåt)