//由上位机发送1给单片机时,蜂鸣器以400ms频率发声,发2时以200ms频率发声,发3时以100ms频率发声,发4时关闲蜂鸣器。
下载后,用串口调试助手发送01/02/03时,蜂蜜器一直响。帮忙看下那里错了,思路还是程序!!!
- #include <reg52.h>
- #define uchar unsigned char
- sbit beep=P2^3;
- uchar flag,a,flag_1,flag_2,flag_3,t1,t2,t3;
- void main()
- {
- TMOD=0x21;
- TH1=0xfd;
- TL1=0xfd;
- TR1=1;
- TH0=0x4c;
- TL0=0x00;
- SM0=0;
- SM1=1;
- REN=1;
- EA=1;
- ET0=1;
- ES=1;
- while(1)
- {
- if(flag==1)
- {
- flag=0;
- if(a==1)
- {
- TR0=1;
- if(flag_1==1)
- {
- flag_1=0;
- beep=~beep;
- }
- }
- if(a==2)
- {
- TR0=1;
- if(flag_2==1)
- {
- flag_2=0;
- beep=~beep;
- }
- }
- if(a==3)
- {
- TR0=1;
- if(flag_3==1)
- {
- flag_3=0;
- beep=~beep;
- }
- }
- if(a==4)
- {
- beep=1;
- }
- }
- }
- }
- void timer0() interrupt 1
- {
- TH0=0x4c;
- TL0=0x00;
- t1++;
- t2++;
- t3++;
- if(t3==2)
- {
- t3=0;
- flag_3=1;
- }
- if(t2==4)
- {
- t2=0;
- flag_2=1;
- }
- if(t1==8)
- {
- t1=0;
- flag_1=1;
- }
- }
- void uart() interrupt 4
- {
- RI=0;
- a=SBUF;
- flag=1;
- }
复制代码
|