免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 回復 發帖

揚聲器 頻率音率

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;
   }
  }
}
返回列表