Hjälp med Hello World program

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
bos
Inlägg: 2306
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Inlägg 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.
BJ
Inlägg: 8864
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Inlägg 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... ;)
sodjan
EF Sponsor
Inlägg: 43231
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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.
Appotus
Inlägg: 52
Blev medlem: 20 januari 2008, 15:39:19
Ort: Borås
Kontakt:

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43231
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

"Om" ?? ;-) ;-)
Användarvisningsbild
HUGGBÄVERN
Tidigare soundbrigade
Inlägg: 34655
Blev medlem: 23 augusti 2006, 22:44:11
Ort: Lilla Paris
Kontakt:

Inlägg av HUGGBÄVERN »

Appotus illustrerade med önskvärd tydlighet mitt bokproblem (annan tråd).
bos
Inlägg: 2306
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Inlägg av bos »

Skriv svar