xc.hには,使用するPICのレジスタが定義されており,プログラマはレジスタを簡単に扱えるようになっています.この文書では,xc.hに定義されたレジスタの使用方法について説明します.

  1. データシートとの関係
    データシートには,すべてのレジスタについて説明しています.基本的に,そのレジスタ名がそのままxc.hに定義されておりますので,xc.hをインクルードした上で使用したいレジスタ名をプログラム中に書いてみましょう.MPLAB Xでは,もしそのレジスタがxc.hに書かれていなければ,赤い波線が引かれてそのレジスタがないことを教えてくれます.下の図はエラーが発生している様子を示しています.LATC8というレジスタがないため,赤い波線が引かれています.こうなりましたら,レジスタ名を再度確認して修正をしてください.
    RegisterError

  2. 多ビットで構成されているレジスタの使用方法
    レジスタによっては,多ビットで構成されているものがあります.たとえばマイコンの動作周波数を決定するIRCFの場合,IRCF0~IRCF3の4個で1セットとなっています.それぞれのレジスタに値を入れても問題ありませんが,まとめて一度に設定したいところです.その場合には,IRCF0~IRCF3が設定されているOSCCONbis構造体を使います.IRCF0~IRCF3がどの構造体に含まれているか調べるには,データシートからIRCF0~IRCF3が定義されているレジスタを調べればよいです.下の表はデータシートの抜粋です.このように,IRCF0~IRCF3はOSCCONレジスタに含まれていることが分かります.このレジスタに「bits」を付ければ,構造体名である「OSCCONbits」が分かります.
    RegisterStructure

    構造体名が分かりましたら,下図のようにMPLAB X上のエディタでそれを入力し,さらに「.」(ドット)を書きます.こうすることでOSCCONbits構造体のメンバが現れます.今回,RCF0~IRCF3をまとめたIRCFを選択し,続いて「= 0xd;」と入力します.これで「IRCF3=1; IRCF2=1; IRCF1=0; IRCF0=1;」と同等となります.
    RegisterStructure2