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は過去のソースを使えるようにするための措置でしょうか。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2012年11月25日 15:40