PIC の バンク と ページ
 
バンク と ページ は同じ?
PICのプログラミングにクビを突っ込んだ当初、何とか見つけ出した参考書の中にPIC16F84のためのサンプルプログラムの解説があり、バンクはページと表現されていました。

後にPIC16F877のプログラミングをするに至って、バンクとページは違うものであると判りました。 知ってしまえばたいしたことではないのですが、参考書が聖書であるうちは大いに悩みました。

バンク
PICの制御レジスタやプログラムでユーザが使用する汎用レジスタ(RAM、SRAM)の配置を区分したものがバンクです。

ページ
 ユーザーがPICのプログラムを書込むメモリ(ROM、FlushPM)をあるブロックごとに区切ったものがページです。

PIC12F675
このPICは BANK0 と BANK1 の二つのバンクにデータSRAMが 合計64バイトあります。

プログラムメモリは 1Kx14ビット(0000h−03FFh)まで一本になっていてページ区分はありません。

PIC16F84

このPICは BANK0 と BANK1 の二つのバンクにデータRAMが 合計68バイトあります。
PORTA や PORTB のレジスタアドレスは BANK0 にあり、そのレジスタの入出力を決めるレジスタ TRISA や TRISB は BANK1 にあります。この切替えは STATUS レジスタの bit5を 0にするか1にするかで決まります。

プログラムメモリーは 0000h〜1FFFh番地の1Kx14ビットで一本になっています。 したがってこのデバイスではページ区分はありません。

PIC16F877
このPICのデータメモリ(RAM)は368x8バイトあり BANK0〜BANK3 までの四つのバンクに区分されています。

プログラムメモリーは 8Kx14ビットあり 0005h〜07FFh、 0800h〜0FFFh、1000h〜17FFh、 1800h〜1FFFh の ページ0からページ3まで4つのページに 2Kx14ビットづつ区分されています。 

慣れないとプログラミング時、このページ切替えに悩まされます。

PIC18F452
このPICでは バンクは 0〜15 までありますが、実際に使用されるのは 0〜5と15のバンクです。1つのバンクは256バイトになっています。プログラム作成時にバンク切替を行なう方法と、バンク切替はせず連続して使う方法があります。

バンク15の後半128バイトはSFR(Special Function Resister)用で、前半の128バイトは使えません。

プログラムメモリーは 32KBありページに区切られていないため、プログラム上のページ切替え操作は不要です。1命令語あたり2バイトづつ使うため見掛のメモリー量は16Kになります。
                                   2003.1.26
        
PIC目次へ        トップページへ