- ベストアンサー
アセンブリ言語でPIC16F84Aを使った音楽プログラミングの方法を教えてください
- アセンブリ言語でPIC16F84Aを使用して音楽を演奏するための回路を作成しています。具体的には、特定のメロディをスピーカから再生するプログラムを作りたいと考えていますが、音階の変更やディレイの追加など、詳細な説明が不足しています。PICプログラミングに詳しい方に、具体的な例を教えていただきたいです。
- アセンブリ言語を使用してPIC16F84Aで音楽を演奏する回路を作成しています。参考にしているページの中にある「追加実験2 「ドレミファソラシド」を演奏」というアセンブリプログラムを使用していますが、同じようなメロディを再生するだけでなく、独自のメロディを作りたいと考えています。音階の変更やディレイの追加など、具体的な手順やコード例を教えていただけると助かります。
- アセンブリ言語で音楽を演奏するための回路を作成しています。PIC16F84Aを使用し、スピーカから特定のメロディを再生するプログラムを作りたいと考えていますが、詳細な説明が不足しており、音階の変更やディレイの追加などがわかりません。アセンブリプログラミングに詳しい方に、具体的な例や手順を教えていただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
PIC16F84のアセンブラはしばらく使ってなかったので、細かいところは忘れてしまいました。 もしかして間違っていたらご容赦を。 とりあえず判ることは 1)メロディを変えるには ---------------------- doremi ADDWF PCL,f RETLW d'75' ;ド ┐ RETLW d'67' ;レ | RETLW d'59' ;ミ | RETLW d'56' ;ファ | RETLW d'50' ;ソ ├─ ←※このデータの並び方を変える RETLW d'44' ;ラ | RETLW d'40' ;シ | RETLW d'37' ;ド ┘ ---------------------- 2)一音毎の長さを変えるには ---------------------- intr BCF INTCON,T0IF ;割込みフラグクリア : : BSF timer,T500mS ;500mSフラグセット MOVLW d'100' ←※d'***'の数値を変える ---------------------- ……で良いと思います。 なお個々の音ごとに演奏時間を変えるのは、プログラムの大幅な改良が必要でしょう。 次善の策としては、基準音符を8分音符相当の長さに設定して、例えば4分音符なら「ドド」2分音符なら「ドドドド」のように基準音符の倍数でデータ指定してやる方法上がると思います。 なおサンプルプログラムでは1オクターブ8音分を出力すると繰り返しに戻ってしまいますが、これをもっと長く演奏させるにはどうしたら良いかは、ざっと見たところでは私には判りませんでした。 もっと詳しい方のご回答を待ちたいと思います。 なお言うまでもないことですが、クソの役にも立たない無意味な1行回答は平然と無視するのがよいでしょう。
その他の回答 (1)
工学系の質問ですな。スピーカは工学系の表記なのでよいとして,メロディーはメロディとは書きません。
お礼
回答ありがとうございました。
お礼
回答ありがとうございます。 わかりやすい説明、とても助かりました。一音毎の長さは設定できても、個々の音の長さを変えるのは難しそうですね。それができれば幅が広がると思って色々と考えてたのですが・・ もう少し自分で考えてみて、なにもできなければ締め切らせていただきます。 ありがとうございました。