/*1.由上位機發送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;
}