TOPMPLAB XC8編(PIC12F675)> (02)LEDを点滅させる(PIC12F675 XC8)

LEDを点滅させる
(PIC12F675 XC8)
更新日2012.5.20
作成日2008.10.5


どのPICでも最初はいつもLEDの点滅実験から開始します。(簡単で動作が目に見えるので)

今回は0.5秒毎にLEDを点滅させるもので、待ち時間はプログラムのループにより作ります。

実験回路
今回の実験回路です。
クロックは内部クロックを使い4MHz動作としました。

LEDと直列の抵抗は、300〜800Ω程度の範囲であれば明るさが変わるだけで点灯は確認できます。

ブレッドボードに組んだ状態
右下の6ピンヘッダ周りは、回路図には有りませんがICSP(In-Circuit Serial Programming)用です。秋月のPICライタなどを使う場合は不要です。

プログラム

今回のプログラムはこちらです。

プログラムの各ブロックで行っている処理は以下通りです。

main
PICの初期化(pic_init)を行った後、0.5秒毎にGPIO4,5を点滅させます。
0.5秒の時間は、1ミリ秒待ちサブルーチン(Delay_ms)に250(待ち時間:ミリ秒)を渡して2回呼び出す事で待ちます。
pic_init
PICの初期化処理を行います。
使わないコンパレータとA/D変換を無効にして、GPIO4,5を出力に設定します。
Delay_ms
引数で渡された数だけ1ミリ秒待ち関数を呼び出します。
mainでは、250をセットして呼び出していますので、250ミリ秒待つ事になります。
Delay_1ms
1ミリ秒待ち関数です。
1ミリ秒の時間は、プログラムを一定回数ループさせる事で作ります。


<注意事項>
PIC12F675は、リセット時にコンパレータとA/D変換機能が有効になっています。
このままでは、各ピンをデジタル入出力として使えませんので、初期処理で以下の設定を行っておきます。
CMCON = 0x07; // コンパレータ未使用
ANSEL = 0x00; // AN未使用