PIC12F675/629 の I/Oピンについて

PIC12F675/629 は GP0から GP5 まで6本のI/Oがあります。いろいろの用途に使えるため慣れないと最初の設定に面くらいます。
  
入力1点、出力5点で 入力スイッチをONにしたら 5個のLEDが点滅する勉強プログラムを作る場合、先ず入力はどこにしようか検討します。 

どのI/Oピンでも入力に使えますが GP3だけは出力には使えません。 したがって、必然的にこの GP3が入力ピンになってしまいます。

GP0--GP2 は CMCON レジスタの設定により I/Oとして使えます。
GP3 は コンフイグレーションで _MCLRE_OFF にすると I/Oとして使えます。
GP4, GP5 は 同様に _INTRC_OSC_NOCLKOUT(内部RC発振)にします。

I/Oを入力にするか、出力にするかは TRISIOで設定します。但し上記のとおりGP3だけは入力専用です。この GP3はオープンドレン入力のため、プルアップ抵抗器を付けます。

簡単なプログラムでは、ほとんどのSFレジスタはデフォルトのままで設定が省略できます。
下記に設定などの参考プログラムを書いてみました。

                                       2003.10.19
;デバイスの選択とインクルードファイルの指定
   LIST P=12F675
   #INCLUDE<P12F675.INC>

;コンフイグレーションの設定
  __CONFIG _CP_OFF & _CPD_OFF & _PODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_0N & _INTRC_OSC_NOCLKOUT

;プログラムに必要なメモリーを使うならその名称とメモリーの番地指定
    CNT1   EQU   H'0020'  ;タイマー用カウンター1
    CNT2   EQU   H'0021'  ;タイマー用カウンター2

;初期設定
    BSF   STATUS,RP0    ;BANK1
    BCF   PCON,1       ;パワーONでリセットする
    BSF   PCON,0       ;ブラウンアウトリセットしない

    CALL   H'3FF'         ;__CONFIGで内部OSCを選択した
    MOVWF OSCCAL       ;から、4MHz発振の補正値を入れる

    BCF    STATUS,RP0   ;BANK0
    CLRF   GPIO        ;GPIO を初期化する
    MOVLW  B'00000111'    ;コンパレータは使わない
    MOVWF  CMCON       ;CMCON レジスタに書込む

    BSF    STATUS,RP0    ;BANK1
    MOVLW  B'00001000'    ;bit7,6は使用されていない
                       ;bit4 GP3 は入力、あとは全部出力
    MOVWF  TRISIO       ;IOピンの入出力方向を決める

    MOVLW  B'01110000'   ;bit7 は使われていない
                       ;bit6−−6=’X11’ RC OSC
                        ;bit3−−bit0=’0000’
                      ;AN3−−AN0はデジタルIO
    MOVWF  ANSEL       ;ANSEL レジスタに書込む
;(PIC12F629はANSEL  レジスタが無いため上の4行は不用)

;メインプログラム
MAIN BCF   STATUS,RP0    ;BANK0
     −−  −−−−−−−  ;メインプログラムの始まり
     −−  −−−−−−−

     −−  −−−−−−−
;プログラムの終り


 PIC目次へ     トップページへ