始めたばかりのPIC18F14K50で定番のLチカしてみる.

Arduino経験者としては, Lチカといったらdelay関数の一択. しかし, PICのC言語についてくる__delay_ms(), __delay_us()の元となってる _delay()インライン関数で あるため引数に変数を使えないとか, 指定する数値に上限があるとか, 色々使いにくいため, 使いやすいように工夫する. といっても, ただwhile文を使うだけだが…

// delay関数
void delay(int num)
{
    while(--num > 0) __delay_us(1000);
}

あと, __delay_ms(), __delay_us()を使うときは,

#define _XTAL_FREQ  48000000

のように, クロック周波数を定義してあげる必要がある. この例では12MHzのセラミック発振子を4xPLLして48MHz(最大クロック)としている.

ソースコード全体はこちら.

ついでに

予定ではTimer0,1,2を使ったLチカも書くつもりだったのが, ソースコードだけGistに置いておく. 参考にどうぞ.