目次>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)の先頭アドレスが以下のように異なっています。
-
従って、EQU命令やCBLOCK命令のオペランドを変更する必要があります。
- それぞれの変更例を載せます。赤の部分が変更箇所です。
-
| PIC16F84の場合 | PIC16F88の場合
| EQU命令
|
SAVE_ST | | EQU | | 0Ch
| SAVE_W | | EQU | | 0Dh
| COUNTER | | EQU | | 0Eh
|
|
SAVE_ST | | EQU | | 020h
| SAVE_W | | EQU | | 021h
| COUNTER | | EQU | | 022h
|
| CBLOCK 命令
|
| CBLOCK | | 0Ch
| | SAVE_ST | |
| | SAVE_W | |
| | COUNTER | |
| | ENDC | |
|
|
| CBLOCK | | 020h
| | SAVE_ST | |
| | SAVE_W | |
| | COUNTER | |
| | ENDC | |
|
|
| (5)AN機能があり、電源ON時やリセット時にANが有効になっている
|
PIC16F88はAN機能があり、電源ON時やリセット時に全てのポートがANモードになっています。
このため、初期処理でANSELレジスタの全ビットをOFFにして、デジタルモードに設定する必要があります。
- 初期処理の例
-
BSF | | STATUS,RP0 | | ;■バンク1に切替え
| CLRF | | ANSEL | | ;A/D未使用
| BCF | | STATUS,RP0 | | ;■バンク0に切替え
|
|
|