PIC16C71

Microchip社のPICシリーズでA/Dコンバータ内蔵の最小のタイプがPIC16C71です。
8 bitのA/Dコンバータが内蔵されて4本のアナログ電圧入力を切り替えて計測できます。メモリはプログラム用が1 Kword分、データ用が36 Byte分内蔵されていて、サブルーチン呼び出し用のスタックも8レベル分存在します。

PIC16C71
4 MHzクロック版のPIC16C71-04で18ピンプラスチックパッケージ。

見かけはPIC16C54とそっくりですが、命令は1 wordが14 bit幅で、PIC16C54系の12 bit幅命令よりも強化されています。もっとも増加した2 bit分は、レジスタファイルのアドレス空間が広がった分に使われていて、命令体系としてはほとんど変化ないともいえますけど。

命令体系の紹介として、機械命令を簡単に並べておきます。
  命令       #       opcode        CDZ
ADDWF  f, d  1  00 0111 dfff ffff  ***
ANDWF  f, d  1  00 0101 dfff ffff    *
CLRF   f     1  00 0001 1fff ffff    1
CLRW         1  00 0001 0xxx xxxx    1
COMF   f, d  1  00 1001 dfff ffff    *
DECF   f, d  1  00 0011 dfff ffff    *
DECFSZ f, d  2? 00 1011 dfff ffff
INCF   f, d  1  00 1010 dfff ffff    *
INCFSZ f, d  2? 00 1111 dfff ffff
IORWF  f, d  1  00 0100 dfff ffff    *
MOVF   f, d  1  00 1000 dfff ffff    *
MOVWF  f     1  00 0000 1fff ffff
NOP          1  00 0000 0xx0 0000
RLF    f, d  1  00 1101 dfff ffff  *
RRF    f, d  1  00 1100 dfff ffff  *
SUBWF  f, d  1  00 0010 dfff ffff  ***
SWAPF  f, d  1  00 1110 dfff ffff
XORWF  f, d  1  00 0110 dfff ffff    *
BCF    f, b  1  01 00bb bfff ffff
BSF    f, b  1  01 01bb bfff ffff
BTFSC  f, b  2? 01 10bb bfff ffff
BTFSS  f, b  2? 01 11bb bfff ffff
ADDLW  k     1  11 111x kkkk kkkk  ***
ANDLW  k     1  11 1001 kkkk kkkk    *
CALL   k     2  10 0kkk kkkk kkkk
CLRWDT       1  00 0000 0110 0100
GOTO   k     2  10 1kkk kkkk kkkk
IORLW  k     1  11 1000 kkkk kkkk    *
MOVLW  k     1  11 00xx kkkk kkkk
RETFIE       2  00 0000 0000 1001
RETLW  k     2  11 01xx kkkk kkkk
RETURN       2  00 0000 0000 1000
SLEEP        1  00 0000 0110 0011
SUBLW  k     1  11 110x kkkk kkkk
XORLW  k     1  11 1010 kkkk kkkk    *
命令のオペランド部にfとあるのは、データメモリ空間に割り当てられたレジスタを意味します。dは方向フラグで、0で結果がWレジスタに、1で結果がfで指定されたレジスタに、書き込まれます。省略した場合は1と解釈されます。bはビット操作命令におけるビット番号を表します。kは定数かアドレスラベルです。
#の欄は命令実行サイクル数です。1サイクルか2サイクルのどちらかです。2?となっているのは、命令実行条件によって1サイクルになるか2サイクルになるか決まる命令です。
オペコード欄のdは方向フラグがそのまま入ります。fffffffはレジスタの絶対アドレスが入ります。PIC16C71のデータメモリ空間は7 bitで表現できますから、1 word命令の中に埋めこめます。bbbはビット番号で、kkkkkkkkなどは定数です。xは無視されるビットですが、0にしておく方が将来との互換性のためには良いだろうとされています。
CDZの欄はフラグ変化を意味する欄です。Cはキャリー、DはDCの補助キャリー、Zはゼロフラグです。空白は変化しないことを、*は命令の実行結果によって変化することを、1は必ず1になることを意味します。
PIC16C54に存在したOPTION命令とTRIS命令はなくなっています。これは、それぞれのレジスタがデータメモリ空間内にアドレスを割り当てられるように変更されて、一般の命令で読み書きできるためです。
追加されたのはADDLW, RETFIE, RETURN, SUBLW命令だけです。

Return to IC Collection