[PIC]PIC16F84Aのコンフィグレーションビットを指定する

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'
...


関連記事

コメントを残す

メールアドレスが公開されることはありません。