上位机发1给单片机时,蜂鸣器以400ms频率发声,发2时以200ms频率,发3时以100ms频率,发4时关闭蜂鸣器#include<reg52.h>
#define uchar unsigned char
sbit beep=P1^5;
sbit led=P2^0;
uchar a;
uchar t;
uchar i,j;
void init()//初始化
{
TMOD=0x21;
SCON=0x50;
TH1=0xf3;
TL1=TH1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
PCON=0x00;
EA=1;
ES=1;
ET0=1;
TR0=1;
TR1=1;
t=0;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
if(t==2)
{
t=0;
i++;//每100ms,i加1
if(i==j)
{
i=0;
beep=~beep;
led=~led;
}
}
}
void uart() interrupt 4
{
if(RI)
{
RI=0;
a=SBUF;
}
else
TI=0;
}
void main()
{
init();
while(1)
{
switch(a)
{
case 0x01:j=4;break;
case 0x02:j=2;break;
case 0x03:j=1;break;
case 0x04:TR0=0;led=1;break;
}
}
}
|