以下是我写的一个让蜂鸣器发出不同频率声音的程序,可是运行结果并不和我的想法相同,我查不出原因,希望大神指教!我的预想:从第一个频率运行到最后一个频率,再从头开始重复运行
运行结果:运行到最后一直重复最后一个频率的声音
#include <reg52.h>
#define uint unsigned int
sbit beep=P2^3;
uint t0,t1,num;
void init();
void main()
{
init();
while(1);
}
void init()
{
num=46080;
TMOD=0x11;
TH0=(65536-num)/256;
TL0=(65536-num)%256;
TH1=(65536-46080)/256;
TL1=(65536-46080)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
}
void f() interrupt 1
{
TH0=(65536-num)/256;
TL0=(65536-num)%256;
t0++;
if(t1<40)//输出频率为1Hz的方波
{
if(t0==10)
{
t0=0;
num=46080;
beep=~beep;
}
}
if(t1>=40&&t1<80)//输出频率为10Hz的方波
{
t0=0;
num=46080;
beep=~beep;
}
if(t1>=80&&t1<120)//输出频率为50Hz的方波
{
t0=0;
num=9216;
beep=~beep;
}
if(t1>=120&&t1<160)//输出频率为100Hz的方波
{
t0=0;
num=4608;
beep=~beep;
}
if(t1>=160&&t1<200)//输出频率为200Hz的方波
{
t0=0;
num=2304;
beep=~beep;
}
if(t1>=200&&t1<240)//输出频率为400Hz的方波
{
t0=0;
num=1152;
beep=~beep;
}
if(t1>=240&&t1<280)//输出频率为800Hz的方波
{
t0=0;
num=576;
beep=~beep;
}
if(t1>=280&&t1<320)//输出频率为1000Hz的方波
{
t0=0;
num=288;
beep=~beep;
}
}
void t() interrupt 3//定时器1中断用来产生2s时间定时
{
TH1=(65536-46080)/256;
TL1=(65536-46080)%256;
t1++;
if(t1==320)
{
t1=0;
num=46080;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>