Hallo iedereen

Weet er soms iemand hoe je kunt tellen met adressen?

Daarmee bedoel ik dat bv. de eerste keer als je op een drukknop duwt zal de data die binnen gelezen wordt op porta verplaatst worden naar adres 24h, de tweede keer als je op drukknop duwt wordt de data verplaatst naar adres 25h, enz.

ik zelf heb al geprobeerd om dit op te lossen met indirecte adressring maar, dat werkt niet.

@on: Welke uC gebruik je ? Welke taal? Eventueel Post een een stukje code.

Hier mee kunnen we je iets meer helpen.

Robin

ik progammeer in asm en ik gebruik de PIC16F876.

@Henry S. : Ik heb dat al eens gedaan met het commando incf
maar het kunt me niet om met het daarmee bekomen getal naar een adres te verwijzen.

Gebruik je dan ook INDF en FSR voor de indirecte adressering?

linkje


         Movlw 0x24       ;laad de pointer met RAM adres 24
         movwf FSR        ;FSR is deze pointer
 Lus:    Movf PORTB,W     ;Zet de waarde van poortB in W
         movwf INDF       ;verplaats de waarde in W naar de RAM cel waar de pointer heen wijst
         incf FSR         ;verhoog de pointer
         btfss PORTB.0    ;als knop ingedrukt (actief laag) dan opnieuw
         goto Lus

[Bericht gewijzigd door ScuD op (60%)]

hey, dankjewel voor de tip ik had het zelf ook al eens geprobeerd maar ik hed steeds INDF zitten optellen ipv FSR.

Is het op deze manier ook mogenlijk om de omgekeerde weg op te gaan? want die heb ik ook nodig.

daarmee bedoel ik dat je dus met een tweede drukknop steeds de geheugens waarin nu de data zit opgeslagen, 1 voor 1 kunt gaan bekijken wat er juist in zit in dat adres.

Dus 1 keer drukken is uitlezen wat er in adres 24 staat,2 keer drukken is uilezen wat er in adres 25 staat,enz.

tuurlijk dan doe je ipv

movwf INDF ;verplaats de waarde in W naar de RAM cel waar de pointer heen wijst

movf INDF,w ;verplaats de ram cel naar W