具体不知道蜂鸣器响声如何不正常。
但程序上时序有点不恰当。
temp = _cror_(temp,1); //右移1位
teep = 0; //蜂鸣器响
P0 = temp;
Delay(260);
teep = 1; //蜂鸣器停
蜂鸣器停再过2~3个机器周期后 响,2~3个机器周期顶多就1ms,
人耳能区分开来?这个确定是正常??
建议在 teep = 1; //蜂鸣器停
后面加一点点延迟,比如Delay(60);
//延时程序有些问题,调整一下顺序
Delay(uint z) //延时程序
{
uint i,j;
for(j=z;j>0;j--)
for(i=100;i>0;i--);
}
//另外,蜂鸣器有两种,一种是随频率而发声变化(speaker),一种是固定声音的,你选后一种就可以了。
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit teep = P1^2; // P1.2口控制蜂鸣器
Delay(uint);
main ()
{
uchar temp, a, b;
temp = 0xfe;
P0 = temp;
while(1) {
for(a = 0; a < 7; a++) {
temp = _crol_(temp, 1); //左移1位
P0 = temp;
Delay(260);
}
for(b = 0; b < 7; b++) {
temp = _cror_(temp, 1); //右移1位
P0 = temp;
Delay(260);
}
}
}
Delay(uint z) //含有发音功能的延时程序
{
uint i, j;
for(j = z; j > 0; j--) {
teep = 0; for(i = 100; i > 0; i--);
teep = 1; for(i = 100; i > 0; i--);
}
}
试试看。
这蜂鸣器的响声本来看的就是开关之间的时间,间隔时间不动,响声也不同啊,这不是很正常嘛