2016-11-18 3 views
1

Ich benötige Hilfe bei Assemblercodes und Seitenüberschreitung bei Programmspeicherplätzen.Überschreiten von Seitengrenzen im Programmspeicher

ORG 0x500; 
BCF pclath,4; 
BSF pclath,3; 
CALL sub1_p1; 
. 
. 
. 
ORG 0x900; 
sub1 : 
: 
RETURN 

Wenn ich Seitengrenzen im Programmspeicher überschreiten möchte. Zum Beispiel Seite 0 bis Seite 3. Welchen Code soll ich schreiben?

Antwort

1

Die Bits 3 und 4 des PCLATH-Registers bestimmen die Seitennummer!

Beispiele:

BCF PCLATH,4 ;Select page0 
BCF PCLATH,3 ;Select page0 
CALL xpage0 
... 
BCF PCLATH,4 ;Select page 1 
BSF PCLATH,3 ;Select page 1 
CALL xpage1 
... 
BSF PCLATH,4 ;Select page2 
BCF PCLATH,3 ;Select page2 
CALL xpage2 
... 
BSF PCLATH,4 ;Select page 3 
BSF PCLATH,3 ;Select page 3 
CALL xpage3 
... 

Neuere PIC16xxx MCPUs verwenden spezielle Anweisung MOVLP.

Beispiel:

MOVLP high HiProc2 
CALL HiProc2 
... 
+0

sehr schön, aber ich will sie rufen fragen, was xpage0 tut, nennen xpage1 bedeuten? und auch diese spezielle Verwendung von MOVLP high hiproc2 ----- CALL hiproc2, dass ich nicht verstehen + seine PIC16F877, übrigens danke für die Antwort ... – aod

+0

plus ich bin Neuling in diesem ... – aod

+0

@ aod: xpage0 ist Label aus Ihr Vorgehen auf Seite 0. Die PIC16F87X-Familie ist frühestens so, dass sie MOVLP-Anweisungen nicht unterstützt, aber die neuesten unterstützt. Lesen Sie auch: http://1.microchip.com/downloads/de/DeviceDoc/41375A.pdf –

Verwandte Themen