「XC8でDelay関数を使う」の編集履歴(バックアップ)一覧はこちら
「XC8でDelay関数を使う」(2012/11/25 (日) 15:40:49) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
XC8コンパイラを使ってLチカプログラムを書こうとしたら、C18で慣れ親しんだDelay関数がないと言われ、解決方法やら諸々がわかったのでまとめ。
前提条件として・・・
PIC:16F720
コンパイラ:XC8 v1.11
IDE:MPLAB X IDE v1.50
OS:Windows7 x64
*includeフォルダのdelays.hは18シリーズ向け
ヘッダファイルを開いて見るとわかる通り、18シリーズ向けでしか使えないようマクロが入っています。つまり16シリーズではdelays.hをインクルードしても使えません。
*XC8のマニュアルを開いてみる
XC8のマニュアルはIDEから「Help」→「Help Contents」から参照できます。
XC8 Toolchain」→「MPLAB XC8 C Compiler」→「Library Functions」→「_DELAY()」にありました。
サンプルコードからわかる通りxc.hのみインクルードすれば良いようです。
また__delay_us()関数と__delay_ms()関数に関してはxc.hをインクルードした後に_XTAL_FREQをPICのクロック周波数で宣言するようにとのこと。
*_delay()関数の実体はどこへ?
delays.hが16シリーズで使えない以上、別なところに実体があるはずです。
IDE上からジャンプしてみると、pic.hの151行目に実体がありました。
この様子だと18シリーズを使う場合でもdelays.hをインクルードせずとも使えそうです。delays.hは過去のソースを使えるようにするための措置でしょうか。