在論壇的教學(xué)那里學(xué)習(xí)到了蜂鳴器那里,程序有點(diǎn)不太理解。第一個(gè)就是主函數(shù)里的for循環(huán)那里, while (1) { OpenBuzz(4000); //以4KHz的頻率啟動(dòng)蜂鳴器 for (i=0; i<40000; i++); StopBuzz(); for (i=0; i<40000; i++); OpenBuzz(1000); //以1KHz的頻率啟動(dòng)蜂鳴器 for (i=0; i<40000; i++); StopBuzz(); for (i=0; i<40000; i++); }i為啥小于40000,還有他這么寫,最后一個(gè)for循環(huán)的執(zhí)行語句是哪一個(gè)?還有就是OpenBuzz函數(shù)中 void OpenBuzz(unsigned int frequ) { unsigned int reload; reload = 65536 - (11059200/12) / (frequ*2); //由給定頻率值計(jì)算定時(shí)器重載值 T0LoadH = reload >> 8; //16位重載值分解為高低兩個(gè)字節(jié) T0LoadL = reload; TH0 = 0xFF; //設(shè)定一個(gè)接近溢出的初值,以使定時(shí)器馬上投入工作 TL0 = 0xFE; ET0 = 1; //使能T0中斷 TR0 = 1; //啟動(dòng)T0 }算reload為什么是(11059200/12)/(frequ*2)主要是這個(gè)除(frequ*2)這個(gè)怎么來的?完整的程序圖片上也有。
|