« 78Kマイコンによる7セグLED温度計(2/2) | メイン | 作りながら学ぶPICマイコン入門のフォロー(9) »

作りながら学ぶPICマイコン入門のフォロー(8)


アセンブル時のエラー
 コンフィギュレーション・ビットの設定をPIC16F877Aと同じにするものとしていますので、__CONFIGの設定を変更しないでアセンブルした結果、次のようにいくつかの定数が未定義となりました。

PIC080010.jpg

 _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の点滅が開始しました。

 次回、その点滅の様子を確認します。

<神崎康宏>


カテゴリ:

トラックバック

このエントリーのトラックバックURL:
http://www.eleki-jack.com/mt/mt-tb.cgi/2887

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

カテゴリ

会社案内
情報セキュリティおよび個人情報の取り扱いについて

コメントとトラックバックは、spamを予防するために、編集担当が公開の作業をするまで非公開になっています。
コメントはそれぞれ投稿した人のものです。

Powered by
Movable Type 4.1