PICでもっと遊ぶその5「完成したプログラムを眺めてみる」:夏でも楽しい工作教室(1/2 ページ)

» 2005年08月05日 16時00分 公開
[小林哲雄,ITmedia]

 今までは、$80以上のレジスタに書き込むと警告メッセージが出ていたが、これを抑制する擬似命令がerrorlevelだ。先の警告メッセージは「302」であるので、この警告を無視する命令の記述は「errorlevel -302」となる。

 またワークレジスタの設定にはCBLOCK擬似命令を使っている。I2C_routine.incでもこの命令を使っているので同様に設定する。CBLOCKのあとに続く数字はPIC16F675のワークレジスタ開始アドレス$20にI2C_routine.incで使用している「9」を加えたものという意味だ。割り込みを使うので$0004からは割り込みルーチンを入れるのが適当だろう。

 次に続くのは、割り込みルーチンの初期設定部分だ。割り込みルーチンでは、まず復帰後に問題にならないようにレジスタとステータスの退避が必要になる。ここでは前回紹介したドキュメントにあるサンプルプログラムを利用した。WBUFとSBUFが退避先に指定されている。今回の割り込みはタイマー1だけを使うので割り込み要因のチェックを省いて、すぐタイマーのセットを行っている。

 続いてサーボ1のパルス出力ルーチンになる。まず位置情報を見て0ならパルスを出さない。1から255の間ならサーボデータを出すので、最小パルス幅を作成してからデータ量に応じたパルス分のウェイトを入れている。

 コメントで括られているのは、パルス幅を本来の1500マイクロ秒±500マイクロ秒ではなく、幅を広げて移動範囲を広くしようとしてた試みの痕跡だ。筆者が利用したサーボの場合は最後の737マイクロ秒から2261マイクロ秒の範囲で問題なく動作している。

 コメントを含む行のWレジスタへ入れる値と「後NOP」と書かれた行を含むNOPの数で幅を変えている。最後にサーボ1のタイマーを1つ減らしている。同じことをサーボ2に対しても行っている。ちなみにサーボ1はGPIO5、サーボ2はGPIO4を使うことになっている。

 割り込みルーチンの冒頭で退避したレジスタを元に戻し、割り込みの許可フラグを立て直して割り込みルーチンは終了する。

 ここでは、マクロ命令を1つ定義しているが、これはI2C_routine.incが必要とするもの。なお、このコードはAN982のサンプルプログラム「ByteRead.asm」と「SecRead.asm」を参考にしている。

(次はメインルーチンの構造を解説する……)

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

アクセストップ10

2026年11月16日 更新
  1. 「GeForce RTX 5090」搭載グラボに50万円超の“幅” そのワケは? (2026年11月14日)
  2. 無料プラン廃止とストレージ制限の衝撃! 「Microsoft 365 Education」新プランに見る――“アメとムチ”の戦略でGoogleの牙城は崩せるか (2026年11月11日)
  3. PCゲームの「起動に時間がかかりすぎる問題」と「プチフリーズ」はなぜ起こる? その原因を乗り越える取り組みも (2026年11月13日)
  4. Googleが「Gemini 4 Carbon」一般提供開始/Anthropicが「Claude Fable 5.2」「Claude Mythos 5.2」を発表 (2026年11月15日)
  5. 液タブメーカーHUIONが作るAndroidタブレットの実力は? “手帳”の「Note E」と“お絵描き”の「Kamvas Pad 12」をプロ絵師がチェック! (2026年11月13日)
  6. Google初の紛失防止タグ「Pixel Tag」実機レビュー! Galaxy SmartTag2との比較で見えた薄さの魅力と検知の実力 (2026年11月12日)
  7. 難関のWi-Fi配線もクリア! デルの「親子パソコン組立教室 2026」で子どもたちが最新PC作りに挑戦 (2026年11月14日)
  8. 今から「iPhone Duo」を買うべきか? iPhone 18 Pro+iPad miniの2台持ちやGalaxy Z Fold8と比べて考えた (2026年11月12日)
  9. パナソニック コネクト、Core Ultra シリーズ3を搭載した堅牢10型Windowsタブレット (2026年11月13日)
  10. 総メモリ748GB、AI性能20PFLOPS! デルがGB300搭載のワークステーション「Dell Pro Max with GB300」を発売 (2026年08月20日)
最新トピックスPR

過去記事カレンダー