串口通讯控制蜂鸣器的响灭
时间:10-02
整理:3721RD
点击:
一个小小的错误纠结了好久啊,思路是对的,就是电脑发送的是ASSIC码,我死在了这里,现在弄好了,希望大家不要跟我一样纠结啊
//1由上位机发送1给单片机时,蜂鸣器以400ms频率发声,发2时以200ms频率发声,发3时以100ms频率发声,发4时关闲蜂鸣器
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar aa,a;
sbit beep=P2^3;
sbit d1=P1^0;
void init();
void delay(uint);
void main()
{
init();
while(1)
{
if(a==1)
{
aa=SBUF;
a=0;
ES=0;
switch(aa)
{
case '1': beep=0;delay(200);beep=1;break; //注意,电脑发送的数据是ASIIC码,所以这里要加单撇号,‘1’,
case '2': beep=0; delay(100);beep=1;break; //不然是没反应的,自己可以试验一下。
case '3': beep=0; delay(50);beep=1; break;
case '4':beep=1;break;
default:break;
}
ES=1;
}
}
}
void init()
{
TMOD=0X20;
SCON=0X50;
TH1=0XFD;
TL1=0XFD;
TR1=1;
EA=1;
ES=1;
}
void ser() interrupt 4
{
aa=SBUF;
RI=0;
a=1;
}
void delay (uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//1由上位机发送1给单片机时,蜂鸣器以400ms频率发声,发2时以200ms频率发声,发3时以100ms频率发声,发4时关闲蜂鸣器
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar aa,a;
sbit beep=P2^3;
sbit d1=P1^0;
void init();
void delay(uint);
void main()
{
init();
while(1)
{
if(a==1)
{
aa=SBUF;
a=0;
ES=0;
switch(aa)
{
case '1': beep=0;delay(200);beep=1;break; //注意,电脑发送的数据是ASIIC码,所以这里要加单撇号,‘1’,
case '2': beep=0; delay(100);beep=1;break; //不然是没反应的,自己可以试验一下。
case '3': beep=0; delay(50);beep=1; break;
case '4':beep=1;break;
default:break;
}
ES=1;
}
}
}
void init()
{
TMOD=0X20;
SCON=0X50;
TH1=0XFD;
TL1=0XFD;
TR1=1;
EA=1;
ES=1;
}
void ser() interrupt 4
{
aa=SBUF;
RI=0;
a=1;
}
void delay (uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}