题目是用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同一频率持续时间,间隔300ms依次输出1,10,50,100,200,400,800,1000hz的方波。
#include<reg52.h>
sbit beep=P2^3;
unsigned int aa,bb,cc;
float sum[]={1,10,50,100,200,400,800,1000};
void timer1() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
aa++;
if(aa==6)
{
aa=0;
bb++;
if(bb==8)
bb=0;
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
cc++;
if(cc==10/sum[bb])
{
cc=0;
beep=~beep;
}
}
void main()
{
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
beep=0;
while(1);
}
这是我的程序,但是调试发现声音一直都是一个调的,似乎没啥变化,我才大一,啥都不懂,连方波是啥都不知道
,不知道我的这个程序在哪里出错了,求大神指点!!!!!
#include<reg52.h>
sbit beep=P2^3;
unsigned int aa,bb,cc;
float sum[]={1,10,50,100,200,400,800,1000};
void timer1() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
aa++;
if(aa==6)
{
aa=0;
bb++;
if(bb==8)
bb=0;
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
cc++;
if(cc==10/sum[bb])
{
cc=0;
beep=~beep;
}
}
void main()
{
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
beep=0;
while(1);
}
这是我的程序,但是调试发现声音一直都是一个调的,似乎没啥变化,我才大一,啥都不懂,连方波是啥都不知道
