由上位机发送1给单片机时,蜂鸣器以400ms频率发声 调了半天调不出问题
/*由上位机发送1给单片机时,蜂鸣器以400ms频率发声
,发2时以200ms频率发声,
发3时以100ms频率发声,
发4时关闲蜂鸣器
频率 11.0592M HZ
0011 0001 49(十) 31(16) 1
0011 0010 50 32 2
0011 0011 51 33 3
*/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint num;
uint temp;//用于记录num的变化
uchar a;
sbit buzzer=P2^3;
void main()
{
TMOD=0x21;//定时器T1选择工作方式2
TH1=0xfd;
TL1=0xfd;//定时器T1装初值
TR1=1;
REN=1;//SOCN中开串行接受
SM0=0;
SM1=1;//SCON中设定定时器工作方式为1
EA=1;
ES=1;//IE中开串行口中断
buzzer=0;
num=0;
temp=0;
TH0=(65536-45972)/256;
TL0=(65536-45872)%256;
ET0=1;
TR0=1;
while(1)
{
switch(a)
{
case '1':
temp++;
if(temp==4)
{
temp=0;
buzzer=~buzzer;
}
break;
case '2':
num++;
temp++;
if(temp==2)
{
temp=0;
buzzer=~buzzer;
}
break;
case '3':
num++;
temp++;
if(temp==1)
{
temp=0;
buzzer=~buzzer;
}
break;
default: break;
}
}
}
void ser() interrupt 4
{
RI=0;
a=SBUF;
}
void enter0() interrupt 1//50ms
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
}
[解决办法]
case '1'改成case 1。后面的同理。去掉''
[解决办法]
提一个
LZ先确定自己买到的是频率驱动的蜂鸣器
现在市场上大多数都是自带了振荡电路的蜂鸣器
直接给一个电压就响的
:)