【ステッピングモータでドレミファソラシドを鳴らすプログラム】

#define atdo 137602 //ド周波数

#define atre 122590 //レ周波数

#define atmi 109215 //ミ周波数

#define atfa 103086 //ファ周波数

#define atso 91839 //ソ周波数

#define atra 81819 //ラ周波数

#define atsi 72892 //シ周波数

#define btdo 68801 //高いド周波数

/マクロ**/

/グローバル変数**/

/メイン関数**/

void tstep(int ontei){
LPC_TMR32B0->TCR=0; //タイマ32のカウント停止
LPC_TMR32B0->TCR |=(1<<1); //タイマ32カウントリセット LPC_TMR32B0->MR0=ontei; //周期を入力
LPC_TMR32B0->TCR=1; //タイマ32のカウント開始
}

int main (void)
{
const unsigned short MainCycle = 50; //50Hzに保つ
Init(MainCycle);

LPC_IOCON->PIO2_4=0x0d0;//PIO2_4レジスタをIOポートとして使うための設定。2進数で00011010000を代入、
//3,4ビット目を10にしてプルアップ抵抗を使うモードに、10ビット目を0にして通常の入出力IOポートとして設定

LPC_GPIO2->DIR |= (1<<4);   //GPIO2DIRレジスタの4ビット目だけを1にして、PIO2_4を出力IOポートに設定

LPC_TMR32B0->PWMC &=~(1<<0);    //EM0により制御 (PIO1_6)
LPC_TMR32B0->EMR |=(3<<4);      //MR0をトグル出力に設定
LPC_TMR32B0->MCR |=(1<<1);  //MR0によるTCリセット
LPC_TMR32B0->MCR &=~(1<<10);    //MR3によるTCリセット解除 これをしないとPWMが出ない

tstep(0);       //ステッピングモータ停止

while(getSW()==0){} //ボタンが押されるまで待つ
LED(1);         //緑LED点灯
Wait(1000);

tstep(atdo);        //ドを鳴らす
Wait(1000);
tstep(atre);        //レ
Wait(1000);
tstep(atmi);        //ミ
Wait(1000);
tstep(atfa);        //ファ
Wait(1000);
tstep(atso);        //ソ
Wait(1000);
tstep(atra);        //ラ
Wait(1000);
tstep(atsi);        //シ
Wait(1000);
tstep(btdo);        //高いドを鳴らす
Wait(1000);

tstep(0);       //ステッピングモータ停止

}