目次>7章 各種情報>(1)機能別設定レジスタ
機能別設定レジスタ
更新日2005.11.19
PICの機能毎に、その機能で使用するレジスタについて説明します。
-
機 能 | 概 要
|
PORTA | RA0〜RA4の5つのピンを入出力として使用
|
PORTB | RB0〜RB7の8つのピンを入出力として使用
|
TMR0割込み | TMR0を使用して一定時間後に割込みを発生 (SLEEPモード時は動作しない)
|
RB0/INT割込み | RB0/INTピンからの信号変化で割込みを発生 (SLEEPモード時も動作し、割込み発生時にSLEEPモードから抜ける)
|
PORTB変化割込み | RB4〜RB7ピンからの信号変化で割込みを発生 (SLEEPモード時も動作し、割込み発生時にSLEEPモードから抜ける)
|
PORTAを使うためのレジスタ
|
・ | PORTAを使うには、TRISAレジスタで入力にするか出力にするかを設定した後、PORTAレジスタを操作します。
水色のビットを操作します。
レジスタ | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0
| TRISA | - | - | - | TRISA4 | TRISA3 | TRISA2 | TRISA1 | TRISA0
| PORTA | - | - | - | RA4 | RA3 | RA2 | RA1 | RA0
|
TRISAの各ビットは、PORTAの各ポートに対応しており、RA0〜RA4の各ポートを入力とするか出力とするかを設定します。
-
0: | ポートAの該当ポートを出力に設定
| 1: | ポートAの該当ポートを入力に設定
|
PORTAの各ビットは、ポートAの該当ピンに対応しており、TRISAの設定が入力か出力かで次のようになります。
-
入力: | ポートAの該当ポートをの状態(ON/OFF)が設定され、プログラムでON/OFFの判定ができる
| 出力: | ポートAの該当ポートをの状態をプログラムで設定する
|
|
PORTBを使うためのレジスタ
|
| PORTBを使うには、TRISBレジスタで入力にするか出力にするかを設定した後、PORTBレジスタを操作します。
水色のビットを操作します。
レジスタ | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0
| TRISB | TRISB7 | TRISB6 | TRISB5 | TRISB4 | TRISB3 | TRISB2 | TRISB1 | TRISB0
| PORTB | RB7 | RB6 | RB5 | RB4 | RB3 | RB2 | RB1 | RB0
|
TRISBの各ビットは、PORTBの各ポートに対応しており、RB0〜RB7の各ポートを入力とするか出力とするかを設定します。
-
0: | ポートBの該当ポートを出力に設定
| 1: | ポートBの該当ポートを入力に設定
|
PORTBの各ビットは、ポートBの該当ピンに対応しており、TRISBの設定が入力か出力かで次のようになります。
-
入力: | ポートBの該当ポートをの状態(ON/OFF)が設定され、プログラムでON/OFFの判定ができる
| 出力: | ポートBの該当ポートをの状態をプログラムで設定する
|
|
TMR0割込みを使うためのレジスタ
|
| TMR0割込みを使うには、OPTIONレジスタ,INTCONレジスタ,TMR0レジスタを設定します。
水色のビットを操作します。
使わないビットは、0にしておきます。
レジスタ | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0
| OPTION | ^RBPU | INTEDG | T0CS | T0SE | PSA | PS2 | PS1 | PS0
| INTCON | GIE | EEIE | T0IE | INTE | RBIE | T0IF | INTF | RBIF
| TMR0 | TMR0
|
OPTIONレジスタ
T0CS | TMR0クロックソース選択ビット 1=RA4/T0CKIピンの入力 0=内部命令サイクルクロック(通常はこちらを使用)
| T0SE | TMR0ソースエッジ選択ビット(T0CSを0にした場合は未使用) 1=RA4/T0CKIピンの入力がHighからLowでインクリメント 0=RA4/T0CKIピンの入力がLowからHighでインクリメント
| PSA | プリスケーラ割り当てビット 1=プリスケーラはWDTへ割り当て 0=プリスケーラはTMR0へ割り当て(こちらを設定する)
| PS2-PS0 | プリスケーラレート選択ビット
PS2-PS0 | TMR0レート | WDTレート
| 000 | 1:2 | 1:1
| 001 | 1:4 | 1:2
| 010 | 1:8 | 1:4
| 011 | 1:16 | 1:8
| 100 | 1:32 | 1:16
| 101 | 1:64 | 1:32
| 110 | 1:128 | 1:64
| 111 | 1:256 | 1:128
|
|
INTCONレジスタ
GIE | グローバル割込みイネーブルビット 1=全てのマスクされていない割込み発生を許可する 0=全ての割込み発生を禁止する
| T0IE | TMR0割込みイネーブルビット 1=TMR0割込みを許可する 0=TMR0割込みを禁止する
| T0IF | TMR0割込みフラグビット 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の使い方により設定する)
レジスタ | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0
| OPTION | ^RBPU | INTEDG | T0CS | T0SE | PSA | PS2 | PS1 | PS0
| INTCON | GIE | EEIE | T0IE | INTE | RBIE | T0IF | INTF | RBIF
| TRISB | TRISB7 | TRISB6 | TRISB5 | TRISB4 | TRISB3 | TRISB2 | TRISB1 | TRISB0
|
OPTIONレジスタ
INTEDG | 割込みエッジ選択ビット 1=RB0/INTピンの立ち上がりエッジ(OFFからONになる時)による割込み 0=RB0/INTピンの立ち下がりエッジ(ONからOFFになる時)による割込み
|
INTCONレジスタ
GIE | グローバル割込みイネーブルビット 1=全てのマスクされていない割込み発生を許可する 0=全ての割込み発生を禁止する
| INTE | RB0/INT割込みイネーブルビット 1=RB0/INT割込みを許可する 0=RB0/INT割込みを禁止する
| INTF | RB0/INT割込みフラグビット 1=RB0/INT割込みが発生した (ソフトウェアでクリア要,通常は割込みルーチンでクリアする) 0=RB0/INT割込みが発生していない
|
TRISBレジスタ
TRISB0 | RB0入出力モード設定 1を設定し、入力モードにしておく
|
|
PORTB変化割込みを使うためのレジスタ
|
| PORTB変化割込みは、RB4〜RB7のいずれかのピン変化(ON/OFF)により割込みを発生させます。
PORTB変化割込みを使うには、INTCONレジスタ,TRISBレジスタを設定します。
水色のビットを操作します。
使わないビットは、0にしておきます。(TRISBのTRISB4〜TRISB7以外は、RB0〜RB3の使い方により設定する)
レジスタ | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0
| INTCON | GIE | EEIE | T0IE | INTE | RBIE | T0IF | INTF | RBIF
| TRISB | TRISB7 | TRISB6 | TRISB5 | TRISB4 | TRISB3 | TRISB2 | TRISB1 | TRISB0
|
INTCONレジスタ
GIE | グローバル割込みイネーブルビット 1=全てのマスクされていない割込み発生を許可する 0=全ての割込み発生を禁止する
| RBIE | RBポート変化割込みイネーブルビット 1=RBポート変化割込みを許可する 0=RBポート変化割込みを禁止する
| RBIF | RBポート変更割込みフラグビット 1=1つ以上のRB7:RB4ピンの状態が変化した (ソフトウェアでクリア要,通常は割込みルーチンでクリアする) 0=状態が変化したRB7:RB4ピンは無い
|
TRISBレジスタ
TRISB7-4 | PORTB入出力モード設定 PORTB変化割込みで使用するポートに1を設定し、入力モードにしておく 4ポート全てを1にできる
|
|