目次8章.機能が豊富なPICを使う(PIC16F88)>(2)PIC16F84AからPIC16F88への移行

PIC16F84AからPIC16F88への移行

作成日2006.11.4 変更日2008.9.28

PIC16F84AからPIC16F88に移行する方法について記載します。
ピン互換がありますので、プログラムの一部を変えることで単純移行が可能です。

PIC16F88の新しい機能を使う場合は、別途その機能を使うための設定を追加する必要があります。

PIC16F84AからPIC16F88への移行
PIC16F88は、PIC16F84Aと比べて以下の4点の違いがあります。(単純移行する場合)
ピン互換がありますので、プログラムを修正するだけで単純移行が可能です。
(ただし、EEPROMなどの機能使用時はSFRの構成が異なりますので要注意です。)

・秋月電子のPICプログラマV4を最新化する・・・2008.9.28追記
・PICの機種指定(listとinclude文)
・コンフィグレーションビットが異なる
・汎用RAM(GPR)の先頭アドレスが異なる
・AN機能があり、電源ON時やリセット時にANが有効になっている
(1)秋月電子のPICプログラマV4を最新化する・・・2008.9.28追記
秋月電子のPICプログラマV4をお使いの場合は最新版にアップして下さい。
古いバージョンでは、PIC16F88に書き込めない場合があるようです。

(2)PICの機種指定(listとinclude文)
PIC16F84Aの場合
LIST P=PIC16F84A ; LIST宣言で使用するPICを16F84Aと定義する。
INCLUDE P16F84A.INC ; 設定ファイルp16f84a.incを読み込む。
PIC16F88の場合
LIST P=PIC16F88 ; LIST宣言で使用するPICを16F88と定義する。
INCLUDE P16F88.INC ; 設定ファイルp16f88.incを読み込む。

(3)コンフィグレーションビットが異なる
PIC16F84Aの場合
__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
PIC16F88の場合(赤の部分を追記します)
__CONFIG_CONFIG1, _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF & _BODEN_ON & _LVP_OFF & _CPD_OFF & _DEBUG_OFF

(4)汎用RAM(GPR)の先頭アドレスが異なる
汎用RAM(GPR)の先頭アドレスが以下のように異なっています。
PIC16F840Ch
PIC16F88020h
従って、EQU命令やCBLOCK命令のオペランドを変更する必要があります。

それぞれの変更例を載せます。赤の部分が変更箇所です。
PIC16F84の場合PIC16F88の場合
EQU命令
SAVE_STEQU0Ch
SAVE_WEQU0Dh
COUNTEREQU0Eh
SAVE_STEQU020h
SAVE_WEQU021h
COUNTEREQU022h
CBLOCK
命令
CBLOCK0Ch
SAVE_ST
SAVE_W
COUNTER
ENDC
CBLOCK020h
SAVE_ST
SAVE_W
COUNTER
ENDC

(5)AN機能があり、電源ON時やリセット時にANが有効になっている
PIC16F88はAN機能があり、電源ON時やリセット時に全てのポートがANモードになっています。
このため、初期処理でANSELレジスタの全ビットをOFFにして、デジタルモードに設定する必要があります。
初期処理の例
BSFSTATUS,RP0;■バンク1に切替え
CLRFANSEL;A/D未使用
BCFSTATUS,RP0;■バンク0に切替え