PIC18F452 の メモリ

プログラムメモリ


PIC18F452 
のプログラムメモリーは 0000hから 7FFFhまでの32KBあります。

このPICは単一命令が2バイト、分岐命令などは4バイト使います。単一命令を使用するなら16Kまで使えることになります。

メモリー2バイトがセットになるため
 PIC18F452のプログラムカウンタはプログラムメモリー上を2バイトづつ進みます。
つまり0、2、4、6、8、・・・7FFEh 
とカウントして行きます。

PIC16F877 のプログラムを PIC18F452 に移植する際 ADDWF PCL などのテーブルを使った部分には注意が必要です。 (テストしてみたプログラム例を別のページに掲げます。)

プログラムメモリ 0000h から 7FFFh番地の始めに次の特定の Vector があります。
    0000h : リセット
    0008h : 高位の割込み
    0018h : 低位の割込み
 
データメモリ(RAM)

  バンク   バンクごトのアドレス   BANKを使わないとき
  BANK 0   00h 〜 FFh      000h 〜 0FFh
  BANK 1   00h 〜 FFh      100h 〜 1FFh
  BANK 2   00h 〜 FFh      200h 〜 2FFh
  BANK 3   00h 〜 FFh      300h 〜 3FFh
  BANK 4   00h 〜 FFh      400h 〜 4FFh
  BANK 5   00h 〜 FFh      500h 〜 5FFh
  BANK15   00h 〜 FFh      F00h 〜 FFFh

  (BANK 6 〜 BANK 14 の間には使用できるメモリがありません)

  F00h 〜 F7Fh 間は使用されません。
  F80h 〜 FFFh 間は SFR用として使います。

SFR(例えば PORTA PORTB TRISA TRISB など)はこの F80h〜FFFhの中に定義されています。

命令語のオペコードに a というものがあります。 例えば MOVF f[,d[,a] を a=0 にすればデータメモリーの BANK0 前半128バイトと BANK15 の後半128バイトが BSR の値に関係無くアクセスできます。

a=1 とした場合は BSR の値が指すバンクのデータメモリがアクセスされます。
このときのバンク選択は BSR の末尾に4ビットの数値を MOVLB 命令で入れます。
    
   末尾4ビット=0x00 Bank 0
          =0x01 Bank 1
          =0x02 Bank 2
          =0x03 Bank 3
          =0x04 Bank 4
          =0x05 Bank 5
          =0x0F Bank15

Bank の設定は MOVLB,0x0n で BSRに指定するバンクの値が入ります。
 
 データEEPROM

データEEPROMは256バイトあり、1バイトごとに書込み,読出しができます。
書込みのときは決められた書込みシーケンスにより自動的に前のデータが消去されます。

プログラムメモリやデータEEPROMの読書きを制御するレジスタにEECON1がありますが、
PIC16F877のものと較べると bit6(CFGS)とbit4(FREE) の中身が増えています。

    CFGS=1 は コンフイギュレーションレジスタなどのアクセスをおこない
    CFGS=0 なら プログラムメモリやデータEEPROMをアクセスします。

    FREE=1 はプログラムメモリの消去を行なうときで
    FREE=0 なら書込みのみ可能にするものです。

                                     2002.11.25
                                     2003.2.22改定
PIC目次へ       トップページへ