【ヘッダファイルの定義】
HI-TECH Cコンパイラを使って基本的なディジタル入出力を行う為には
レジスタの読み書きで行います。
この場合I/O関連のレジスタの定義は、ヘッダファイル内で下記のように
行われています。
つまり、まずPORTAやPORTBなどの8ビットのレジスタとして定義されているので、
8ビットレジスタで扱う場合にはPORTAとかPORTBのレジスタ名で直接扱う
ことができます。
同時に、下側のようにビットごとの定義で、bit型として名前が付けられて
いますので、1ビットだけで扱う場合にはRA0とかRA1とかの名前で直接扱う
ことができます。
【HI-TECH Cコンパイラでの記述方法】
(1) ポート全体の8ビットパラレルで出力する場合
この場合には、まずTRIS*レジスタを設定後、PORT*レジスタに書き込みます
下記のように単純に各レジスタを変数として定数を代入するだけです。
TRISA = 0; // ポートAをすべて出力ピンにする
TRISB = 0; // ポートBをすべて出力ピンにする
TRISC = 0; // ポートCをすべて出力ピンにする
PORTA = 0xFF; // ポートAの出力ラッチAにFFを出力
PORTC = portc_out; // portc_outの内容を出力ラッチCに出力
PORTB = 0x02; // ポートBの出力ラッチBに02を出力
(2) 1ビットで出力する場合
上記のようにPORTの各ビットは、bit型として定義されていますので、
そのbit型の変数名で指定します。
TRISC = 0; // I/Oポート設定
RC2 = 1; //RC2に1を出力
RC3 = 0; //RC3を0にする
(3) ポートの8ピン全体を入力する場合
この場合には、PORTをそのまま変数として扱うことができます。
TRISB = 0xFF; //全て入力モード
datab = PORTB; //PORTBの内容を変数databに格納
if(PORTB & 0x80) //PORTBの8ビット目が0か1かの判定
(4) ポートの1ピンだけを入力する場合
この場合にも出力と同様、各ビットがbit型として定義されていますから、
そのまま変数として扱うことができます。
例えば、指定ピンを入力して0か1で判定する場合には下記のようにします。
TRISC = 0xF0; //上位を入力、下位を出力に
if(RC7) //RC7を入力しテスト
RC0 = 0; //RC0を0に
else
RC0 = 1; //RC0を1に