PICでは、マイコンの内部動作を規定するために、コンフィグレーション用のデータが存在します。
PIC16F84Aマイコンの場合、このデータはプログラムメモリの0x2007番地に存在します。0x2007番地は、ユーザプログラムメモリの範囲外なので、通常のアセンブラ命令では値のセットを行うことができません。
それでは、この値をどうやって指定するのかという疑問が出てくるのですが、MPLABのアセンブラでは__CONFIG命令でこの値を設定することができます。
ここでは PIC16F84Aのコンフィグレーションビットの内容について確認してみます。
まず、アセンブラプログラム上での指定方法ですが、以下のような記述になります。
LIST P=16F84A INCLUDE P16F84A.INC __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF |
3行目の__CONFIGがコンフィグレーションビットの定義で、指定したい項目を&で列挙して指定します。
何の値が指定できるかはインクルードしているP16F84A.INCに記載されています。
;========================================================================== ; ; Configuration Bits ; ; NAME Address ; CONFIG 2007h ; ;========================================================================== ; The following is an assignment of address values for all of the ; configuration registers for the purpose of table reads _CONFIG EQU H'2007' ;----- CONFIG Options -------------------------------------------------- _FOSC_LP EQU H'3FFC' ; LP oscillator _LP_OSC EQU H'3FFC' ; LP oscillator _FOSC_XT EQU H'3FFD' ; XT oscillator _XT_OSC EQU H'3FFD' ; XT oscillator _FOSC_HS EQU H'3FFE' ; HS oscillator _HS_OSC EQU H'3FFE' ; HS oscillator _FOSC_EXTRC EQU H'3FFF' ; RC oscillator _RC_OSC EQU H'3FFF' ; RC oscillator _WDTE_OFF EQU H'3FFB' ; WDT disabled _WDT_OFF EQU H'3FFB' ; WDT disabled _WDTE_ON EQU H'3FFF' ; WDT enabled _WDT_ON EQU H'3FFF' ; WDT enabled _PWRTE_ON EQU H'3FF7' ; Power-up Timer is enabled _PWRTE_OFF EQU H'3FFF' ; Power-up Timer is disabled _CP_ON EQU H'000F' ; All program memory is code protected _CP_OFF EQU H'3FFF' ; Code protection disabled |
このファイルは、インストール先をデフォルトで指定した場合は、C:\Program Files\Microchip\MPASM Suite\の下あたりにあります。
大まかに、オシレータの指定、WatchDogタイマー、パワーアップタイマー、コードプロテクションの指定が可能な事が分かります。
各項目の詳細はMicrochipが提供しているデータシートを見る事で確認できます。
(下記PDFのp21あたりに記載されています。)
PIC16F84A Data Sheet
コンフィグレーションビットで指定できる内容ですが、PICの種類が変わるとこの指定項目や方法は微妙に変わる可能性があります。
たとえば、PIC16F88では、コンフィグを指定可能なメモリがが2つあり、それぞれ_CONFIG1, _CONFIG2と呼ばれています。
このため以下のような記述で、どちら側のメモリを操作するのか指定する必要があります。
__CONFIG _CONFIG1, _HS_OSC &... __CONFIG _CONFIG2, _IESO_OSC &... |
この辺は、やはり該当チップのincファイルをチェックすると記載されています
;========================================================================== ; Configuration Bits ; NAME Address ; CONFIG1 2007h ; CONFIG2 2008h ;========================================================================== ; The following is an assignment of address values for all of the ; configuration registers for the purpose of table reads _CONFIG1 EQU H'2007' _CONFIG2 EQU H'2008' ... |
関連記事
コメントを残す