PICの入出力ピンの制御方法

【入出力ピンの制御方法】

入出力ピンに出力する場合には、2つのステップが必要です。
すなわち、モード設定をしてから、実際のデータ入出力を行います。


(1)モードの設定

 まず、入出力ポートのモード設定をします。その後実際の入力や出力動作
をします。
 モードの設定は、TRISA、TRISBなどと呼ばれるレジスタに書きこみます。
しかしこのレジスタはバンク1にあるのでバンク切替をする必要があります。

ではこのバンクとは何なのでしょうか。
PICの命令構造を良く見ると、レジスタを指定する f は7ビットしかありません
から、PICのレジスタファイルは最大7F番地までしか指定できません。
つまり128個までということです。
しかし、これでは、一寸大きなプログラムで変数を多く使おうとするとレジスタ
が不足し、プログラムが作りにくくなってしまいます。

 そこでこれ以上のレジスタを持てるようにするため、バンクという考え方が
使われています。つまり、下図に示すように、128個のレジスタ群を最大4個
まで持てるようにして、STATUSレジスタの中にこのバンクを指定するための、
RP0,RP1と呼ぶ2ビットを用意したのです。
詳しくは「PICメモリ構造」を参照して下さい。

RP0,1でBankを
指定し、命令の
f opecodeで
場所を指定する
ことで任意の場
所をアクセスで きる。


従ってTRISA、TRISBに書きこむためには、下記の様にします。

     BSF  STATUS,RP0 ;STATUSレジスタのRP0ビットを1に
              ;してBank1に切替える
    MOVLW 0FFH    ;入力モード用の1をセット
    MOVWF TRISA    ;PORTAをすべて入力モードに設定
    CLRF  TRISB    ;PORTBを全て出力モードに設定
    BCF  STATUS,RP0 ;Bank0に戻す

上記の様に、入出力ピンを入力モードにするには対応するTRISのビットを1に、
出力モードにするときには0に設定します。


(2)データ入出力

このTRISレジスタが設定完了すれば、後は、PORTAやPORTBと呼ばれる
入出力ポートのレジスタに書きこめば、実際の入出力ピンの動作をさせる
ことが出来ます。
この書きこみには、データコピー命令や、後述のビット操作命令を使います。
下記は実際の使用例となります。

    MOVLW  0AH     ;データ0Aを用意
    MOVWF  PORTB    ;ポートBに出力

    BSF   PORTB,2   ;ポートBの3ビット目を1

    MOVF   PORTA,W   ;ポートAから入力
    MOVWF  INDATA   ;変数INDATAに格納

LOOP  BTFSS  PORTA,3   ;ポートAの4ビット目をチェック
    GOTO   KEYIN    ;キー入力処理へジャンプ
    GOTO   LOOP    ;繰り返し


   次のページへ      目次ページへ