今まで PIC16F84 を使って何度か遊んだことはあったのですが、 あまり入出力数が必要ない回路を組むにあたって、 外部に発振子等が要らないことに魅力を感じ 今更ながら 12F629 を使ってみました。
概要は 16F84 と同じなんですが、微妙な所で違ってましたので、 気づいた点を忘れないよう書きとめておきます。
初期設定
プログラム頭の初期設定は以下の通り (MPLAB の場合)
list p=PIC12F629 #include <p12f629.inc> |
名称
I/O が 5 個しかないため、16F84 に比べ名称が変わっている (MPLAB の場合)。
PIC16F84 | PIC12F629 |
TRISA, TRISB | TRISIO |
PORTA, PORTB | GPIO |
内部発振モード
内部発振には RC 発振を用いており、その周波数に個体差がある。 校正値が 3fff に書かれている。プログラム初期設定時にバンク 1 で
call 0x3ff movwf OSCCAL |
また、焼きこみプログラムによっては全メモリを一括して焼きこむため、 校正値が上書きされてしまう。その場合は、一度全メモリを読んで 3fff に何が書き込まれているかを知り, その下二桁を を retlw の引数にして
org 0x3ff retlw 0x34 end |
入出力
4 ピン (GP3/MCLR) は入力専用
また、
bsf GPIO, 0 bcf GPIO, 2 nop bcf GPIO, 0 bsf GPIO, 2 |
焼きこみ
焼きこみは この方法 で出来た。 ここで記載された icprog を使う場合、