1.エディタの起動と終了
「コーディング」つまりプログラムを書くことから始めます。
コーディングを始めるためにまずエディタを起動する必要があります。
初めてのコーディング開始の時にはMPLABで、File → New と指定
します。すると白紙の状態でエディタが起動します。
また既に途中まで作成済みのソースファイルを編集する時には、
File → Open と指定すると既存のソースファイルを読み込んだ
状態でエディタが起動します。
下図はtest.asmというソースファイルをオープンした所です。
ソースファイルを作成したら、ファイルをディスクに保存します。
最初の保存の時には、File → Save as でファイル名を指定して保存
します。
2回目以降は、File → Save で上書き保存します。
保存が完了したら、File → Close でエディタを終了します。
2.ソースプログラムの書き方
ソースプログラムの書き方、つまりコーディングの仕方は、結構コツ
があり、最初は難しいかも知れませんが、まずは習うより慣れろで、
人の作ったプログラムリストを見ながら真似て作るのが最も早い
上達法です。
そこで最も簡単なプログラムリストをコメント付きで下記に示します。
これは別のページでも紹介している、発光ダイオードを一定間隔で
点灯消灯を繰り返すプログラムです。
;*********************************************
; Test program for PIC16C84
; This test is to on/off three LED at port A
;*********************************************
;最初に使うプロセッサに種類を指定
LIST P=PIC16C84
; ここからインクルードファイルの読み込み指定
INCLUDE "P16C84.INC" ;標準Include File読込み
;**********************************
; 変数のレジスターへの割当て設定
;*********************************
CNT1 EQU 0DH ;Counter for Timer
CNT2 EQU 0EH ;Counter for Timer
CNT3 EQU 0FH ;Counter for Timer
;*******************************
; 中心になる繰り返しプログラム部
;*******************************
; 開始番地の指定(必ず0番地が必要)
ORG 0 ;プログラム開始番地の指定
;ポートや変数の初期化部
MAIN ;ここから初期化部
BSF STATUS,RP0 ;ポートの入出力設定
CLRF TRISA ;Set Port A to all output
BCF STATUS,RP0 ;Set Page 0
;主プログラム部
MAINLP ;ここから主プログラム
CLRF PORTA ;Output all 0 to Port A
CALL SECTIM ;サブルーチンの呼び出し
MOVLW 0FFH ;Get FF
MOVWF PORTA ;Output all 1 to Port A
CALL SECTIM ;Wait 0.5sec
GOTO MAINLP ;Jump to Loop
;***************************
; ここからサブルーチン部
;***************************
; 0.4msec Timer Subroutine
TIM10
MOVLW 0F9H ;1
MOVWF CNT1 ;1+1=2
TIMLP1 NOP
DECFSZ CNT1,F ;1+1+2=4
GOTO TIMLP1 ;2+4*249-1=997
RETURN ;997+1=998*0.4usec=0.4msec
; 100msec Timer Subroutine
TIM100
MOVLW 0F9H ;0.4msec * 249(about)
MOVWF CNT2
TIMLP2
CALL TIM10 ;2+(1000+3)*249-1=249748
DECFSZ CNT2,F
GOTO TIMLP2
RETURN ;+1=249749
; 0.5sec Timer Subroutine
SECTIM
MOVLW 5
MOVWF CNT3 ;100msec * 5(about)
TIMLP3
CALL TIM100
DECFSZ CNT3,F
GOTO TIMLP3
RETURN
;リストの終り
END ;ソースファイルの終り
さてソースファイルが出来たら、いよいよアセンブルです。