PICのデータメモリの構造

【データメモリとは?】

データメモリはプログラムメモリとは独立に備えられている
読み書き可能なデータ格納専用のメモリで、PICの特徴ある
アーキテクチャの一つとなっています。
このデータメモリは下記の2種類に別れており、いずれも
読み書きが行われます。

(1) Special Function Register (SFR)
  CPUの機能動作を指定したり、周辺デバイスの機能、動作
  を指定するためのレジスタです。
(2) General Purpose Register (GPR)
  汎用のデータエリアとして使用し、変数やバッファとして
  使います


【データメモリの構造】

データメモリは128バイトを単位とする最大4つの「Bank」から構成
されています。
また、各エリアは「直接アドレッシング」と「間接アドレッシング」の
2通りでアクセスすることができます。
このアクセスのためのアドレス構造は下図のようになっています。

(1) 直接アドレッシングの場合
  この場合は、「STATUS」レジスタにある2ビットのBank指定用の
  ビットRP0、RP1と命令のOPコード内のf レジスタを使います。
       RP1  RP0  Bank
        0   0    0
        0   1    1
        1   0    2
        1   1    3



RP0,1でBankを
指定し、命令の
f opecodeで
場所を指定する
ことで任意の場
所をアクセスで
きる。




(2) 間接アドレッシングの場合
  この間接アドレッシングとは何かというと、FSRレジスタにアドレス
  を設定し、INDFレジスタを経由して間接的にデータメモリの読み
  書きをする方法です。この場合のアドレスは「STATUS」レジスタに
  あるIRPビットとFSRの最上位ビットの2ビットでBankを指定します。
       IRP  FSR<7>  Bank
        0   0      0
        0   1      1
        1   0      2
        1   1      3


IRPとFSR<7>で
Bankを指定し
FSR<0:6>で場所
を指定することで
任意の場所を指
定できる

【プログラミングテクニック】

(1) 間接アドレッシングのテクニック
  間接アドレッシングの例として、Bank0の汎用RAMエリア
  の20Hから3FHまでを連続クリアするプログラムは下記
  のようになる。

     BCF   STATUS,IRP   ;Indirect addressing Bank0/1
     MOVLW  0x20      ;Initial pointer to RAM
     MOVWF  FSR       ;set to pointer
  NEXT CLRF   INDF      ;clear RAM area
     INCF   FSR,F      ;FSR+1
     BTFSS  FSR,4      ;end test(0x30)
     GOTO   NEXT 

(2) Bank切替えのテクニック
 単純にBankを切り替えてデータをアクセスする時のプログラムの
 書き方は下記の様にします。

     BSF   STATUS,RP0  ;Set page 1
     MOVLW  0x10     ;only RA4 input
     MOVWF  TRISA     ;PortA is all output
     CLRF   TRISB     ;Port B is all output
     BCF   STATUS,RP0  ;Set Page 0
     CLRF   PORTB     ;reset
     MOVLW  1
     MOVWF  PORTA     ;light on dot




   次のページへ        目次ページへ