#include<reg52.h>
sbit BEEP=P3^6; //定义蜂鸣器控制端P36
sbit L00=P0^0;//定义 L0.0 LED灯
void Delayst(unsigned int i) //延时程序,i是形式参数,i为1时 延时约250US
{
unsigned int j;
for(;i>0;i--) //变量i由实际参数传入一个值,因此i不能赋初值
for(j=0;j<31;j++) // 此数值为125时 大约延时1MS 由此计算出为1时 延时大约8US 31X8=248US≈250US
{;}
}
void Delay(unsigned int i) //延时程序,i是形式参数,i为1时 延时约1MS
{
unsigned int j;
for(;i>0;i--) //变量i由实际参数传入一个值,因此i不能赋初值
for(j=0;j<125;j++)
{;}
}
void main() //主函数
{
unsigned int j;
while(1) //无限循环 一直执行以下程序
{
L00=0; //点亮L00 LED灯
for(j=1000;j>0;j--) //蜂鸣器响大约500MS
{
BEEP = ~BEEP;
Delayst(2); //延时500US 发出大约1KHZ频率的响声
}
L00=1; //熄灭L00 LED灯
BEEP=1; //蜂鸣器不响
Delay(500); //将实际参数500传递给形式参数i,延时500ms 也就是0.5S
}
}
好像明白了,是不是“非”得意思,不断的改变无源蜂鸣器的值,让它想起来