在论坛的教学那里学习到了蜂鸣器那里,程序有点不太理解。第一个就是主函数里的for循环那里, while (1) { OpenBuzz(4000); //以4KHz的频率启动蜂鸣器 for (i=0; i<40000; i++); StopBuzz(); for (i=0; i<40000; i++); OpenBuzz(1000); //以1KHz的频率启动蜂鸣器 for (i=0; i<40000; i++); StopBuzz(); for (i=0; i<40000; i++); }i为啥小于40000,还有他这么写,最后一个for循环的执行语句是哪一个啊?还有就是OpenBuzz函数中 void OpenBuzz(unsigned int frequ) { unsigned int reload; reload = 65536 - (11059200/12) / (frequ*2); //由给定频率值计算定时器重载值 T0LoadH = reload >> 8; //16位重载值分解为高低两个字节 T0LoadL = reload; TH0 = 0xFF; //设定一个接近溢出的初值,以使定时器马上投入工作 TL0 = 0xFE; ET0 = 1; //使能T0中断 TR0 = 1; //启动T0 }算reload为什么是(11059200/12)/(frequ*2)主要是这个除(frequ*2)这个怎么来的?完整的程序图片上也有。
|