51单片机同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔2s依次输出1,10,50,100,200,400,800,1kHZ。代码如下:
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar b,a,c;
sbit beep=P2^3;
uint temp[]={20000,2000,400,200,50,25,20};
void main()
{
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-50)/256;
TL1=(65536-50)%256;
EA=1;
ET0=1;
TR0=1;
ET1=1;
TR1=1;
while(1)
{
if(b==temp[c])
beep=~beep;
if(a==40)
c++;
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
void timer1() interrupt 3
{
TH1=(65536-50)/256;
TL1=(65536-50)%256;
b++;
}
实际操作时候蜂鸣器有响,但是频率不改变。求高手大大们帮我看看哪里出错了。