STEP16_Sound
(1)STEP16_Sound
STEP16_Soundソースプログラムを以下に示します。
/*****************************
STEP16_Sound.c
*****************************/
#define _LEGACY_HEADERS
// インクルードファイルの読み込み
#include <pic.h>
__CONFIG ( UNPROTECT & LVPDIS & BOREN & MCLREN & PWRTEN & WDTDIS & INTIO );
// プロトタイプ宣言
void WaitTime (int cnt);
// メイン関数
void main (void)
{
// 1,2,17,18端子を入出力端子に設定
CMCON = 0x07;
// 電圧レベルの初期設定
PORTA = 0xFF;
PORTB = 0xFF;
// 入出力設定
TRISA = 0x20;
TRISB = 0x00;
// 永久ループ
while(1)
{
// スピーカに入力する電圧レベルを反転
RB0 = ~RB0;
// 待ち時間関数の呼び出し(約1m秒)
WaitTime(50);
}
}
// 待ち時間関数の呼び出し
void WaitTime(int cnt)
{
while(cnt > 0)
cnt--;
}
(2)STEP16_Soundソースプログラムの実行
*RB0端子に直流成分除去用のコンデンサ0.1μFを直列に接続してスピーカに接続します。
*音量は小さいですが、スピーカがなります。
*音程とディレイ設定値の関係は以下の表のようになるようです。
音程 | ド | レ | ミ | ファ | ソ | ラ | シ | ド |
周波数(Hz) | 261.6 | 293.6 | 329.6 | 349.2 | 392 | 440 | 493.8 | 523.3 |
ディレイ設定値 | 96 | 85 | 76 | 72 | 64 | 57 | 51 | 48 |