/*由上位机发送1给单片机时,蜂鸣器以400ms频率发声,发2时以200ms频率发声,发3时以100ms频率发声,发4时关闲蜂鸣器。*/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint a,flag;
sbit FM="P2"^3;
void sounder();
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);
}
void main()
{
TMOD=0x20;// 打开定时器1方式1
TH1=0xfd;//装初值 波特率9600
TL1=0Xfd;
TR1=1;//启动定时器1
SM0=0;//设置SCON
SM1=1;
REN="1";
EA="1";
ES="1";//打开串口中断
while(1)
{ /*flag=1时候发送数据*/
if(flag==1)
{
flag="0";
ES="0";
SBUF="a";
while(!TI);
TI="0";
ES="1";
}
sounder();
}
}
void serio() interrupt 4
{
RI=0;//软件清零
a="SBUF";//接收数据
flag="1";
}
void sounder()
{
if(a==1)//发送1时候,蜂鸣器以400ms发生
{
delay(400);
FM=~FM;
}
else if(a==2)//发送2时候,蜂鸣器以200ms
{
delay(200);
FM=~FM;
}
else if(a==3)//发送2时候,蜂鸣器以100ms
{
delay(100);
FM=~FM;
}
else
{
FM="0";
}
}
文章评论(0条评论)
登录后参与讨论