Counter16 頻率為12M =0.0833uS
看書本範例 LAB10
void main()
{
//以下兩行的目的是希望程式開始時是安靜的, 週期隨便設, 但比較值=0
Counter16_1_WritePeriod(999);
Counter16_1_WriteCompareValue(0);
//啟動Counter16_1
Counter16_1_Start();
while(1)
{
switch(PRT0DR&0xff) //判定Port_0有哪一腳為1 (後詳)
{
case 1: //按 SW0
Counter16_1_WritePeriod(45800); //發 Do 的聲音
Counter16_1_WriteCompareValue(22900);
break;
case 2: //按 SW1
Counter16_1_WritePeriod(40816); //發 Re 的聲音
Counter16_1_WriteCompareValue(20408);
break;
case 4: //按 SW2
Counter16_1_WritePeriod(36364); //發 Mi 的聲音
Counter16_1_WriteCompareValue(18182);
break;
case 8: //按 SW3
Counter16_1_WritePeriod(34384); //發 Fa 的聲音
Counter16_1_WriteCompareValue(17192);
break;
case 16: //按 SW4
Counter16_1_WritePeriod(30612); //發 So 的聲音
Counter16_1_WriteCompareValue(15306);
break;
case 32: //按 SW5
Counter16_1_WritePeriod(27272); //發 La 的聲音
Counter16_1_WriteCompareValue(13636);
break;
case 64: //按 SW6
Counter16_1_WritePeriod(24292); //發 Si 的聲音
Counter16_1_WriteCompareValue(12146);
break;
case 128: //按 SW7
Counter16_1_WritePeriod(22900); //發高音 Do 的聲音
Counter16_1_WriteCompareValue(11450);
break;
}
}
} |