• 締切済み

MP-Z80の問題について

ワンボードマイコンMP-Z80のプログラムを勉強しているのですが、 次の問題がわかりません。 (1)NHKの時報の様な音を出すプログラムを作成する。但し音の周波数は、440Hzの音が鳴ったり鳴らなかったりを0.5秒間隔で3回繰り返して880Hzで1秒間鳴らすプログラムを作成する。プログラムは8900H番地以降に作成すること。周波数の誤差は+-0.5以下に、時間の誤差は+-1ms以下にすること。 お願いします、だれか教えてください。

みんなの回答

  • DESTROY11
  • ベストアンサー率23% (805/3491)
回答No.3

0.5秒をどうやって得るのでしょう? どこかにタイマがあって取得できるのでしょうか? それとも命令の実行時間から計算するのでしょうか? 0.5秒以内で鳴らす-止めるを行うのか、0.5秒ごとに鳴らす/止めるを交互に行うのか? 0.0秒目 鳴らす 0.5秒目 止める 1.0秒目 鳴らす 1.5秒目 止める なのか、 0.0秒目 鳴らす-止める 0.5秒目 鳴らす-止める 1.0秒目 鳴らす-止める なのか。

doragon03
質問者

補足

0.5秒ごとに鳴らす、止めるを繰り返したいんですけどお願いします。教えてください。

  • lesstia
  • ベストアンサー率45% (44/96)
回答No.2

・0.5秒間隔 1ms以内に実行できるループを作成して、 ループ開始前に取得した時刻とループ中に取得した時刻を比較し、違いが0.5秒以上になったときにループを抜ける。 おそらくループ開始前に鳴る鳴らないのビットを操作しているので、 ループを抜けたタイミングでそのビットを反転させてあげればよい。 3回繰り返すのならばその数をカウントしておいて越えたらループを抜ける(というか鳴らないようにビットを操作する)ように。 IOアドレスの部分はZ80が分かれば問題ないかと思います。

  • lesstia
  • ベストアンサー率45% (44/96)
回答No.1

この問題のどの部分が分からないのかを詳しく提示してください。 Z80単体では音を出すことはできなかったと思ったので、何らか別の音を出すものを接続すると思うのですが、その仕様どおりにZ80を制御すれば音を出せるかと思います。

参考URL:
http://ziddy.japan.zdnet.com/qa4508180.html?ans_count_asc=1
doragon03
質問者

補足

0.5秒間隔にするところがわかりません。IO装置の制御でスピーカに接続するんですけど「8255A」を用いて、IOアドレスは23H:CWRを用いるんですけどお願いします。

関連するQ&A