目次>7章 各種情報>(1)機能別設定レジスタ

機能別設定レジスタ

更新日2005.11.19

PICの機能毎に、その機能で使用するレジスタについて説明します。

機 能概 要
PORTARA0〜RA4の5つのピンを入出力として使用
PORTBRB0〜RB7の8つのピンを入出力として使用
TMR0割込みTMR0を使用して一定時間後に割込みを発生
(SLEEPモード時は動作しない)
RB0/INT割込みRB0/INTピンからの信号変化で割込みを発生
(SLEEPモード時も動作し、割込み発生時にSLEEPモードから抜ける)
PORTB変化割込みRB4〜RB7ピンからの信号変化で割込みを発生
(SLEEPモード時も動作し、割込み発生時にSLEEPモードから抜ける)

PORTAを使うためのレジスタ
PORTAを使うには、TRISAレジスタで入力にするか出力にするかを設定した後、PORTAレジスタを操作します。
水色のビットを操作します。

レジスタBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
TRISA---TRISA4TRISA3TRISA2TRISA1TRISA0
PORTA---RA4RA3RA2RA1RA0

TRISAの各ビットは、PORTAの各ポートに対応しており、RA0〜RA4の各ポートを入力とするか出力とするかを設定します。

0:ポートAの該当ポートを出力に設定
1:ポートAの該当ポートを入力に設定

PORTAの各ビットは、ポートAの該当ピンに対応しており、TRISAの設定が入力か出力かで次のようになります。

入力:ポートAの該当ポートをの状態(ON/OFF)が設定され、プログラムでON/OFFの判定ができる
出力:ポートAの該当ポートをの状態をプログラムで設定する

PORTBを使うためのレジスタ
PORTBを使うには、TRISBレジスタで入力にするか出力にするかを設定した後、PORTBレジスタを操作します。
水色のビットを操作します。

レジスタBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
TRISBTRISB7TRISB6TRISB5TRISB4TRISB3TRISB2TRISB1TRISB0
PORTBRB7RB6RB5RB4RB3RB2RB1RB0

TRISBの各ビットは、PORTBの各ポートに対応しており、RB0〜RB7の各ポートを入力とするか出力とするかを設定します。

0:ポートBの該当ポートを出力に設定
1:ポートBの該当ポートを入力に設定

PORTBの各ビットは、ポートBの該当ピンに対応しており、TRISBの設定が入力か出力かで次のようになります。

入力:ポートBの該当ポートをの状態(ON/OFF)が設定され、プログラムでON/OFFの判定ができる
出力:ポートBの該当ポートをの状態をプログラムで設定する

TMR0割込みを使うためのレジスタ
TMR0割込みを使うには、OPTIONレジスタ,INTCONレジスタ,TMR0レジスタを設定します。
水色のビットを操作します。
使わないビットは、0にしておきます。

レジスタBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
OPTION^RBPUINTEDGT0CST0SEPSAPS2PS1PS0
INTCONGIEEEIET0IEINTERBIET0IFINTFRBIF
TMR0TMR0

OPTIONレジスタ

T0CSTMR0クロックソース選択ビット
1=RA4/T0CKIピンの入力
0=内部命令サイクルクロック(通常はこちらを使用)
T0SETMR0ソースエッジ選択ビット(T0CSを0にした場合は未使用)
1=RA4/T0CKIピンの入力がHighからLowでインクリメント
0=RA4/T0CKIピンの入力がLowからHighでインクリメント
PSAプリスケーラ割り当てビット
1=プリスケーラはWDTへ割り当て
0=プリスケーラはTMR0へ割り当て(こちらを設定する)
PS2-PS0プリスケーラレート選択ビット
PS2-PS0TMR0レートWDTレート
0001:21:1
0011:41:2
0101:81:4
0111:161:8
1001:321:16
1011:641:32
1101:1281:64
1111:2561:128

INTCONレジスタ

GIEグローバル割込みイネーブルビット
1=全てのマスクされていない割込み発生を許可する
0=全ての割込み発生を禁止する
T0IETMR0割込みイネーブルビット
1=TMR0割込みを許可する
0=TMR0割込みを禁止する
T0IFTMR0割込みフラグビット
1=TMR0割込みが発生した(ソフトウェアでクリア要)
0=TMR0割込みが発生していない

TMR0レジスタ

TMR0レジスタは、一定間隔毎にカウントアップして行き、オーバフロー(0に戻る)したタイミングでTMR0割込みが発生します。
8ビットのレジスタですので、十進数で0〜255までの範囲となります。従って、カウントアップした結果255から0に戻る時にTMR0割込みが発生する事になります。

「一定間隔」は、T0CSとプリスケーラの設定により変更できます。
T0CSに0を設定し、命令サイクルを使用する場合で説明します。

TMR0のカウントアップは、命令サイクル×TMR0レート(プリスケーラで指定)毎にカウントアップします。
例えば、プリスケーラに「011」を設定した場合、TMR0レートは「16」となり、16命令サイクル毎に1づつカウントアップします。

TMR0レジスタには初期値が設定でき、例えば250を設定した場合、

250→251→252→253→254→255→0
となり、6回カウントアップして割込みが発生します。

オシレータが10MHzの場合、1命令の実行時間は「0.4μ秒」ですので、割込み発生までの時間は以下の計算式で求められます。

0.4μ秒×TMR0レート×(256−TMR0設定値)

RB0/INT割込みを使うためのレジスタ
RB0/INT割込みは、RB0/INTピンの変化(ON/OFF)により割込みを発生させます。

RB0/INT割込みを使うには、OPTIONレジスタ,INTCONレジスタ,TRISBレジスタを設定します。
水色のビットを操作します。
使わないビットは、0にしておきます。(TRISBのTRISB0以外は、RB1〜RB7の使い方により設定する)

レジスタBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
OPTION^RBPUINTEDGT0CST0SEPSAPS2PS1PS0
INTCONGIEEEIET0IEINTERBIET0IFINTFRBIF
TRISBTRISB7TRISB6TRISB5TRISB4TRISB3TRISB2TRISB1TRISB0

OPTIONレジスタ

INTEDG割込みエッジ選択ビット
1=RB0/INTピンの立ち上がりエッジ(OFFからONになる時)による割込み
0=RB0/INTピンの立ち下がりエッジ(ONからOFFになる時)による割込み

INTCONレジスタ

GIEグローバル割込みイネーブルビット
1=全てのマスクされていない割込み発生を許可する
0=全ての割込み発生を禁止する
INTERB0/INT割込みイネーブルビット
1=RB0/INT割込みを許可する
0=RB0/INT割込みを禁止する
INTFRB0/INT割込みフラグビット
1=RB0/INT割込みが発生した
 (ソフトウェアでクリア要,通常は割込みルーチンでクリアする)
0=RB0/INT割込みが発生していない

TRISBレジスタ

TRISB0RB0入出力モード設定
1を設定し、入力モードにしておく

PORTB変化割込みを使うためのレジスタ
PORTB変化割込みは、RB4〜RB7のいずれかのピン変化(ON/OFF)により割込みを発生させます。

PORTB変化割込みを使うには、INTCONレジスタ,TRISBレジスタを設定します。
水色のビットを操作します。
使わないビットは、0にしておきます。(TRISBのTRISB4〜TRISB7以外は、RB0〜RB3の使い方により設定する)

レジスタBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
INTCONGIEEEIET0IEINTERBIET0IFINTFRBIF
TRISBTRISB7TRISB6TRISB5TRISB4TRISB3TRISB2TRISB1TRISB0

INTCONレジスタ

GIEグローバル割込みイネーブルビット
1=全てのマスクされていない割込み発生を許可する
0=全ての割込み発生を禁止する
RBIERBポート変化割込みイネーブルビット
1=RBポート変化割込みを許可する
0=RBポート変化割込みを禁止する
RBIFRBポート変更割込みフラグビット
1=1つ以上のRB7:RB4ピンの状態が変化した
 (ソフトウェアでクリア要,通常は割込みルーチンでクリアする)
0=状態が変化したRB7:RB4ピンは無い

TRISBレジスタ

TRISB7-4PORTB入出力モード設定
PORTB変化割込みで使用するポートに1を設定し、入力モードにしておく
4ポート全てを1にできる