由上位机发送1给单片机时,蜂鸣器以400ms频率发声,发2时以200ms频率发声,发3时以100ms频率发声,发4时关闲蜂鸣器 #include<reg51.h> #define uint unsigned int #define uchar unsigned char sbit beep=P3^7; uint a,flag0,flag1; void init(); void beep4(); void beep2(); void beep1(); void delay(uchar z); void main() { init(); while(1) { if(flag0==1) { flag0=0; if(a==1) { do { beep4(); } while(flag0==0); } if(a==2) { do { beep2(); } while(flag0==0); } if(a==3) { do { beep1(); } while(flag0==0); } if(a==4) beep=1; } }
} void init() { TMOD=0x20; TH1=0xfd; TH0=0xfd; TR1=1; EA=1; ES=1; SCON=0x50; } void ser() interrupt 4 { if(RI==1) { RI=0; a=SBUF; SBUF=a; P1=a; flag0=1; } if(TI==1) { TI=0; } } void delay(uchar z) { uchar x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void beep4() { beep=0; delay(400); beep=1; delay(400); } void beep2() { beep=0; delay(200); beep=1; delay(200); } void beep1() { beep=0; delay(100); beep=1; delay(100); }
p37控制蜂鸣器! 写完调试发现:当上位机发1,2,3时可以按要求蜂鸣器变化频率,发4也可以关闭蜂鸣器,可是当发别的任意数的时候,蜂鸣器都被关闭啦,再发1,2,3也可以启动蜂鸣器的,好像就是只要发1.2.3意外的数就可以关掉蜂鸣器!! 请各位老大指教!! |