代表的な命令

LIST使用するPICの種類などを定義する
INCLUDE設定ファイルを指定する
__CONFIGPICの動作モードなどを指定する
EQU定数をラベル名で定義する
CBLOCK連続した定数をラベル名で定義する
ENDC
ORG以降の命令の先頭アドレスを指定する
ENDソースの最後である事を定義する

使用例

LIST    P=PIC16F84A  ; LIST宣言で使用するPICを16F84Aと定義する~
INCLUDE P16F84A.INC  ; 設定ファイルp16f84a.incを読み込む

__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF

ORG     0           ; リセットベクタ(0番地)を指定する。

LIST命令

LIST命令では、使用するPICの種類を定義します。

LIST	 P=PIC16F84A

INCLUDE命令

INCLUDE命令では、設定ファイルを指定します。
設定ファイルは、PICの種類毎にアセンブラ(MPLAB IDE)により提供されています。

INCLUDE	 P16F84A.INC

__CONFIG命令<PIC16F84A>

__CONFIG命令では、PICの動作モードを指定します。
設定できる値は以下の通りです。(PIC16F84の場合)
それぞれの設定値は、「&」でつなげて記述します。

動作モード設定値と意味>
コードプロテクト有無_CP_ONコードプロテクトする
_CP_OFFコードプロテクトしない
オシレータの種類_LP_OSC100KHz以下(水晶振動子,省電力モード)
_XT_OSC4MHz以下(水晶振動子orセラミック振動子)
_HS_OSC4MHz〜20MHz(水晶振動子orセラミック振動子)
_RC_OSC4MHz以下(R/C発振)
パワーアップタイマ有効・無効_PWRTE_ONパワーアップタイマ有効
_PWRTE_OFFパワーアップタイマ無効
ウォッチドックタイマ使用有無_WDT_ONウォッチドックタイマ有効
_WDT_OFFウォッチドックタイマ無効

EQU命令

EQU命令は、オペランドで指定した値を使う代わりにラベルで指定した名前を使用できるようにします。
例えば、データメモリの0Ch番地(汎用RAMの先頭)をカウンタで使用するケースでは、以下のどちらの方法でも同じ結果になりますが、名前が付いていた方が分かりやすいです。

0Ch番地を値で参照

DECFSZ		0Ch,F

0Ch番地を名前で参照

COUNTER	EQU	 0Ch
DECFSZ		COUNTER,F

また、汎用レジスタの先頭アドレスは、PICの種類により異なりますので、名前を付けて使っていれば別の機種に移行する時も楽になります。(EQU命令のアドレスを変えるだけで良い)

CBLOCK,ENDC命令

CBLOCKとENDC命令は、EQU命令と同じで、値に名前を付ける命令です。
EQU命令との違いは、連続した値に名前を付ける時、個々の名前に値を指定せずにCBLOCK命令のオペランドで値を指定すれば、ENDCまでの名前に+1した値が自動的に割り当てられます。
CBLOCK〜ENDC命令の例を、EQU命令と対比して載せます。

CBLOCK〜ENDCの例

CBLOCK		0Ch
SAVE_ST	
SAVE_W		
COUNTER	
ENDC		

同じ事をEQU命令で書くと

SAVE_ST	EQU	0Ch
SAVE_W		EQU	0Dh
COUNTER	EQU	0Eh

ORG命令

ORG命令は、以降に続く命令をプログラムメモリの何番地から格納するかを指定します。

プログラムの先頭では、通常以下のように記述します。

ORG	 0	; リセットベクタ(0番地)を指定
GOTO	 START	; STARTに行く
ORG	 4	; 割込みベクタ(4番地)を指定
		; ここに割込み処理を記述
START		; ここから通常処理開始

割込みについては、(5)TMR0割込みを使うの「割込みとは」を参照。

END命令

END命令は、ソースプログラムの最後を宣言する命令で、最終行に記述します。

END

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-11-27 (月) 23:39:34