• ベストアンサー

Z80のリレー動作プログラミング

課題でプログラムの作成がでたのですが、その内容がZ80を使ってチャタリング防止回路についているLEDの点滅をスイッチを使って左から順に点滅していくのを確認していき、その点滅を「スイッチを1回押すと逆に進み、もう1回押すと元の方向に戻る(リレー)」という動作をするプログラムに書き換えるというものですがはっきりいってわけがわかりません。 この事について詳しく載っている、もしくは参考になるプログラムが載っているサイトなどがあれば教えてもらえると助かります。 ※すいません、簡潔に書いたつもりですが意味がわからなかったなどあれば指摘をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • geffery
  • ベストアンサー率100% (1/1)
回答No.1

質問の内容がわからない部分が多いので、以下は私が勝手に想像したハードに対する回答です。 LEDが8個付いていて、その出力ポート1バイトの各bitにLEDが接続されており、チャタリングを考慮しなくていいとします。 あくまでも、ハードウェア構成は推測の域を出ませんので、そのあたりはご了解ください。 多分一番左のLEDを点灯するためには、LEDの接続されているポートに0x80を出力すればいいと思います。 また、一番右のLEDを点灯するためには、同様にして0x1を出力すればいいと思います。つまり、8個のLEDが1バイトのデータに対応しているような場合は、そこのBITを立ててやればその対応したLEDを点灯させることができるはずです。点滅させるためには0x80と0x0をある一定時間毎に入れ替えて出力することにより実現できます。 もし、左端を点灯させてから右に動かしたいのであれば0x80を1bit右シフトしてポート出力すれば左から2個目のLEDが点灯します。右端を点灯させてから左に動かしたいのであれば0x1を1bit左シフトしてポート出力すれば右から2個目のLEDが点灯するはずです。 また、スイッチの検出はスイッチが接続されているポートを読み出し該当するbitが1となっていれば1回押されたと判断し、再度bitが1となっていれば2回押されたと判断します。課題レベルですから、割込み等は使わず、無限ループでスイッチ入力とLED出力を連続して行えばいいでしょう。 回路構成が分からないので、これ以上回答のしようがありませんが、このような考え方でプログラムは簡単にできると思います。 この手の例題は、Z80関連のプログラム入門書によくでていますので、書店で探されてみてはいかがでしょうか?

関連するQ&A