アセンブル時のエラー
コンフィギュレーション・ビットの設定をPIC16F877Aと同じにするものとしていますので、__CONFIGの設定を変更しないでアセンブルした結果、次のようにいくつかの定数が未定義となりました。
_RC_OSCの外部のRC発振回路を指定する定数と、_WRT_ENABLE_ONのプログラム・メモリの書き込みができるように設定する定数が未定義となりました。
PIC16F877のプログラムでは利用できたのが、今回のPIC16F88のプログラムとしてアセンブルしたらエラーになりました。
アセンブル時に、各デバイスに対応したインクルード・ファイルが読み込まれます。このファイルでの定義が異なっている可能性があります。
PIC16F88.incのプログラムメモリの書き込みに対する設定は次のようになっていました。
_WDT_OFFはPIC16F88.incに含まれていませんので_WRT_PROTECT_OFFに変更する必要があります。
PIC16F88のインクルード・ファイル
_WRT_PROTECT_OFF EQU H'3FFF' ;No program memory write protection
_WRT_PROTECT_256 EQU H'3DFF' ;First 256 program memory protected
_WRT_PROTECT_2048 EQU H'3BFF' ;First 2048 program memory protected
_WRT_PROTECT_ALL EQU H'39FF' ;All of program memory protected
発振回路の指定
発振回路のConfiguratio bitの指定はPIC16F877では2ビットで指定していますが、PIC16F88では3ビットで指定し、その定義のための定数は次のようになります。
_EXTRC_CLKOUT EQU H'3FFF'
_EXTRC_IO EQU H'3FFE'
_INTRC_CLKOUT EQU H'3FFD'
_INTRC_IO EQU H'3FFC'
_EXTCLK EQU H'3FEF'
_HS_OSC EQU H'3FEE'
_XT_OSC EQU H'3FED'
_LP_OSC EQU H'3FEC'
今回は、_RC_OSCに代えて_EXTRC_CLKOUTか_EXTRC_IOにします。15番ピンをクロック・アウトにする場合_EXTRC_CLKOUTにします。15番ピンをI/Oポートとして使用する場合_EXTRC_IOに設定します。ここでは15番ピンを特にI/Oに割り当てていませんので、まず_EXTRC_CLKOUTで設定します。
以上の変更を行って、アセンブルすると、
Error[126] \PIC16F880010.ASM 5 : Argument out of range (not a valid config register address)
コンフィグレーション・レジスタのアドレスが正しくないとのエラーが生じます。PIC16F88のインクルード・ファイルには次に示すように、_CONFIG1と_CONFIG2の二つのコンフィグレーション・ワードのアドレスを明示して、コンフィグレーション・ビットを設定するディレクティブの例が示されています。
; To use the Configuration Bits, place the following lines in your source code ; in the following format, and change the configuration value to the desired ; setting (such as CP_OFF to CP_ALL). These are currently commented out here ; and each __CONFIG line should have the preceding semicolon removed when ; pasted into your source code.;Program Configuration Register 1
__CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_OFF & _WDT_OFF & _HS_OSC;Program Configuration Register 2
__CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF
PIC16F88は、新たな機能が追加され、その機能のオン/オフのため新たなコンフィグレーション・ワードが設定されています。今回の追加された2つの機能は使用しませんので、デフォルトの機能オフのままとします。
_HS_OSCを_EXTRC_CLKOUTに変更
クロックは外付けのCR回路で15番ピンをクロックの出力にしています。そのためにサンプルのディレクティブの_HS_OSCを_EXTRC_CLKOUTに変更しアセンブルします。今度はワーニングのエラーが二つだけでアセンブルは完了します。ブレッドボードのPIC16F88にプログラムを書き込むと、LEDの点滅が開始しました。
次回、その点滅の様子を確認します。
