Forum: Mikrocontroller und Digitale Elektronik PIC: indirekte Adressierung


von Daniel (Gast)


Lesenswert?

Hallo,

Beispiel aus dem Datenblatt zum Löschen der Bank 1
1
LFSR FSR0, 100h 
2
NEXT  CLRF POSTINC0
3
BTFSS FSR0H, 1
4
BRA NEXT
5
CONTINUE


Ich denke, dass folgendes gilt
FSR0 = FSR0H, FSR0L

dann habe ich doch direkt eine 1 in FSR0H und skipe BRA
POSTINC0 macht 0x100 -> 0x101, folglich bleibt 1 immernoch in FSR0H
Oder mache ich irgendwo eine falsche Annahme?

noch eine Frage
Geht statt
LFSR FSR0, 100h
auch
MOVLW 0x00
MOVWF FSR0L
MOVLW 0x01
MOVWF FSR0H
?

Gruß

von Dieter W. (dds5)


Lesenswert?

Daniel schrieb:
> Hallo,
>
> Beispiel aus dem Datenblatt zum Löschen der Bank 1
>
>
1
> LFSR FSR0, 100h
2
> NEXT  CLRF POSTINC0
3
> BTFSS FSR0H, 1
4
> BRA NEXT
5
> CONTINUE
6
>
>
>
> Ich denke, dass folgendes gilt
> FSR0 = FSR0H, FSR0L
>
> dann habe ich doch direkt eine 1 in FSR0H und skipe BRA
> POSTINC0 macht 0x100 -> 0x101, folglich bleibt 1 immernoch in FSR0H
> Oder mache ich irgendwo eine falsche Annahme?

Der Befehl BTFSS FSR0H, 1 macht erst einen skip, wenn der Inhalt sich 
von 1 in 2 geändert hat (die 1 ist die Bitnummer, nicht der Wert).

> noch eine Frage
> Geht statt
> LFSR FSR0, 100h
> auch
> MOVLW 0x00
> MOVWF FSR0L
> MOVLW 0x01
> MOVWF FSR0H
> ?
>
> Gruß

Ja, das geht genauso, braucht nur doppelt so viel Speicherplatz und 
Verarbeitungszeit und zusätzlich wird das W-Register verändert.

von Daniel (Gast)


Lesenswert?

Dieter Werner schrieb:
> BTFSS FSR0H, 1

argh .. es wird ab 0 gezählt
super, danke dir

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.