MPASM Technic – 短いWait挿入

ハード制御等で、タイミングを取るためにCPUに対してなるべく正確で短いWaitを入れたい場合、NOPなどの方法があるが、なるべくコード数を減らしたい場合以下のコードはいかが?

最大3ワード(PIC18Fの1命令は16bitです。)のサブルーチンです。

NOPを16個並べるよりも、Call wait1us としたほうが可読性もあがります。

**********************************************************************************

PIC18Fで4Foscで1命令実行するので、Fosc=64MHz動作時の場合、InstCycle=62.5nSとなります。

最大3ワードのサブルーチンですが、Call命令で呼出す位置により1uS,0.5uS,0.25uSのWaitを生成できます。

 

; 64MHz Inst/4clk 1Instruction  数値は消費クロック数 (62.5nS/Inst)

wait1us    ;  2[call] + (8+4) + 2[ret] =16Clk = 1uS
call  wait500ns   ; 8ck

wait500ns   ; 2[call] + 4 + 2[ret] =8Clk = 500nS
call  wait250ns   ; 4ck

wait250ns   ; 2[call] + 2[ret] =4Clk = 250nS
return

 

カテゴリー: MPASM, MPLAB X IDE, PIC, PIC18F, PIC18F46K40, PIC18FxxK40 パーマリンク