30
MPLAB XC8 入門ガイド 2014 Microchip Technology Inc. DS50002173A_JP - p. 1 MPLAB ® XC8 入門ガイド 本書は、MPLAB ® XC8 C コンパイラをこれから使い始めるプログラマー向けの入門 書であり、特に組み込みプログラミングまたは Microchip 社製デバイスに慣れていな い読者に配慮しています。 本書の主な内容は以下の通りです ( 各項目には本文へのリンクが貼られています )MPLAB X IDE 内でプロジェクトを作成する 基本的なコード コンパイル デバイス コンフィグレーション ビットの指定 デバイスレジスタへのアクセス ポートピンを共有する周辺モジュールを無効にする ユーザコードをダウンロードして実行する メインループを実装する 割り込みを使う まとめ MPLAB XC8 C Compiler は何百種もの Microchip 社製 8 ビット PIC デバイス向けにお 使い頂けますが、本書では PIC18F87J11 マイクロコントローラ (MCU) PICDEM PIC18 Explorer ボードの組み合わせを使って説明を進めます。しかし本書をお読みに なれば、ほとんど全ての 8 ビット マイクロコントローラおよびハードウェア向けに、 XC8 C コンパイラを使って等価な機能を有するコードを作成およびコンパイルでき ます。 本書では MPLAB X 統合開発環境 (IDE) から XC8 C コンパイラを使いますが、本コン パイラはコマンドラインから使う事もできます。開発ボードをお持ちであれば、コー ドをデバイスにダウンロードして実行できます。また、MPLAB X IDE が内蔵するシ ミュレータを使ってコードの動作を確認する事もできます。 本書では、 MPLAB XC8 C コンパイラを使い始める読者のために、簡単なサンプル ロジェクトをビルドして実行するための手順を紹介します。このプロジェクトはポー トピンに接続した LED を点滅させます。このプロジェクトを作成するために必要な 作業は以下の通りです。本書では、これらの各作業について順番に詳しく説明します。 ソースファイルに <xc.h> をインクルードする config プラグマを使ってデバイス コンフィグレーション ビットを設定する ポートを共有している全ての周辺モジュールを無効にする ポートのデータ方向レジスタを初期化し、ポートラッチに値を書き込む • LED の点灯 / 消灯を目視できるよう遅延を適用する 本書に従って作業を始める前に、MPLAB X IDE MPLAB XC8 C コンパイラをイン ストールしてアクティベートしておく必要があります。評価バージョンのコンパイラ ( または Free モードで動作するコンパイラ ) を使う事もできます。 コンパイラのインストールおよびアクティベートの方法については、『Installing and Licensing MPLAB XC C Compilers(DS50002059) を参照してください。この文書は Microchip 社のウェブサイト (wwww.microchip.com) からダウンロードできます。 注意 : この日本語版文書は参考資料としてご利用ください。最新情報 は必ずオリジナルの英語版をご参照願います。

MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

Embed Size (px)

Citation preview

Page 1: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 入門ガイド

注意 : この日本語版文書は参考資料としてご利用ください。最新情報は必ずオリジナルの英語版をご参照願います。

MPLAB® XC8 入門ガイド

®

本書は、MPLAB XC8 C コンパイラをこれから使い始めるプログラマー向けの入門書であり、特に組み込みプログラミングまたは Microchip 社製デバイスに慣れていない読者に配慮しています。

本書の主な内容は以下の通りです ( 各項目には本文へのリンクが貼られています )。

MPLAB X IDE 内でプロジェクトを作成する

基本的なコード

コンパイル

デバイス コンフィグレーション ビットの指定

デバイスレジスタへのアクセス

ポートピンを共有する周辺モジュールを無効にする

ユーザコードをダウンロードして実行する

メインループを実装する

割り込みを使う

まとめ

MPLAB XC8 C Compiler は何百種もの Microchip 社製 8 ビット PIC デバイス向けにお使い頂けますが、本書では PIC18F87J11 マイクロコントローラ (MCU) と PICDEMPIC18 Explorer ボードの組み合わせを使って説明を進めます。しかし本書をお読みになれば、ほとんど全ての 8 ビット マイクロコントローラおよびハードウェア向けに、XC8 C コンパイラを使って等価な機能を有するコードを作成およびコンパイルできます。

本書では MPLAB X 統合開発環境 (IDE) から XC8 C コンパイラを使いますが、本コンパイラはコマンドラインから使う事もできます。開発ボードをお持ちであれば、コードをデバイスにダウンロードして実行できます。また、MPLAB X IDE が内蔵するシミュレータを使ってコードの動作を確認する事もできます。

本書では、MPLAB XC8 C コンパイラを使い始める読者のために、簡単なサンプル プロジェクトをビルドして実行するための手順を紹介します。このプロジェクトはポートピンに接続した LED を点滅させます。このプロジェクトを作成するために必要な作業は以下の通りです。本書では、これらの各作業について順番に詳しく説明します。

• ソースファイルに <xc.h>をインクルードする

• configプラグマを使ってデバイス コンフィグレーション ビットを設定する

• ポートを共有している全ての周辺モジュールを無効にする

• ポートのデータ方向レジスタを初期化し、ポートラッチに値を書き込む

• LED の点灯 / 消灯を目視できるよう遅延を適用する

本書に従って作業を始める前に、MPLAB X IDE と MPLAB XC8 C コンパイラをインストールしてアクティベートしておく必要があります。評価バージョンのコンパイラ( または Free モードで動作するコンパイラ ) を使う事もできます。

コンパイラのインストールおよびアクティベートの方法については、『Installing andLicensing MPLAB XC C Compilers』(DS50002059) を参照してください。この文書はMicrochip 社のウェブサイト (wwww.microchip.com) からダウンロードできます。

2014 Microchip Technology Inc. DS50002173A_JP - p. 1

Page 2: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 入門ガイド

MPLAB X IDE 内でプロジェクトを作成する

以下では、MPLAB X IDE 内で MPLAB XC8 C コンパイラ向けのプロジェクトを作成する方法について説明します。

この手順は以下の通りです。

ステップ 1 - プロジェクトのタイプを設定する

ステップ 2 - ターゲット デバイスを選択する

ステップ 3 - デバイスヘッダを選択する

ステップ 4 - プロジェクト コードを実行するためのツールを選択する

ステップ 5 - プラグインボードを選択する ( 一部のデバッガツールを選択した場合にのみ適用 )

ステップ 6 - ソースコードをコンパイルするためのツールを選択する

ステップ 7 - プロジェクトの名前とパスを指定する

ステップ 8 - プロジェクトの作成を完了する

MPLAB X IDE を使わない読者またはプロジェクトの作成方法を既に熟知している読者は、次の 「基本的なコード」へ進んでください。MPLAB X IDE に関する詳細は、

『MPLAB X IDE ユーザガイド』 (DS52027) を参照してください。この文書は Microchip社のウェブサイト (wwww.microchip.com) からダウンロードできます。

DS50002173A_JP - p. 2 2014 Microchip Technology Inc.

Page 3: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 C コンパイラ

ステップ 1 - プロジェクトのタイプを設定する

MPLAB X IDE で File>New Project... を選択します。ウィンドウ ( 図 1-1) が開いたら、「Categories」フィールドで [Microchip Embedded] を選択し、「Projects」フィールドで [Standalone Project] を選択します。[Next>] をクリックして次へ進みます。

図 1-1: [NEW PROJECT] ウィンドウ

2014 Microchip Technology Inc. DS50002173A_JP - p. 3

Page 4: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 入門ガイド

ステップ 2 - ターゲット デバイスを選択する

ターゲット ハードウェア上のデバイスに正しく一致するデバイスを選択する必要があります。ハードウェアの代わりにシミュレータを使う場合、どのデバイスでも選択できます。

選択を容易にするため、デバイスはファミリごとにグループ化されています。MPLABXC8 は、8 ビット マイクロコントローラ ファミリの全てのデバイス向けにコンパイル可能です。図 1-2 では、PIC18 ファミリから PIC18F87J11 を選択しています。[Next>] をクリックして次へ進みます。

図 1-2: デバイスを選択する

DS50002173A_JP - p. 4 2014 Microchip Technology Inc.

Page 5: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 C コンパイラ

ステップ 3 - デバイスヘッダを選択する

本書ではデバッグ機能を使わないため、「Supported Debug Header」フィールドでは[None] を選択します ( 図 1-3 参照 )。

図 1-3: ヘッダを選択する

ステップ 4 - プロジェクト コードを実行するためのツールを選択する

ターゲット ハードウェアを使う場合、使用するデバッガをリストから選択します。ハードウェアを使わない場合は [Simulator] を選択します。図 1-4 では、生成したコードを実行するためのプログラマ / デバッガとして MPLAB REAL ICE を選択しています。

図 1-4: ツールを選択する

2014 Microchip Technology Inc. DS50002173A_JP - p. 5

Page 6: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 入門ガイド

ステップ 5 - プラグインボードを選択する ( 一部のデバッガツールを選択した場合にのみ適用 )

図 1-5 に示すダイアログが表示された場合、プラグインボードを使う必要がなければ[None] を選択します。

図 1-5: プラグインを選択する

ステップ 6 - ソースコードをコンパイルするためのツールを選択する

[Select Compiler] ウィンドウ ( 図 1-6) 内で [XC8] の下に複数の MPLAB XC8 コンパイラ バージョンが表示される場合、最新バージョンを選択します。この選択は後で変更できます。

図 1-6: コンパイラを選択する

DS50002173A_JP - p. 6 2014 Microchip Technology Inc.

Page 7: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 C コンパイラ

ステップ 7 - プロジェクトの名前とパスを指定する

「Project Name] フィールドにプロジェクトの名前を入力します。「Project Location」フィールドに表示される既定値のプロジェクトパスが適さない場合、[Browse...] をクリックします。図 1-7 の例では、プロジェクト名として「quick_start_XC8」を指定しています。

MPLAB X IDE内に複数のプロジェクトが存在する場合、[Set as main project]にチェックを入れる事で、このプロジェクトをメイン プロジェクトとして他のプロジェクトから区別できます。

図 1-7: プロジェクトの名前とパスを指定する

2014 Microchip Technology Inc. DS50002173A_JP - p. 7

Page 8: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 入門ガイド

ステップ 8 - プロジェクトの作成を完了する

[Finish] をクリックするとプロジェクトが作成されます。[Projects] ウィンドウ1

( 図 1-8 の左上のタブ ) に、このプロジェクトに対応するアイコンが表示されます。[Projects] ウィンドウの下の [( プロジェクト名 ) - Dashboard] タブには、このプロジェクトに関する詳細な情報が表示されます。

図 1-8: [PROJECTS] ウィンドウ

1. このタブが既定値で表示されない場合、Windows>Projects を選択して表示する必要があります。

DS50002173A_JP - p. 8 2014 Microchip Technology Inc.

Page 9: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 C コンパイラ

基本的なコード

ここで使うコードは、ユーザが作成する MPLAB XC8 プロジェクトの基本として使える小さなプログラムです。これは最小限のコードですが、正常にコンパイルおよび実行できます。

コードの作成手順は以下の通りです。

ステップ 1 - ソースファイルを新規作成する

ステップ 2 - ソースファイルの名前を指定する

ステップ 3 - 新しいファイルにスケルトンコードを追加する

ステップ 4 - ファイルを保存する

2014 Microchip Technology Inc. DS50002173A_JP - p. 9

Page 10: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 入門ガイド

ステップ 1 - ソースファイルを新規作成する

MPLAB X IDE では、各種の方法でソースファイルを作成できますが、ここでは最も基本的な方法に沿って、ソースファイルを作成する手順を詳細に説明します。

[Projects] ウィンドウ ( 図 1-9) 内で、作成した「quick_start_XC8」プロジェクトのアイコン ( 橙色で反転表示 ) を右クリックし、ポップアップ メニューから New>CSource File... を選択します。

図 1-9: ポップアップ メニューから新規作成するファイルを選択する

すると、[New C Source File] ウィンドウ ( 図 1-10) が開きます。

図 1-10: [NEW C SOURCE FILE] ウィンドウ

DS50002173A_JP - p. 10 2014 Microchip Technology Inc.

Page 11: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 C コンパイラ

ステップ 2 - ソースファイルの名前を指定する

「Project」フィールドに表示されているプロジェクト名が正しい事を確認します。

「File Name」フィールドに、作成するソースファイルの名前として「main.c」を入力します ( 図 1-10 参照 )。[Finish] をクリックすると、作成されたファイルに対応するアイコンが [Projects] ウィンドウに表示されます。このファイルはテキストエディタで開く事ができます。この時点ではファイルは空白です。

ステップ 3 - 新しいファイルにスケルトンコードを追加する

作成したソースファイル「main.c」に以下のテキストをコピーするか直接書き込みます。

#include <xc.h>

int main(void){ return 0;}

このコードは、MPLAB XC8 でビルドする全てのプロジェクトの初期コードとして使えます。

全ての C プログラムには、「main()」の名前を持つ関数が 1 つだけ必要です。しかし、この関数のプロトタイプはコンパイラごとに多少異なります。上記のプロトタイプは全ての MPLAB XC コンパイラで使えます。main()は int値を返すため、戻り値を指定した return 命令が必要です。戻り値「0」は、main() が正常に実行された事を意味します。

このソースファイル内のコードからコンパイラまたはデバイスに固有の機能へアクセスできるようにするため、ヘッダファイル <xc.h>をインクルードします。このアクセスは常に必要であるため、実質的に全てのソースファイルに <xc.h> をインクルードする必要があります。

ステップ 4 - ファイルを保存する

File>Save を選択する事で、編集後のファイルを確実に保存します。

MPLAB X IDE を使わない場合、任意のエディタを使って上記のコードをファイルに書き込み、拡張子「.c」を付けてプレーン テキストとして保存します。

2014 Microchip Technology Inc. DS50002173A_JP - p. 11

Page 12: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 入門ガイド

コンパイル

前記の初期プログラムは有効な C プログラムです。つまり、コンパイルが可能だという事です。以下では、コードをビルドする方法について説明します。

MPLAB X IDE には、ソースコードのビルドに使うコンパイラを既に指定済みです。しかし、オプションを指定する事でコンパイラの動作を変更する事ができます。既定値のオプションは、ほとんどのプロジェクトで使えます。コンパイラ オプションは[Project Properties] ダイアログを使って変更できます。このダイアログは、[( プロジェクト名 ) - Dashboard] タブの左端列にある一番上のボタン ( 図 1-11 参照 ) を使って開きます。このダイアログでは、コンパイラ オプション以外のプロジェクト属性 ( プロジェクトで使うデバイスやコンパイラ等 ) も変更できます。

図 1-11: [PROJECT PROPERTIES] ボタン

コンパイルは各種の方法で実行できます。ツールバー上のボタンを使うと各種のビルド動作を素早く選択できますが、Run または Debug メニューから選択する事もできます。コードをビルドするだけの動作もあれば、ビルド後にコードを実行する動作もあります。ビルドと実行は、どちらもリリースモードまたはデバッグモードで行えます。

デバッグモードでは、ターゲット デバイス上のデバッグ エグゼクティブを使います。これにより、ブレークポイント等のデバッグ機能が使えます。デバッグ エグゼクティブは、デバイスメモリの一部の領域 ( 通常はコード用に使えるメモリ領域 ) を占有します。デバッグビルドは、このメモリ領域をデバッグ エグゼクティブ用に予約します。

リリースモードの場合、デバッグ機能は一切使えません。しかし、デバイスメモリの全領域がプロジェクト用に使えます。このビルドモードは、最終製品向けの量産イメージを作成する場合に適します。

Project properties

DS50002173A_JP - p. 12 2014 Microchip Technology Inc.

Page 13: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 C コンパイラ

図 1-12 に、コードをビルドする際によく使うツールバーボタンを示します。

図 1-12: ビルド用のボタン

各ボタンの機能は以下の通りです ( 左から右に向かって記載 )。

• 直近のビルド後に変更されたプロジェクト ソースファイルだけをリリースモードでビルド / リンクします。

• 変更の有無に関係なく全てのプロジェクト ソースファイルをリリースモードでビルド / リンクします。

• 直近のビルド後に変更されたプロジェクト ソースファイルだけをリリースモードでビルド / リンクした後に、コードを実行します。

• 直近のビルド後に変更されたプロジェクト ソースファイルだけをデバッグモードでビルド / リンクした後に、コードをダウンロードして実行します ( デバッグ エグゼクティブを使用 )。

本書の手順では [Build project] または [Clean and Build project] ボタンを使います。

Build projectClean & Build project Build & Debug project

Build & Run project

2014 Microchip Technology Inc. DS50002173A_JP - p. 13

Page 14: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 入門ガイド

これらのボタンをクリックすると、プロジェクト用に選択したコンパイラがプロジェクト内の各ソースファイル ( 本書の例では 1 つだけ ) をビルドし、1 つのバイナリイメージにリンクします。ビルドプロセスに関する情報は [Output] ウィンドウに表示されます。このウィンドウがワークスペース内で既に開かれていない場合は自動的に開きます。このウィンドウの表示例を図 1-13 に示します。

図 1-13: [OUTPUT] ウィンドウ

コンフィグレーション設定が見つからないといった内容の警告が表示されてもコンパイル処理は停止せず、ウィンドウの下部にはコードが無事ビルドされた事を示す

「BUILD SUCCESSFUL」メッセージが表示されます。1[Output] ウィンドウの最後に表示される赤字のエラーメッセージは、コンパイルしたコードとターゲット デバイス間の不整合を示します。これに続いて、これらの警告とエラーを解決するためのデバイスの設定方法が示されます。

ターミナルからビルドする場合、以下のコマンドラインを使います。

xc8 --chip=18f87j11 main.c

デバイス名 (18f87j11) とソースファイル名 (main.c) は、実際の名前に変更してください。コンパイラのパスが検索パス外である場合、アプリケーション名「xc8」に完全なパスを追加する必要があります。

1. PIC18F87J11 以外のデバイスをコンパイルした場合、表示される警告の数は異なります。

DS50002173A_JP - p. 14 2014 Microchip Technology Inc.

Page 15: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 C コンパイラ

デバイス コンフィグレーション ビットの指定

作成したプログラムが有効な C プログラムであっても、それだけではデバイス上で正しく動作しません。全ての Microchip 社製 8 ビット PIC デバイスには、正しく動作させるための設定が必要です。命令クロックの設定等、一部の設定はデバイスの基本的動作に影響します。この設定が正しくないと、クロックが動作しない可能性があります。

前述のように、[Output] ウィンドウにはデバイス コンフィグレーションの問題を示唆する警告が表示されますが、警告が全く表示されない場合でも、これらのコンフィグレーションを設定する必要があるという事に注意してください。

コンフィグレーションは、デバイス内の特定のビットを使って設定します。MPLABXC8 C Compiler はプラグマを使う事で、コード内でのコンフィグレーション ビットの設定を可能にします。これらのプラグマが提供する値は、プロジェクトのコンパイル済みバイナリイメージとマージされてデバイスにダウンロードされます。

設定可能なコンフィグレーションの数とタイプはデバイスごとに異なります。各設定の制御内容については、デバイスのデータシートを参照してください。本書で使うPIC18F87J1 のデータシート『PIC18F87J11 Family Data Sheet』(DS39778) は、Microchip 社のウェブサイト (www.microchip.com) からダウンロードできます。

デバイスを設定するためのプラグマは、MPLAB X IDE 内の [Configuration Bits] ウィンドウを使うと最も容易に作成できます。このウィンドウを使ってプラグマの作成に必要な情報を取得する手順は、以下の通りです。

ステップ 1 - [Configuration Bits] ウィンドウを開く

ステップ 2 - 各設定を確認する

ステップ 3 - 選択した設定を適用するためのプラグマを生成する

ステップ 4 - [Config Bits Source] ウィンドウからソースファイルへコードをコピーする

2014 Microchip Technology Inc. DS50002173A_JP - p. 15

Page 16: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 入門ガイド

ステップ 1 - [Configuration Bits] ウィンドウを開く

メニューから Window>PIC Memory Views>Configuration Bits を選択すると[Configuration Bits] ウィンドウが開きます。このウィンドウは、コンフィグレーション ビットに関連する情報 ( アドレス、値等 ) の一覧を表示します。図 1-14 に表示例を示します。

図 1-14: [CONFIGURATION BITS] ウィンドウ

[Name] および [Field] 列は、デバイス データシート内の対応する設定を見付けるために役立ちます。

[Category] 列は、その設定の制御内容を表示します。

[Setting] 列は、その設定の現在の状態を示します。

ステップ 2 - 各設定を確認する

以下の設定には特に注意を払ってください。これらを正しく設定しないと、ほぼ確実にランタイムエラーが発生します。

オシレータの選択

この設定は、ターゲット ハードウェアのオシレータ回路に適合している必要があります。この設定が正しくないと、デバイスクロックは動作できません。デバッグツールとしてシミュレータを使う場合、この設定は無視可能です。一般的に、開発ボードは高速水晶振動子を使います。

ウォッチドッグ タイマ

ウォッチドッグ タイマは、必要になるまで無効にしておく事を推奨します。これにより、予期せぬリセットを防ぎます。

コード保護

コード保護は、必要になるまで無効にしておきます。これにより、デバイスへの完全なアクセスを確保します。

拡張命令セット

この PIC18 設定は、必ず無効にします。MPLAB XC8 C Compiler は、この命令セットをサポートしません。

設定を変更するには、該当する行の [Settings] 列をクリックし、プルダウンリストから適切な設定を選択します。

ステップ 3 - 選択した設定を適用するためのプラグマを生成する

[Generate Source Code to Output] ボタンをクリックします。生成されたコードは[Config Bits Source] ウィンドウ ( 図 1-15) に表示されます。

DS50002173A_JP - p. 16 2014 Microchip Technology Inc.

Page 17: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 C コンパイラ

図 1-15: [CONFIGURATION BITS SOURCE] ウィンドウ

ステップ 4 - [Config Bits Source] ウィンドウからソースファイルへコードをコピーする

このコードは実行可能コードではなく、関数定義の外側に置く必要があります。このコードを追加したmain.cコードを 以下に示します (見やすくするためコメントは省略しています )。1

#include <xc.h>

// CONFIG1#pragma config WDTEN = OFF#pragma config STVREN = ON#pragma config XINST = OFF#pragma config CP0 = OFF

// CONFIG2#pragma config FOSC = HSPLL#pragma config FCMEN = ON#pragma config IESO = ON#pragma config WDTPS = 32768

// CONFIG3#pragma config EASHFT = ON#pragma config MODE = XM16#pragma config BW = 16#pragma config WAIT = OFF#pragma config CCP2MX = DEFAULT#pragma config ECCPMX = DEFAULT#pragma config PMPMX = DEFAULT#pragma config MSSPMSK = MSK7

int main(void){ return 0;}

1. これは、PIC18F87J11 と PICDEM PIC18 Explorer ボードを使う場合のコードです。実際のデバ

イスとハードウェアに対応したコンフィグレーション設定を使う必要があります。

2014 Microchip Technology Inc. DS50002173A_JP - p. 17

Page 18: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 入門ガイド

ソースコード内のコンフィグレーション プラグマと [Configuration Bits]ウィンドウの内容はリンクしていません。コンフィグレーション設定を変更する場合、ソースコード内のプラグマを手動で編集する必要があります。または、[Configuration Bits] ウィンドウ内で設定を変更した後にプラグマを再生成し、これを使ってソースコード内の既存のプラグマを置換します。

MPLAB X IDE を使わずに Microchip 社製デバイスに対応する設定と値を調べる事もできます。ダウンロードしたコンパイラには HTML ガイドが含まれています。コンパイラのインストール ディレクトリ内の DOCS ディレクトリに保存されているpic_chipinfo.html または pic18_chipinfo.html を開きます。使用するターゲット デバイスへのリンクをクリックすると、configプラグマ向けの適切な設定と値が表示されます。

ソースコードにコンフィグレーション プラグマを含めた後に前記と同じ方法でビルドすると、警告やエラーは表示されません。ビルドに成功した場合の [Output] ウィンドウを図 1-16 に示します。

図 1-16: ビルドに成功した場合の [OUTPUT] ウィンドウ

DS50002173A_JP - p. 18 2014 Microchip Technology Inc.

Page 19: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 C コンパイラ

デバイスレジスタへのアクセス

これまでにコンパイルしたコードには、まだランタイム機能がありません。これから、デバイスに実行させるタスクをセットアップします。以下では、デバイスの特殊機能レジスタ (SFR) にアクセスし、ポートに接続した LED を点灯させる方法について説明します。

以下のコードは、ポート D のデータ方向を設定した後に、このポートのラッチに値を書き込みます。1

#include <xc.h>

// your configuration bit settings go here// configuration code (indicated earlier) omitted for brevity

int main(void){ // code to access your port replaces the following TRISD = 0x0; // set all port D bits to be output LATD = 0x55; // write a value to the port D latch

return 0;}

このコードでは、ID を使って SFR を表します。これらの ID は、<xc.h> のインクルードによって定義される変数に対応付けられています。これらの変数は他の C 変数と同様に使う事ができます。しかし、これらの各変数には SFR に対応付けるためのアドレスが割り当てられています。これらの変数に書き込むとレジスタが書き込まれ、結果としてデバイスの状態が変化する可能性があります。場合によっては、これらの変数を単純に読み出すだけでもデバイスの動作に影響します。

上記の ID は、対応するレジスタの名前 ( デバイス データシートで指定されている名前 ) と同じです。しかし、SFR 内のビットを表す ID 等では、名前が一致しない場合もあります。

デバイスの SFR へのアクセスに使う名前は、以下の手順で調べる事ができます。

ステップ 1 - <xc.h>をインクルードしたソースファイルを作成する

ステップ 2 - デバイスの妥当性を確認し、コードをビルドし、エラーがないか確認する

ステップ 3 - ステップ 2 でコンパイラが生成した前処理ファイルを検証する

1. デバイスによっては、ポートにラッチレジスタが割り当てられていない場合があります。その場

合、ポート ( 例 : PORTDレジスタ ) に直接書き込む必要があります。詳細はデバイスのデータ

シートを参照してください。

2014 Microchip Technology Inc. DS50002173A_JP - p. 19

Page 20: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 入門ガイド

ステップ 1 - <xc.h>をインクルードしたソースファイルを作成する

ファイルの内容はほとんど無関係です。本書で最初に使ったスケルトンコード ( 空白の main()関数 ) が理想的です。p. 17 のソースファイルは使う事ができます。

ステップ 2 - デバイスの妥当性を確認し、コードをビルドし、エラーがないか確認する

ステップ 3 - ステップ 2 でコンパイラが生成した前処理ファイルを検証する

通常この前処理ファイルは、コンパイル後も残されます。ソースファイル名が main.cである場合、前処理ファイル名は main.preです。コマンドラインでコンパイルする場合、前処理ファイルはソースファイルと同じディレクトリに残されます。MPLABX IDE を使う場合、前処理ファイルは [Files] ウィンドウ ( 図 1-17 の左上 ) 内のプロジェクト フォルダ ( 本書の例では「quick_start_XC8」フォルダ ) の下の

「build/default/production」フォルダに表示されます。1

図 1-17: レジスタ名が書かれた前処理ファイル

図 1-17 は、PIC18F87J11 向けの前処理ファイルの内容も示しています ( 図の右側のエディタ画面参照)。このファイルは、SFRに対応する全ての変数のC定義を含みます。

図 1-17 では、変数 TRISDが unsigned charとして定義され、アドレス 0xF95 に配置されています。PIC18F87J11 のデータシートを見ると、TRISD レジスタのアドレスが実際に 0xF95 である事を確認できます。この変数にはエイリアス (DDRD) が存在する事にも注意してください。また、このファイルはレジスタ内のビットも定義しています。これにより、例えば構造体ビットフィールド TRISDbits.TRISD7またはそのエイリアスである TRISDbits.RD7を使って、ポート方向レジスタ TRISD の最上位ビット (MSb) にアクセスできる事が分かります。レジスタの名前が見つからない場合、レジスタのアドレスを使って見付ける事ができます。この前処理ファイルは中間生成ファイルであり、このファイルを変更しても次のビルド時に内容が失われる事に注意してください。

1.「production」フォルダは、リリース ( 量産 ) ビルド用の中間生成ファイルを保持するために使

います。「debug」フォルダは、デバッグビルド用と同じファイルを保持します ( 「コンパイル」

参照 )。

DS50002173A_JP - p. 20 2014 Microchip Technology Inc.

Page 21: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 C コンパイラ

p. 19 のソースコードは、値をポート D ラッチに書き込みます。このコードを実行して、シミュレータまたはエミュレータでポート D ラッチの内容を確認すると、TRISDレジスタに値 0x55 が格納されている事が分かります。しかし、ポートラッチ内の値が必ずデバイスピンに出力されるとは限りません。実際、PIC18F87J11 でコンフィグレーション ビットを上記のように指定した場合、このポートはピンに割り当てられません。このため、ポート D に対応するピンに電圧は出力されず、それらのピンに LEDを接続しても期待通りに点灯しません。つまり、ポート D をデバイスピンに接続するための手順が必要だという事です。

2014 Microchip Technology Inc. DS50002173A_JP - p. 21

Page 22: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 入門ガイド

ポートピンを共有する周辺モジュールを無効にする

以下では、ポートラッチに書き込んだ値をデバイスピンに出力するためにサンプル プロジェクトに追加する必要があるコードについて説明します。このコードを正しく追加しなかった事が原因で入門用プログラムが期待通りに動作しないという事がよくあります。

Microchip 社製 8 ビット PIC デバイスは、限られたピン数で周辺モジュールを豊富に内蔵しています。このため、複数の周辺モジュールからの IO ラインが同じピンを共有している場合があります。しかし、そのピンを使用できるのは、常に 1 つの周辺モジュールだけです。

デジタル IO ポートは全ての周辺モジュールと同様に扱われます。ポートにピンの使用権を割り当てない限り、そのポートをデバイスの外部に接続する事はできません。多くの場合、既定値ではポートはピンに接続されません。

周辺モジュール間のピンの共有については、デバイス データシートを参照してください。多くの PIC デバイス データシートは、素早く参照できるピン配置図に加えて、各ピンの使用方法に関する詳細な説明を記載しています。

以下では、ポートをポートピンに接続するにはどの周辺モジュールを初期化する必要があるのかを見極めるための手順について説明します。

ステップ 1 - デバイス データシート内の「ピンの説明」または関連するテーブルを参照する

ステップ 2 - テーブル内で一番上に記載されている他の周辺モジュールに対応するSFR を見付ける

ステップ 3 - その周辺モジュールを無効にするために SFR に書き込むべき値を調べる

ステップ 4 - ステップ 1 のテーブル ( 図 1-18) 内の他の全ての周辺モジュールに対しても以上の手順を繰り返す

DS50002173A_JP - p. 22 2014 Microchip Technology Inc.

Page 23: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 C コンパイラ

ステップ 1 - デバイス データシート内の「ピンの説明」または関連するテーブルを参照する

PIC18F87J11(80 ピンパッケージ ) 向けのピン配置テーブルの一部を図 1-18 に示します。

図 1-18: PIC18F87J11 向けピン配置テーブルの抜粋

本書の例で使う PICDEM PIC18 Explorer ボードの場合、LED はポート D に接続します ( 必要に応じ、使用する開発ボードのユーザガイドを参照してください )。ポートD が使うピンには RD0、RD1、RD2、... の名称が付けられています。図 1-18 のテーブルでは、これらのピンに別の名称も付けられている事が分かります ( 例 : RD0 に対して AD0 と PMD0)。このテーブルはポート D、外部メモリバス、パラレル マスタポートが全て同じピンを共有する事を示しています。ポート D が使用するその他のピン ( 図 1-18 には示していません ) も、SPI モジュールが共有しています。

ステップ 2 - テーブル内で一番上に記載されている他の周辺モジュールに対応するSFR を見付ける

デバイス データシートで、その周辺モジュールに関連する項目を参照し、その周辺モジュールを制御する SFR を見付けます。

2014 Microchip Technology Inc. DS50002173A_JP - p. 23

Page 24: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 入門ガイド

ステップ 3 - その周辺モジュールを無効にするために SFR に書き込むべき値を調べる

例えば、データシート内の外部メモリバスに関する説明には、外部メモリモジュールは MEMCON SFR 内の EBDIS ビットによって制御されると書いてあります。デバイス データシートから抜粋した MEMCON レジスタの説明 ( 図 1-19) が示すように、EBDIS ビットの POR ( パワーオン リセット ) 時の値は「0」( バスはアクティブ ) です。このモジュールは、EBDIS ビットを「1」にセットする事によって無効にする必要があります。

図 1-19: 外部バスレジスタの説明 ( データシートからの抜粋 )

上記と同様の手順により、パラレル マスタポートは PMPEN ビットによって制御される事が分かります。このビットの POR 時の値は「0」( 無効 ) です。つまり、PORが発生した後は既に無効にされているという事です。従って、本書のサンプル プログラムには、このモジュールを無効にするためのコードを追加する必要はありません。1

ステップ 4 - ステップ 1 のテーブル ( 図 1-18) 内の他の全ての周辺モジュールに対しても以上の手順を繰り返す

これらの手順を繰り返す事で、PIC18F87J11 向けのサンプル プログラムは以下のように拡張されます。2

#include <xc.h>

// your configuration bit settings go here// configuration code (indicated earlier) omitted for brevity

int main(void){ // intialization code for your device replaces the following WDTCONbits.ADSHR = 1; // enable alternate access to MEMCON MEMCONbits.EBDIS = 1; // turn off external memory bus

// code to access your port replaces the following TRISD = 0x0; // set all port D bits to be output LATD = 0x55; // write a value to the port latch

return 0;}

1. この周辺モジュールを明示的に無効にしても害はありません。プログラムがソフトリセットを実

行した後のこのビットの値は、「0」ではない可能性があります。

2. このデバイスの MEMCONレジスタにアクセスするには、ADSHRビットをセットする必要がありま

す。

DS50002173A_JP - p. 24 2014 Microchip Technology Inc.

Page 25: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 C コンパイラ

ユーザコードをダウンロードして実行する

前ページのソースコードは PIC18F87J11 用です。使用デバイス向けに書いたコードが期待通りに動作するかどうか確認してください。以下では、バイナリイメージをビルド、ダウンロード、実行する方法について説明します。

図 1-12 に示した [Build & Run project] ボタンをクリックします。ハードウェア デバッガの機能を試したい場合は [Build & Debug project] ボタンをクリックしてください。どちらのボタンも、ソースコードのコンパイル済みバイナリイメージが最新バージョンである事を確認した後に、コードをダウンロードして実行します。[Build and Debugproject] ボタンをクリックした場合、ターゲット デバイス内のデバッグ エグゼクティブが実行されます。ビルドの進捗状況は [Output] ウィンドウに表示されます ( 図 1-20に類似 )。

図 1-20: コードの実行

コードを実行すると、コード内で指定した通りに LED が点灯する ( または、ポートに割り当てたピンに電圧が出力される ) 必要があります。ポートに割り当てた値 0x55は、ポートのピンに接続した LED を 1 秒周期で点灯します。

しかし、シミュレータを使う場合、コードの実行を停止した後に、ポートに格納されている値を確認する必要があります。この場合、ポートに正しい値が書き込まれる事は確認できますが、ポートが実際のデバイスのピンに接続されるかどうかは確認できません。

コードのステップ実行やブレークポイント等のデバッグ機能を試したい場合、MPLAB X IDE 関連の文書を参照してください。

2014 Microchip Technology Inc. DS50002173A_JP - p. 25

Page 26: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 入門ガイド

メインループを実装する

p. 24 のサンプル コードは 2 つの命令を実行した後に停止します。main()の最後まで実行すると、コンパイラによって追加されたコードはリセットベクタへ戻ります。次いで、デバイスはランタイム起動コードと main()関数を再度実行します。これらのソフトリセットは望ましくありません。以下では、コンパイラのその他の機能を使って、ポートに書き込む値を自動的に変化させる方法と、main()を終了せずに繰り返し実行する方法について説明します。

下のコードでは、main()が終了しないよう無限ループを追加しています。また、このループ内でポートラッチにカウンタ値 (portValue) を割り当て、このカウンタをインクリメントする事でポート値を変化させます。さらに遅延ルーチンを追加する事で、LED の点灯 / 消灯を目視できるようにします。

#include <xc.h>

// your configuration bit settings go here// configuration code (indicated earlier) omitted for brevity

unsigned char portValue;

int main(void){ // intialization code for your device replaces the following WDTCONbits.ADSHR = 1; // enable alternate access to MEMCON MEMCONbits.EBDIS = 1; // turn off external memory bus

// code to access your port replaces the following TRISD = 0x0; // set all port D bits to be output

while(1) { LATD = portValue++; _delay(40000); }

return 0; // we should never reach this}

このコードをビルドして実行します。ハードウェアを使う場合、ポートに接続したLED が示すバイナリ値が 0 から 0xFF へカウントアップする事を確認します。

ポート自体をインクリメントするのではないという事に注意してください。ポートレジスタをそのような表現で使うと、読み出し - 変更 - 書き込み問題が発生する可能性があります。ポートに出力する値は、必ず変数を使って保持する必要があります。つまり、変数をポートまたはポートラッチに割り当てて、その変数を変更する必要があるという事です。

このコードの遅延ルーチン (_delay: アンダースコアで始まる事に注意 ) は、実際にはコンパイラのビルトイン関数です。この関数とコンパイラ ライブラリ関数に関するヘルプは『MPLAB XC8 C Compiler User’s Guide』の補遺に記載されています。遅延なしでは LED が高速に点滅するため、暗く常時点灯しているようにしか見えません。使用デバイスのクロック周波数によっては、遅延長を調整する必要があります。

DS50002173A_JP - p. 26 2014 Microchip Technology Inc.

Page 27: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 C コンパイラ

割り込みを使う

以下では、割り込みを使うために前記 (p. 26) のコードを変更します。これは C 言語だけで完全に行えます。8 ビットデバイスの場合、コンパイラはコンテクストを切り換えるコードを生成し、これを自動的に割り込みベクタへリンクします。

下のコードの機能は前記のコードと同じです。しかし、遅延を使う代わりに timer 0を使って割り込みを生成します。割り込みに対応するコードはカウンタ変数をインクリメントします。main()内の while()ループは、p. 26 のコードと同様にカウンタ値をポート (LED) に書き込みます。

#include <xc.h>

// your configuration bit settings go here// configuration code (indicated earlier) omitted for brevity

unsigned char portValue; // our counter variable

void interrupt myIsr(void){ // only process timer-triggered interrupts if(INTCONbits.TMR0IE && INTCONbits.TMR0IF) { portValue++; INTCONbits.TMR0IF = 0; // clear this interrupt condition }}

int main(void){ WDTCONbits.ADSHR = 1; // enable alternate access to MEMCON MEMCONbits.EBDIS = 1; // turn off external memory bus

TRISD = 0x0;

T0CON = 0b10001000; // enable the timer as 16 bit... // internal clock, no prescaler INTCONbits.TMR0IE = 1; // enable interrupts for timer 0 ei(); // enable all interrupts

while(1) { LATD = portValue; }

return 0;}

このコードをビルドして実行すると、LED は前記のコードと同様に点滅します。LEDの点滅速度は、例えばタイマのプリスケーラを有効にしてクロックを低速にする事によって調整できます。

interrupt指定子を使って関数myIsr()を割り込み関数として指定している事に注意してください。この割り込み関数には複数の割り込み要因に対応する事が求められる可能性があるため、割り込み要因がタイマであった場合にのみカウンタをインクリメントするためのコードを追加しています。割り込み関数に含めるコードは最小限にする事を推奨します。

main()では、T0CON 内の各ビットの値を分かりやすくするために、0b接頭辞を付けたバイナリ定数を使っています。異なるデバイスを使う場合、データシートを参照してレジスタ名を調べ、正しいタイマ動作が得られるようにそれらのレジスタ内のビットを設定する必要があります。

このコードでは、コンパイラマクロ ei() を使って割り込みを有効にしていますが、INTCON レジスタ内の GIE ビットを明示的にセットする事で割り込みを有効にする事もできます。

2014 Microchip Technology Inc. DS50002173A_JP - p. 27

Page 28: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

MPLAB XC8 入門ガイド

まとめ

本書で示した基本的コンセプトと手法を応用すれば、8 ビット PIC デバイス向けに非常に複雑なプログラムを書く事ができます。本書を読めば、デバイスが使う全てのSFR と SFR ビットの名前を調べて、デバイスを正しく設定する事ができます。さらに、デバイスの内蔵周辺モジュールに割り込みを生成させ、それらの割り込みにコードを応答させる事ができます。

MPLAB XC8 C コンパイラが実装する C89 ANSI 標準 C 言語を熟知する事が重要です。このコンパイラの動作と非標準構文に関するより詳細な情報は、『MPLAB XC8 CCompiler User’s Guide』(DS50002053) に記載されています。この文書は、コンパイラ インストール ディレクトリ内の「DOCS」ディレクトリに保存されています。この文書は、[ プロジェクト名 - Dashboard] タブ ( 図 1-11 参照 ) 内の [Compiler Help] ボタン ( 左端列にある青の「?」ボタン ) をクリックして開く事もできます。

DS50002173A_JP - p. 28 2014 Microchip Technology Inc.

Page 29: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

2014 Microchip Technology Inc. DS50002173A_JP - p. 29

本書に記載されているデバイス アプリケーション等に関する

情報は、ユーザの便宜のためにのみ提供されているものであ

り、更新によって無効とされる事があります。お客様のアプ

リケーションが仕様を満たす事を保証する責任は、お客様に

あります。Microchip 社は、明示的、暗黙的、書面、口頭、法

定のいずれであるかを問わず、本書に記載されている情報に

関して、状態、品質、性能、商品性、特定目的への適合性を

はじめとする、いかなる類の表明も保証も行いません。

Microchip 社は、本書の情報およびその使用に起因する一切の

責任を否認します。Microchip 社の明示的な書面による承認な

しに、生命維持装置あるいは生命安全用途に Microchip 社の製

品を使用する事は全て購入者のリスクとし、また購入者はこ

れによって発生したあらゆる損害、クレーム、訴訟、費用に

関して、Microchip 社は擁護され、免責され、損害をうけない

事に同意するものとします。暗黙的あるいは明示的を問わず、

Microchip社が知的財産権を保有しているライセンスは一切譲

渡されません。

商標

Microchip 社の名称と Microchip ロゴ、dsPIC、FlashFlex、KEELOQ、KEELOQ ロゴ、MPLAB、PIC、PICmicro、PICSTART、PIC32 ロゴ、rfPIC、SST、SST ロゴ、SuperFlash、UNI/O は、

米国およびその他の国における Microchip TechnologyIncorporated の登録商標です。

FilterLab、Hampshire、HI-TECH C、Linear Active Thermistor、MTP、SEEVAL、Embedded Control Solutions Company は、

米国における Microchip Technology Incorporated の登録商標

です。

Silicon Storage Technologyは、その他の国におけるMicrochipTechnology Incorporated の登録商標です。

Analog-for-the-Digital Age、Application Maestro、BodyCom、

chipKIT、chipKIT ロゴ、CodeGuard、dsPICDEM、dsPICDEM.net、dsPICworks、dsSPEAK、ECAN、ECONOMONITOR、FanSense、HI-TIDE、In-Circuit Serial Programming、ICSP、Mindi、MiWi、MPASM、MPF、MPLAB 認証ロゴ、MPLIB、MPLINK、mTouch、Omniscient Code Generation、PICC、PICC-18、PICDEM、

PICDEM.net、PICkit、PICtail、REAL ICE、rfLAB、Select Mode、SQI、Serial Quad I/O、Total Endurance、TSHARC、UniWinDriver、WiperLock、ZENA、Z-Scale は、米国およびその他の国におけ

る Microchip Technology Incorporatedの登録商標です。

SQTP は、米国における Microchip Technology Incorporatedのサービスマークです。

GestICとULPPは、その他の国におけるMicrochip TechnologyGermany II GmbH & Co. & KG (Microchip TechnologyIncorporated の子会社 ) の登録商標です。

その他、本書に記載されている商標は各社に帰属します。

©2013, Microchip Technology Incorporated, Printed in theU.S.A., All Rights Reserved.

ISBN: 978-1-63276-662-5

Microchip 社製デバイスのコード保護機能に関して次の点にご注意ください。

• Microchip 社製品は、該当する Microchip 社データシートに記載の仕様を満たしています。

• Microchip 社では、通常の条件ならびに仕様に従って使用した場合、Microchip 社製品のセキュリティ レベルは、現在市場に流

通している同種製品の中でも最も高度であると考えています。

• しかし、コード保護機能を解除するための不正かつ違法な方法が存在する事もまた事実です。弊社の理解ではこうした手法は、

Microchip 社データシートにある動作仕様書以外の方法で Microchip 社製品を使用する事になります。このような行為は知的所

有権の侵害に該当する可能性が非常に高いと言えます。

• Microchip 社は、コードの保全性に懸念を抱くお客様と連携し、対応策に取り組んでいきます。

• Microchip 社を含む全ての半導体メーカーで、自社のコードのセキュリティを完全に保証できる企業はありません。コード保護

機能とは、Microchip 社が製品を「解読不能」として保証するものではありません。

コード保護機能は常に進歩しています。Microchip 社では、常に製品のコード保護機能の改善に取り組んでいます。Microchip 社

のコード保護機能の侵害は、デジタル ミレニアム著作権法に違反します。そのような行為によってソフトウェアまたはその他の著

Microchip 社では、Chandler および Tempe ( アリゾナ州 )、Gresham( オレゴン州 ) の本部、設計部およびウェハー製造工場そしてカリフォルニア州とインドのデザインセンターが ISO/TS-16949:2009 認証を取得しています。Microchip 社の品質システム プロセスおよび手順は、PIC® MCU および dsPIC® DSC、KEELOQ® コード ホッピング デバイス、シリアル EEPROM、マイクロペリフェラル、不揮発性メモリ、アナログ製品に採用されています。さらに、開発システムの設計と製造に関する Microchip 社の品質システムは ISO 9001:2000 認証を取得しています。

QUALITY MANAGEMENT SYSTEM CERTIFIED BY DNV

== ISO/TS 16949 ==

Page 30: MPLAB XC8 入門ガイド - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf · MPLAB XC8 入門ガイド DS50002173A_JP - p. 2 2014 Microchip Technology

DS00000A_JP - p. 30 2014 Microchip Technology Inc.

北米本社2355 West Chandler Blvd.Chandler, AZ 85224-6199Tel:480-792-7200 Fax:480-792-7277技術サポート : http://www.microchip.com/supportURL: www.microchip.com

アトランタDuluth, GA Tel:678-957-9614 Fax:678-957-1455

オースティン (TX)Tel:512-257-3370

ボストンWestborough, MA Tel:774-760-0087 Fax:774-760-0088

シカゴItasca, IL Tel:630-285-0071 Fax:630-285-0075

クリーブランドIndependence, OH Tel:216-447-0464

Fax:216-447-0643

ダラスAddison, TX Tel:972-818-7423 Fax:972-818-2924

デトロイトNovi, MI Tel:248-848-4000

ヒューストン (TX) Tel:281-894-5983

インディアナポリスNoblesville, IN Tel:317-773-8323Fax:317-773-5453

ロサンゼルスMission Viejo, CA Tel:949-462-9523 Fax:949-462-9608

ニューヨーク (NY) Tel:631-435-6000

サンノゼ (CA) Tel:408-735-9110

カナダ - トロントTel:905-673-0699 Fax:905-673-6509

アジア / 太平洋

アジア太平洋支社Suites 3707-14, 37th FloorTower 6, The GatewayHarbour City, KowloonHong KongTel:852-2943-5100Fax:852-2401-3431

オーストラリア - シドニーTel:61-2-9868-6733Fax:61-2-9868-6755

中国 - 北京Tel:86-10-8569-7000 Fax:86-10-8528-2104

中国 - 成都Tel:86-28-8665-5511Fax:86-28-8665-7889

中国 - 重慶Tel:86-23-8980-9588Fax:86-23-8980-9500

中国 - 杭州Tel:86-571-8792-8115 Fax:86-571-8792-8116

中国 - 香港 SARTel:852-2943-5100 Fax:852-2401-3431

中国 - 南京Tel:86-25-8473-2460Fax:86-25-8473-2470

中国 - 青島Tel:86-532-8502-7355Fax:86-532-8502-7205

中国 - 上海Tel:86-21-5407-5533 Fax:86-21-5407-5066

中国 - 瀋陽Tel:86-24-2334-2829Fax:86-24-2334-2393

中国 - 深圳Tel:86-755-8864-2200 Fax:86-755-8203-1760

中国 - 武漢Tel:86-27-5980-5300Fax:86-27-5980-5118

中国 - 西安Tel:86-29-8833-7252Fax:86-29-8833-7256

中国 - 厦門Tel:86-592-2388138 Fax:86-592-2388130

中国 - 珠海Tel:86-756-3210040 Fax:86-756-3210049

アジア / 太平洋

インド - バンガロールTel:91-80-3090-4444 Fax:91-80-3090-4123

インド - ニューデリーTel:91-11-4160-8631Fax:91-11-4160-8632

インド - プネTel:91-20-3019-1500

日本 - 大阪Tel:81-6-6152-7160 Fax:81-6-6152-9310

日本 - 東京Tel:81-3-6880- 3770 Fax:81-3-6880-3771

韓国 - 大邱Tel:82-53-744-4301Fax:82-53-744-4302

韓国 - ソウルTel:82-2-554-7200Fax:82-2-558-5932 または 82-2-558-5934

マレーシア - クアラルンプールTel:60-3-6201-9857Fax:60-3-6201-9859

マレーシア - ペナンTel:60-4-227-8870Fax:60-4-227-4068

フィリピン - マニラTel:63-2-634-9065Fax:63-2-634-9069

シンガポールTel:65-6334-8870Fax:65-6334-8850

台湾 - 新竹Tel:886-3-5778-366Fax:886-3-5770-955

台湾 - 高雄Tel:886-7-213-7830

台湾 - 台北Tel:886-2-2508-8600 Fax:886-2-2508-0102

タイ - バンコクTel:66-2-694-1351Fax:66-2-694-1350

ヨーロッパ

オーストリア - ヴェルスTel:43-7242-2244-39

Fax:43-7242-2244-393

デンマーク - コペンハーゲンTel:45-4450-2828 Fax:45-4485-2829

フランス - パリTel:33-1-69-53-63-20 Fax:33-1-69-30-90-79

ドイツ - デュッセルドルフTel:49-2129-3766400

ドイツ - ミュンヘンTel:49-89-627-144-0 Fax:49-89-627-144-44

ドイツ - プフォルツハイムTel:49-7231-424750

イタリア - ミラノ Tel:39-0331-742611 Fax:39-0331-466781

イタリア - ベニスTel:39-049-7625286

オランダ - ドリューネンTel:31-416-690399 Fax:31-416-690340

ポーランド - ワルシャワTel:48-22-3325737

スペイン - マドリッドTel:34-91-708-08-90Fax:34-91-708-08-91

スウェーデン - ストックホルムTel:46-8-5090-4654

イギリス - ウォーキンガムTel:44-118-921-5800Fax:44-118-921-5820

各国の営業所とサービス

03/25/14