LED回路 工作部屋 > PIC16F886 2Kワードを超えたページ間の移動 【最終更新日:2011/6/21】
2Kワードを超えたページ間の移動
2Kワードを超えてPage間を移動する場合、プログラム記述中でジャンプするPageにあったPCLATHの3Bitと4Bitを変更する必要がある。

Page間を移動して、LEDが1秒間隔で点滅するプログラム例

Call で Page2 へ移動する場合

Main
;PCLAHをPage2に設定
 bsf  PCLATH,3
 bcf  PCLATH,4
 call  LED_Set ;Page2へ移動
 bcf  PCLATH,3 ;@
 bcf  PCLATH,4 ;@
 goto  Main2

 org  0x800
LED_Set
 bsf  LED1
 bsf  LED2
 call  Wait ;1sec待ち
 bcf  LED1
 bcf  LED2
 call  Wait ;1sec待ち
 return


goto で Page2 へ移動する場合

Main
;PCLAHをPage2に設定
 bsf  PCLATH,3
 bcf  PCLATH,4
 goto  LED_Set ;Page2へ移動
 goto  Main

 org  0x800
LED_Set
 bsf  LED1
 bsf  LED2
 call  Wait ;1sec待ち
 bcf  LED1
 bcf  LED2
 call  Wait ;1sec待ち
 bcf  PCLATH,3 ;@
 bcf  PCLATH,4 ;@
 goto  Main ;@

主に使用するレジスタ
Bank0
PCL Program Counter(PC) Least Significant Byte
PCLATH - - - Bit4 Bit3 Upper bit of the PC
レジスタの説明
PCLATH Bit3、Bit4でページ移動
<4:3>
00 = Page1
01 = Page2
10 = Page3
11 = Page4