適当にソースを漁っていることと、よく確認しないですぐに試してみる癖が災いして、使っているコンパイラーの違いで苦労してしまっているケースが多いのに今頃気づき、MPLAB XC8を決め打ちで検索し、かつ、手持ちのPICと同じものを扱っているサイトを参考にさせていただくことにした。
結果、まさに「MPLAB XC8編」というタイトルで、PIC12F675を扱ったサイトに行き着いたので参考にさせていただいている。
TMR0を用いた割り込みを使ってLEDを点滅させるというお題から外れて、これに水晶発振器を追加して、外部からのクロックで駆動させてみようと試した。
追加したのは秋月で1個20円だった3本足のクリスタルオシレーターだ。
GP4とGP5の点滅からGP0とGP1の点滅に変更し、もちろんクロックは外部のものを入力する設定にして、1秒間隔で交互に点滅させることにした。
11.776MHzの発振器なので、以下のような計算。
11776000 ÷ 4 ÷ 256 ÷ x = 1
4はPICに与えているクロックの4周期分で1サイクルだから。
256はTMR0が8ビットのカウンターだから。
で、xはプリスケーラの仮のレートのつもり。
計算するとx = 11500となってプリスケーラの最大値の256をオーバーしているので、さらに11500 ÷ 256 = 44.9と計算して、約45回割り込みを繰り返してから点滅させればいい計算になる。
点滅させて100回分をストップ・ウオッチで実測してみたら1分40秒16だったので、まあまあかな。