目次PIC入門873ハード

PIC16F873のI/Oポート
このページではPIC16F873の入出力ポートの概要について説明します。
PIC16F873にはAポートが6本、Bポートが8本、Cポートが8本、合計22本の入出力ポートがあります。デジタル信号の入出力ポートとして使用する場合にはAポートもBポートもCポートも同じように使用することができます。しかし、各ポートはデジタル信号の入出力だけではなく、他の機能ポートと兼用しているものがあります。PICの用途により各ポートを使い分ける必要があります。
以下に各ポートの概略仕様を記載します。

ポートA

ポートAはRA0からRA5までの6ポートで構成されています。
これらのポートはデジタル信号の入出力以外にアナログ信号の入力ポート、アナログ信号基準電圧の入力ポート、タイマー0の外部クロック入力ポートなどと兼用になっています。
回路はPIC16F84Aのものとほぼ同じですが、アナログ入力のための切り替え回路が組み込まれています。

デジタル信号の入出力に使用する場合、入力モードと出力モードの指定はTRISAレジスタで行います。

デジタル信号の入出力以外で使用する場合にはADCON0/ADCON1レジスタの設定を変更することにより行えます。
アナログ信号入力の設定をした場合でもTRISAレジスタの内容は有効です。アナログで使用する場合、必ずTRISAレジスタの対応するビットは入力モード指定(1)に設定する必要があります。




ポートB

ポートBはRB0からRB7までの8ポートで構成されています。
これらのポートはデジタル信号の入出力以外にプログラムデータの書き込み用ポートとも兼用になっています。
プログラムデータのポートとして使用する場合の設定レジスタはありません。ICSPプログラミング方式のシーケンスにより自動的にプログラミングポートとして使用されます。ICSPについてはPIC16F84Aでの項目を参考にして下さい。
RB4からRB7までの4ポートには状態変化検出機能があります。この機能を使用するときにはTRISBレジスタで該当する4ポート全てを入力モードにする必要があります。変化検出結果はINTCONレジスタのRBIFビットに表示され、プログラム実行カウンタが強制的に4番地に移り、割り込み処理状態になります。

RB0/INTポートも割り込み検出に使用することができます。この機能を使用する場合にはINTCONレジスタのINTEビットを"1"に設定し、OPTION_REGレジスタのINTEDGビットで立ち上がり検出(1)か立ち下がり検出(0)かを設定します。

また、ポートBはプルアップ機能を持っています。ポートに何も接続されていないときポートの状態をHレベル状態にするための機能でOPTION_REGのRBPUビットを"0"にすることにより8つのポート全てがプルアップ使用状態になります。この機能は入力モードのみ有効でRBPUビットが"0"であってもTRISBレジスタで出力モードに設定したポートではプルアップ回路は切り離されます。
回路としてはPIC16F84Aのものと同様です。




ポートC

ポートCはRC0からRC7までの8ポートで構成されています。
これらのポートはデジタル信号の入出力以外にタイマー1のクロック入力、各種の外部通信用のポートと兼用になっています。
RC0はタイマー1用発振器の接続ポートまたはタイマー1のクロック入力ポートと兼用です。兼用機能への切り替えはT1CONレジスタの設定で行えます。
RC1はタイマー1用発振器の接続ポートまたはCCP2(Capture2 input/Compare2 output/Pulse Width Modulation2(PWM2) output)ポートと兼用です。タイマー1に関する機能への切り替えはT1CONレジスタの設定で行えます。また、CCP2に関するCCP2CONレジスタの設定で行えます。
RC2はCCP1ポートと兼用です。CCP1のポートとして使用する場合にはCCP1CONレジスタの設定を行います。
RC3は同期シリアル通信のクロック入力ポートまたはSPI(Serial Peripheral Interface)/I2C(Inter-Integrated Circuit)の出力ポートと兼用です。
RC4はSPIデータ入力ポートまたはI2Cモードでのデータ入出力ポートと兼用です。
RC5はSPIデータ出力ポートと兼用です。
SPI/I2Cモードで使用するためにはINTCON/PIR1/PIE1/SSPBUF/SSPCON/SSPSTATなどのレジスタ設定が必要です。
RC6はUSART(Universal Synchronous Asynchronous Receiver Transmitter)での非同期送信ポートまたは同期通信時のクロックポートと兼用です。
RC7はUSARTでの非同期受信ポートまたは同期通信時のデータポートと兼用です。
USART通信または同期通信を行うためにはTXSTA/TXREG/RCSTA/RCREG/SPBRG/PIR1/PIE1などのレジスタ設定が必要です。
図はRC0-2およびRC5-7の回路図です。RC3およびRC4の場合には入力回路にSSPI用の選択回路が加わります。