目次>9章 PIC18F1320編 (03)1秒毎にLEDを点滅させて見る

1秒毎にLEDを点滅させて見る

更新日2008.7.20

2つのLEDを1秒毎に交互に点滅させて見ましょう。
1秒の時間はプログラムのループにより作成します。

実験回路

2つのLEDをRB0/RB1に接続した簡単な回路です。
前のページのスイッチを付けた回路でもそのまま使えます。(スイッチは使いませんが)

680Ωの抵抗2本は、300Ω〜1KΩの範囲であれば何でもOKです。
クロックは、10MHzのセラミックレゾネータを使います。

こちらは、ブレッドボードに組んだ状態です。
回路図に無いもの(右上の6ピンヘッダ周り)が有りますが、これはICSP(In-Circuit Serial Programming)用の回路です。
秋月のPICライタを使うのであれば不要です。

仕様

単純な仕様で、RB0とRB1のLEDを1秒毎に交互に点滅させると言うものです。

プログラム

1秒の時間は、プログラムのループにより作成します。
今回も単純なプログラムですので詳細説明は省きます。
同様の事を、LEDを点滅させるで行っていますので参考にして下さい。

今回のプログラムはこちらです。
このプログラムで注目する点は以下の点です。
CBLOCK 0x000
PIC16のSRAMは、先頭がSFR(特殊レジスタ)でその後にGPR(汎用RAM)があります。例えばPIC16F84AのGPRは、0x0Cから開始し、その前のアドレスにSFRがあります。

これに対し、PIC18ではSRAMの先頭からGPRとして使えます。SFRはSRAMの最後にあります。
このため、PIC16のように機種によるGPRの先頭アドレスの意識が不要です。

PIC18の勧め(Vol.2)

その3. SRAMのメモリマッピングは機種共通
PIC18では、GPRの先頭アドレスはどの機種でも0x000で、PIC16のように機種毎の意識をすること無く使えます。
また、SFRはSRAMの最後のアドレス(0xFFF)から、アドレスの小さい方向に向かってマッピングされています。