目次8章.機能が豊富なPICを使う(PIC12F683)内部クロックを使う>ソース

内部クロックを使う(ソース)

更新日2005.12.17

以下のソースを取り込んで、アセンブル→PIC書き込み→実行して下さい。

; ========================== ここから ==============================
;
;	PIC12F683
;	clock:INTOSCIO 8MHz
;
;	内部クロック(8MHz)の動作確認
;       全てのピン(6ピン)をデジタルIOで使用
;	GP0-2,GP4-5:LED(5個)
;       GP3: 未使用
;
;	0.5秒毎にLEDを点滅させる
;	時間は、命令のループにより待ち合わせる
;
;
        LIST    P=12f683
        #INCLUDE <p12f683.inc>

        __CONFIG _CP_OFF & _CPD_OFF & _WDT_OFF & _BOD_ON & _IESO_OFF& _PWRTE_ON & _INTOSCIO & _MCLRE_OFF


T05mCNT EQU     020h        ;0.5mSループカウンタ
T100CNT EQU     021h        ;100mSループカウンタ
T05SCNT EQU     022h        ;0.5Sループカウンタ

        ORG     0

;    PICの初期化
INIT
        MOVLW   07h  
        MOVWF   CMCON0      ;GP2-0はデジタルIO  

        BSF     STATUS,RP0  ;■バンク1に切替え
        CLRF    TRISIO      ; GP0-5は出力
        MOVLW   070h        ; CLOCK=8MHz
        MOVWF   OSCCON
        CLRF    ANSEL       ;デジタルIO(AN機能を使用しない)
        BCF     STATUS,RP0  ;■バンク0に切替え

;    メイン処理
MAIN
        MOVLW   03Fh
        MOVWF   GPIO        ; 5個のLED全て点灯
        CALL    T05S        ; 0.5秒待つ

        CLRF    GPIO        ; 5個のLED全て消灯
        CALL    T05S        ; 0.5秒待つ
        GOTO    MAIN


;    タイマルーチン

    ; << 0.5S待つサブルーチン >>
T05S
        MOVLW   D'5'        ; ループ回数5を
        MOVWF   T05SCNT     ;  セット
T05LP   CALL    T100mS      ; 100mS待つ
        DECFSZ  T05SCNT,F   ; ループ回数−1して0になったら次の命令をスキップ
        GOTO    T05LP
        RETURN              ; このサブルーチン呼出し元に戻る


    ; << 100mS待つサブルーチン >>
T100mS
        MOVLW   D'200'      ; ループ回数200を
        MOVWF   T100CNT     ;  セット
T100LP  CALL    T05mS       ; 0.5mS待つ
        DECFSZ  T100CNT,F   ; ループ回数−1して0になったら次の命令をスキップ
        GOTO    T100LP      ;
        RETURN              ; このサブルーチン呼出し元に戻る


    ; << 0.5mS待つサブルーチン >>
T05mS
        MOVLW   D'249'      ; ループ回数249を
        MOVWF   T05mCNT     ;  セット
T05mLP  NOP                 ; 何もせず1サイクル消費
        DECFSZ  T05mCNT,F   ; ループ回数−1して0になったら次の命令をスキップ
        GOTO    T05mLP      ;
        RETURN              ; このサブルーチン呼出し元に戻る

        END
; =========================== ここまで ===============================