コーディング


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         ;ソースファイルの終り


さてソースファイルが出来たら、いよいよアセンブルです。


次ページへ      目次ページへ