C |
キャリー・ボローフラグ
演算結果にキャリー(桁上げ)・ボロー(桁下がり)が発生したことを示します。
ADD系命令のとき桁上げあり=1,なし=0となります。
SUB系命令のとき桁下りあり=0,なし=1となります。
SUB命令の場合は一般的なCPUとは結果が反転していますので十分注意してください。
又、INC/DEC系命令はCフラグには影響を与えないので注意しましょう。
|
DC |
デジットキャリー・ボローフラグ
演算結果の下位4ビットに対するキャリー(桁上げ)・ボロー(桁下がり)を示します。
他はCフラグと同様です。
|
Z |
ゼロフラグ
演算結果が0になった場合ビットが“1”となります。
それ以外の値のときは“0”になります。
|
RP0 RP1 |
バンクセレクトビット
このビットでアクセスするファイルレジスタのバンクを切り替えます。
レジスタアクセス時にこのビットが暗黙のうちに参照されます。
RP1 |
RP0 |
アクセス可能なアドレス |
0 |
0 |
000h〜07Fh
|
1 |
0 |
080h〜0FFh
|
0 |
1 |
100h〜17Fh
|
1 |
1 |
180h〜1FFh
|
上記のうち100h〜1FFhのアドレス空間はPIC16F84にはありませんので、
000h〜0FFhまでのアドレスを使うことになります。(RP1のビットは0のままで、RP0だけを使う)
|
IRP |
バンクセレクトビット(間接アドレッシング用)
このビットはfsrを使用してレジスタアクセスを行う場合のMSBビットを指定するためのものです。
しかしPIC16F84はFFhまでのアドレス空間しか存在しないため、fsrの8ビットで用が足りてしまいます。
このビットは0に固定しておきます。
|
プログラムカウンタ(PCL):02h/82h
|
-
このレジスタはプログラムが実行しているアドレスの下位8ビットを保持しています。命令が1つ実行されればこのレジスタの値が1つカウントアップします。PICマイコンではPCLがファイルレジスタ上に配置されています。こうすることで、ファイルレジスタと同様にPCへ直接値を書き込むことで、プログラムの推移を変えることが簡単にできます。
PIC16F84は1024ワードのプログラム領域を持っています。1024=210 ですからアドレスを表現するには
少なくとも10ビット必要です。ところがPCは8ビット幅しかありません。上位のビットはどこにいったのでしょうか?
ご安心ください。実際のPICマイコンにはちゃんと13ビット分のPCを保持されています。(←これにはプログラマがアクセスできない)PCLにはその下位8ビット分しか反映されていないのです。PCLにアドレスを書き込むと下位8ビットはここに書き込んだ値、上位のビットは後述のPCLATHというレジスタからコピーされます。
|
PCLATHレジスタ:0Ah/8Ah
|
-
このレジスタにPCの上位5ビット分(3ビットはDon't care)を格納しておきます。
このレジスタは値を書き込むと、PCに直接影響を与えるのではなく、PCに変化を与える命令を実行した時に暗黙の内に参照されるレジスタなのです。具体的にはgoto,call命令とPCLに変化を与えた命令の3パターンです。
|
ファイルセレクトレジスタ(fsr):04h/84h
|
-
このレジスタはindirectレジスタと対で使用されます。
プログラム中で配列を使わなければならない場面が必ず出てくるはずです。fsrにレジスタアドレスを入れておいてindirectレジスタにアクセスすると、実際はindirectレジスタ(00h)にアクセスしているのではなくて、fsrにいれたアドレスにアクセスしていることになるのです。
C言語風にいうとfsrがポインタとなり、indirectにアクセスすると(*fsr)にアクセスしていることになるのです。
RAMを全てゼロクリアする様な場合・RAMをデータバッファ等に使う用途で特に有効です。
|
ポートA(PORTA):05h
|
-
このレジスタはPICのポートAと直結しており、I/Oピンが出力ポートになっている場合はこのレジスタに“0”,“1”を書き込むことでPICのピンに信号が出力されます。同様に入力ピンになっている場合はこのレジスタを読み込むことで、ピンの状態をソフトが認識できます。このレジスタはビット0から4までが有効です。
RA4に注意
RA4ポートはオープンドレインのポートです。ここから電流を引っ張ることはできません。
|
|
入出力レジスタA(TRISA):85h
|
-
このレジスタはPICのポートAの入出力する方向を決定するレジスタです。
ビット0〜4がRA0〜4に対応していて、1をセットすると入力ピン・0をセットすると出力ピン(PORTAレジスタ内容の出力)となります。
リセット時はFFh(全ビット入力ピン)となっていますので、出力にしたい時は必ずこのレジスタを変更してください。単にPORTAレジスタに値を書き込んでも無駄です。
|
ポートB(PORTB):06h
|
-
このレジスタはPICのI/Oポートと直結しており、I/Oピンが出力ポートになっている場合はこのレジスタに“0”,“1”を書き込むことでPICのピンに信号が出力されます。同様に入力ピンになっている場合はこのレジスタを読み込むことで、ピンの状態をソフトが認識できます。ビット0〜7までがそれぞれRB0〜7に対応しています。
|
入出力レジスタB(TRISB):86h
|
-
このレジスタはPICのポートBの入出力する方向を決定するレジスタです。
ビット0〜7がRA0〜7に対応していて、1をセットすると入力ピン・0をセットすると出力ピン(PORTBレジスタ内容の出力)となります。
リセット時はFFh(全ビット入力ピン)となっていますので、出力にしたい時は必ずこのレジスタを変更してください。単にPORTBレジスタに値を書き込んでも無駄です。
* EEDATA:
* EEADR:
* EECON1:
* EECON2:
EEDATA,EEADRはPIC16F84に内蔵されているデータ用EEPROM(プログラム領域ではありません)の書き込み・読み出しを行うための、制御レジスタです。このレジスタを介してEEPROMにアクセスします。これらのレジスタ以外を通じてEEPROMにアクセスすることは出来ません。
PIC16F84では64バイトの領域を持っています。電源・バッテリーが切れても情報が失われないので便利です。
* オプションレジスタ(OPTION)
このレジスタはPICマイコンの細かな設定をする為のレジスタです。
ビット7
このビットを0にすると、RBポート(入力ポートのみ)の内部プルアップが有効になります。これを利用すると、外部にDIPSW等のSWをつけてキー入力を行う時のプルアップ抵抗が不要になります。RAポートにはこの機能が無いため、キー入力はRBポートにくるよう設計したほうが部品点数を減らせます。
|