【ループディレイ関数】
HI-TECH Cコンパイラのライブラリには、ANSI指定以外の関数が
ライブラリとして提供されていますが、その中に下記のようなループディレイ関数が
用意されています。
この表にあるように、サイクル数の合計が197,120以下という条件が付いています。
したがってmsのような場合には、最大遅延時間に制限が付きます。
関数名 機能・書式 備 考 _delay(n); 命令サイクル単位の遅延関数
(最大197,120サイクルまで)NOP命令と同じ _delay_us(x); マイクロ秒単位の遅延関数
_dekay_us(100);_XTAL_FREQ の定数設定が必要
#define _XTAL_FREQ 10000000
合計サイクル数が197,120以下
(Max39msec@20MHz)
(Max78msec@10MHz)_delay_ms(x); ミリ秒単位の遅延関数
_delay_ms(25);
【HI-TECH Cコンパイラでの記述方法】
実際の使用例としては下記のようにします。__delay_ms()関数では、20MHz
クロックの場合には、Max39msecまでしか作れませんから、100msecという
遅延を作るため専用のサブ関数を作っています。
この中で25msecの遅延関数として使っています。