- 締切済み
MP-Z80の問題について
ワンボードマイコンMP-Z80のプログラムを勉強しているのですが、 次の問題がわかりません。 (1)NHKの時報の様な音を出すプログラムを作成する。但し音の周波数は、440Hzの音が鳴ったり鳴らなかったりを0.5秒間隔で3回繰り返して880Hzで1秒間鳴らすプログラムを作成する。プログラムは8900H番地以降に作成すること。周波数の誤差は+-0.5以下に、時間の誤差は+-1ms以下にすること。 お願いします、だれか教えてください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- DESTROY11
- ベストアンサー率23% (805/3491)
0.5秒をどうやって得るのでしょう? どこかにタイマがあって取得できるのでしょうか? それとも命令の実行時間から計算するのでしょうか? 0.5秒以内で鳴らす-止めるを行うのか、0.5秒ごとに鳴らす/止めるを交互に行うのか? 0.0秒目 鳴らす 0.5秒目 止める 1.0秒目 鳴らす 1.5秒目 止める なのか、 0.0秒目 鳴らす-止める 0.5秒目 鳴らす-止める 1.0秒目 鳴らす-止める なのか。
- lesstia
- ベストアンサー率45% (44/96)
・0.5秒間隔 1ms以内に実行できるループを作成して、 ループ開始前に取得した時刻とループ中に取得した時刻を比較し、違いが0.5秒以上になったときにループを抜ける。 おそらくループ開始前に鳴る鳴らないのビットを操作しているので、 ループを抜けたタイミングでそのビットを反転させてあげればよい。 3回繰り返すのならばその数をカウントしておいて越えたらループを抜ける(というか鳴らないようにビットを操作する)ように。 IOアドレスの部分はZ80が分かれば問題ないかと思います。
- lesstia
- ベストアンサー率45% (44/96)
この問題のどの部分が分からないのかを詳しく提示してください。 Z80単体では音を出すことはできなかったと思ったので、何らか別の音を出すものを接続すると思うのですが、その仕様どおりにZ80を制御すれば音を出せるかと思います。
補足
0.5秒間隔にするところがわかりません。IO装置の制御でスピーカに接続するんですけど「8255A」を用いて、IOアドレスは23H:CWRを用いるんですけどお願いします。
補足
0.5秒ごとに鳴らす、止めるを繰り返したいんですけどお願いします。教えてください。