Hur "loopar" man minnesplatser i assembler för en PIC?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
MrDude
Inlägg: 21
Blev medlem: 18 september 2008, 17:50:21
Ort: Stockholm

Hur "loopar" man minnesplatser i assembler för en PIC?

Inlägg av MrDude »

Hej!

Jag är ny på PIC-programmering, så jag kan tänka mig att jag borde skämmas mer än jag gör för att ställa en så enkel fråga, men... Säg att jag tar kanske 10 (små) värden som jag sparar undan i en variabel, adc, som jag har deklarerat som:

> VAR UDATA_SHR
> adc RES 10
> tmp RES 1

och vill göra något som tex:

> movlw .1
> movwf tmp
> movf adc+tmp,w ;<--- problem
> addwf adc,f

..och sen loopa tillbaka och öka på tmp med 1 upp till 10 för att gå igenom alla värden och lägga dom i första värdet "adc+0". Hur löser jag detta så att MPLAB inte tycker koden är för komplex? Utan loop, som:

> movf adc+1,w

osv med adc+2,adc+3,...,adc+10

...fungerar ju, men det är inte så kul lösning om det är flera värden.

För andra nybörjare hittade jag en väldigt bra guide på http://www.gooligum.com.au/tutorials.html för några månader sedan. Fast det kanske är gamla nyheter för er här. Jag tycker i varje fall den guiden var väldigt bra jämfört med många andra. Den är bra skriven, grundlig, och väldigt gratis om man inte vill skänka pengar till dom. Det vill jag ifos, men eftersom jag är studerar och har 0 kr på banken så får det vänta tills jag är klar i plugget (och ja, om jag minns och fortfarande har nytta av guiderna då så tänker jag faktiskt ge dom pengar (någonting i varje fall) - dom är värda det).
Användarvisningsbild
Icecap
Inlägg: 26638
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Hur "loopar" man minnesplatser i assembler för en PIC?

Inlägg av Icecap »

Kolla på INDF.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hur "loopar" man minnesplatser i assembler för en PIC?

Inlägg av sodjan »

Och INDF beskrivs i kapitlet om "Indexed addressing" eller något liknande i databladet.
Du laddar alltså ett "indexregister" med adressen till början av din buffert :

MOVLW adc
MOVWF FSR

Sedan "läser" du från indf :

MOVF INDF, w

sedan kan du räkna upp/ner värdet i FSR för att stega fram/bak...
MrDude
Inlägg: 21
Blev medlem: 18 september 2008, 17:50:21
Ort: Stockholm

Re: Hur "loopar" man minnesplatser i assembler för en PIC?

Inlägg av MrDude »

Perfekt!
Tack för hjälpen =)
Skriv svar