//1.由上位机发送1给单片机时,蜂鸣器以400ms频率发声,发2时以200ms频率发声,发3时以100ms频率发声,发4时关闲蜂鸣器。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar recv_num,flag,t0,temp;
sbit beep=P2^3;
void init();
void main()
{
init();
beep=0;
while(1)
{
if(flag==1)
{
flag=0;
ES=0;
switch (recv_num)
{
case 1:temp=8;break;
case 2:temp=4;break;
case 3:temp=2;break;
case 4:TR0=0;beep=0;break;
}
ES=1;
}
}
}
void serial() interrupt 4
{
RI=0;
recv_num=SBUF;
flag=1;
}
void time0() interrupt 1
{
if(t0==temp)
{
t0=0;
beep=~beep;
}
t0++;
}
void init()
{
TMOD=0X21;
TH1=0XFD;
TL1=0XFD;
EA=1;
TR1=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
TR0=1;
SM0=0;
SM1=1;
ES=1;
REN=1;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
你需要改一下中断优先级。或者进入T0中断后短暂延时一下跳出。
一周热门 更多>