Sida 2 av 2
Postat: 11 mars 2008, 20:24:35
av bos
Tillägg: När folk säger "läs databladet" så innebär det inte att man ska lusläsa varje sida. Man letar upp det som är av vikt, och plockar ut det man behöver. Vad som behövs och inte lär man sig allt eftersom. På din nivå kan det dock vara svårt att veta vad som behövs, så jag förstår vad du menar att databladen är svårlästa.
Av dina inlägg att döma verkar du dock inte ha helkoll på instruktionerna, så jag rekommenderar att du först av allt läser igenom kapitlet "Instruction set" (har inte databladet för 16F690 som du använder så jag vet inte vilket kapitel det är). Det är runt 35 instruktioner det handlar om, och det är inte så mycket. Läs igenom dem och bilda dig ett hum om vad de gör, då blir det lättare att läsa kod.
Postat: 11 mars 2008, 22:29:31
av BJ
Det kan vara ganska krångligt att börja med databladet när man ska läsa om instruktionerna.
Det brukar vara lite lättare om man får se ett program med kommentarer först.
Jag vet inte om det hjälper dig så mycket, men här kan du se lite grann i alla fall.
Dom två första gör inget särskilt. Det är bara för att visa skillnaden.
Kod: Markera allt
movlw d'7' ; w = 7.
movwf antal ; antal = w.
Kod: Markera allt
movf d'7',w ; w = innehållet i adress 7.
movwf antal ; antal = w.
Kod: Markera allt
vaenta:
; (Man hoppar hit med "call vaenta".)
; Nollställ antalet.
movlw d'0' ; w = 0.
movwf antal ; antal = w.
vaenta_2:
movlw d'10' ; w = 10.
subwf antal,w ; w = antal - w.
btfss STATUS,Z ; Blev svaret 0? (Är z-biten 1?)
goto inte_10 ; z = 0: Nej. Hoppa till "inte 10".
; Z-biten blev 1. Då är antalet 10 nu.
goto slut ; Hoppa till "slut".
inte_10:
; Antalet är inte 10.
incf antal,f ; antal = antal + 1.
goto vaenta_2 ; Titta igen.
slut:
return ; Hoppa tillbaka.
Jag använde decimala tal där, men det är bara att byta ut d'10' mot b'00001010' om man vill ha det binärt.
Bara ett tips. Sen kanske det är lite lättare att förstå tabellerna för instruktionerna.
Eller också inte...

Postat: 11 mars 2008, 22:51:00
av sodjan
Notera också att beskrivningarna för varje instruktion är lite kortfattad
i själva databladen. Kapitel 29 i "Midrange Reference Manual" är bättre :
http://ww1.microchip.com/downloads/en/D ... 31029a.pdf
med minst en hel sida (och oftast 2 eller 3 kodexempel) för varje instruktion.
Även dessa delar är bättre än motsvarande delar i databladen:
http://ww1.microchip.com/downloads/en/D ... 31005a.pdf
http://ww1.microchip.com/downloads/en/D ... 31004a.pdf
http://ww1.microchip.com/downloads/en/D ... 31035a.pdf
http://ww1.microchip.com/downloads/en/D ... 31006a.pdf
http://ww1.microchip.com/downloads/en/D ... 31012a.pdf
Notera dock att Reference Manual inte är riktigt up-to-date med
avseende på de nyaste modellerna av PIC16, det är alltid
respekta datablad som gäller om det är några skillnader.
Postat: 11 mars 2008, 22:57:23
av Appotus
Stort tack till bos, BJ och sodjan för sitt senaste inlägg.
Nu vet jag lite mer vart jag ska börja leta. Återkommer om det blir några problem i framtiden.
Postat: 11 mars 2008, 23:28:15
av sodjan
"Om" ??

Postat: 12 mars 2008, 09:46:00
av HUGGBÄVERN
Appotus illustrerade med önskvärd tydlighet mitt bokproblem (annan tråd).
Postat: 12 mars 2008, 16:02:13
av bos