P-ROBO(ピーロボ)
レジスタの設定
P-ROBOを制御するにあたって、以下のレジスタを定義します。
- 8ビットリアルタイム・クロック/カウンタ
- I/OポートA
- I/OポートB
- 割り込み制御レジスタ
- オプションレジスタ
- トライステートレジスタA
- トライステートレジスタB
レジスタファイル配置図
PIC16F84では下記のようにレジスタファイルが配置されています。
Address | Name | Comment |
---|---|---|
Bank 0 | ||
00h | INDF | FSRの内容のアドレスのデータメモリ(物理的には存在しない) |
01h | TMR0 | 8ビットリアルタイム・クロック/カウンタ |
02h | PCL | プログラムカウンタの下位8ビット |
03h | STATUS | ALUの演算フラグ、リセット状態、およびデータメモリのバンク選択ビットを含む |
04h | FSR | 間接データメモリアドレスポインタ |
05h | PORTA | I/OポートA |
06h | PORTB | I/OポートB |
07h | 使用しない | |
08h | EEDATA | EEPROMデータレジスタ |
09h | EEADR | EEPROMアドレスレジスタ |
0Ah | PCLATH | PCの上位5ビットへの書き込みバッファ |
0Bh | INTCON | 全ての割り込みソースのイネーブルビットを含む |
Bank 1 | ||
80h | INDF | FSRの内容のアドレスのデータメモリ(物理的には存在しない) |
81h | OPTION_REG | PORTBにTMR0/WDTプリスケーラ、外部INT割り込み、TMR0、プルアップを設定するための各種コントロールビットを含む |
82h | PCL | プログラムカウンタの下位8ビット |
83h | STATUS | ALUの演算フラグ、リセット状態、およびデータメモリのバンク選択ビットを含む |
84h | FSR | 間接データメモリアドレスポインタ |
85h | TRISA | PORTAデータ入出力設定レジスタ |
86h | TRISB | PORTBデータ入出力設定レジスタ |
87h | 使用しない | |
88h | EECON1 | EEPROM制御レジスタ |
89h | EECON2 | EEPROM制御レジスタ(物理的には存在しない) |
0Ah | PCLATH | PCの上位5ビットへの書き込みバッファ |
0Bh | INTCON | 全ての割り込みソースのイネーブルビットを含む |
レジスタ設定内容
piccでは変数に特定のアドレスを割り当てるには【 @ 】を使用します。下記のアドレスはPIC16F84特有のアドレスなので、変更することは出来ません。詳細についてはハードウェアマニュアルやPIC16F84のデータシートを参照してください。ここではライントレースを行う上で必要になるレジスタのみを設定しています。
unsigned int uiTMR0 @ 0x01; // 0x01 8ビットリアルタイム・クロック/カウンタ
int iPORTA @ 0x05; // 0x05 I/Oポート A
int iPORTB @ 0x06; // 0x06 I/Oポート B
int iINTCON @ 0x0B; // 0x0B 割り込み制御レジスタ
int iOPTION @ 0x81; // 0x81 オプションレジスタ
int iTRISA @ 0x85; // 0x85 I/Oポート Aの入出力設定レジスタ
int iTRISB @ 0x86; // 0x86 I/Oポート Bの入出力設定レジスタ