今回は自動生成されたプログラムの内容を確認します。MCC生成コードの構成それでは再度MCCが生成したプログラムコードの構成を確認しておきましょう。それぞれのファイルの概略は以下になります。メインファイルで、このファイルに自分のプログラムを書いていきます。マイコンの初期化関数などが記述されています。config)もこのファイルに記述されています。各ピンのデジタル/アナログ設定、入出力設定などが記述されています。名称のマクロも定義されています。このマクロについても後ほど詳細を説明します。ADコンバータの関数が記述されています。それでは、最初はメインとなるmain.cファイルから説明します。main.cmain.cはシンプルな構成になっています。マイコンの初期化設定などは「SYSTEM_Initialize()」にまとめられています。この関数では、マイコンのピン設定や動作周波数設定などが行われます。実体は「mcc.c」にありますので、あとで詳しく見てみます。割り込み処理を行う場合は、今はコメントアウトされていますが、必要に応じてコメントを外します。今回は割込み処理は実装しませんので説明は省略します。プログラムは最後のwhile()ブロックに書くことになります。基礎編や応用編のプログラムでは、マイコンの設定などはmain関数内に書いてきましたが、MCCではSYSTEM_Initialize関数にまとめられていますので、この内容をもう少し詳しくみてみます。先ほどの「SYSTEM_Initialize()」関数はmcc.cに書かれています。いうことで、「SYSTEM_Initialize()」の中身は、関数4個で構成されています。なんとなくこの先、どんどん深みに入っていきそうな雰囲気が出てきていますが、この先の関数の中では見慣れたコードが書かれていますので、それほど複雑ではありません。ところで、これら4個の関数を説明する前に、コンフィグレーション設定の場所を確認しておきましょう。コンフィグレーション設定は、「SYSTEM_Initialize()」の前に以下のように書かれています。この記述は、今まで基礎編で使用してきた内容と同じになります。それでは、SYSTEM_Initializeから呼ばれる4個の関数の中身を確認します。最初はPIN_MANAGER_Initialize関数です。この関数で、MCC設定画面で設定した内容に応じて、TRISA(入出力設定)、ANSELA(アナログ/デジタル設定)が記述されています。各ピンの出力の初期値としてLATAの設定があります。基礎編と応用編では説明していませんが、内部プルアップ抵抗の設定(WPUA)、ピンの機能割り当て設定(APFCON)も記述されています。次に、同じmcc.cファイル内にあるOSCILLATOR_Initialize関数とWDT_Initialize関数の中身を確認します。OSCILLATOR_Initialize関数内では、基礎編、応用編で使用してきた動作周波数設定レジスタOSCCONの設定がされています。今までの説明に出てきていませんが、動作周波数の微調整を行うOSCTUNEレジスタ、ブラウンアウトリセットの制御を行うBORCONレジスタの設定がされています。MCCで設定する場合、見慣れないレジスタの設定もされていますが、そのままで特に問題ありません。SYSTEM_Initializeから呼ばれる最後の関数はADC_Initialize関数です。この関数では、MCCで設定した内容にしたがって、ADコンバータ設定のレジスタ、ADCON0とADCON1の設定がされています。ADコンバータの結果が格納されるADRESレジスタにデフォルト値として0が設定されています。以上が初期設定の中身で、これらはMCCで設定した内容に応じて自動的に生成されたものですので、特に理由がない限り変更する必要はありません。今回、ADコンバータの機能を利用して、スイッチの状態を調べて、その状態に応じてLEDをON/OFFします。これらを実装する場合にどのように自動生成されたコードを利用すればよいか、これからADコンバータ機能、ピン出力設定についてそれぞれ説明します。adc.cにあります。今回はRA2ピンのADコンバータで電圧値を読み取ります。adc.cではこの関数が用意されています。「ADC_GetConversion()」という関数で、これは引数にADコンバータ値を取得したいピンを指定すると、ADコンバータの値が返ってきます。返り値の型は「adc_result_t」ですが、これは符号なし16ビットです。引数のピン指定ですが、数値で指定しても問題ありませんが、MCCでRA2ピンに対して「SWITCH」というカスタム名をつけました。この設定は、adc.hに定義されています。いうことで、ADコンバータで値を読み取りたい場合は、ADC_GetConversion(SWITCH);と書くと、ADコンバータの値が取得できます。1;」などと書いて出力制御することができますが、MCCでピンのカスタム名をつけました。この設定は「pin_manager.h」で定義されています。多くの設定がありますので、ここではLEDを接続しているRA5ピンの記述を確認します。1;」と書くことができます。ONかOFFの設定は、135行目、136行目にも定義があり、LEDをONする場合は「LED_SetHigh();」、OFFにする場合は「LED_SetLow();」と記述することができます。