您的当前位置:首页两个定时器蜂鸣器,一个控制频率,另一个控制时间

两个定时器蜂鸣器,一个控制频率,另一个控制时间

2023-12-14 来源:爱问旅游网


//同时利用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同一个频率持续的时间,间隔300ms依次输出1、10、

//50、100、200、400、800HZ的方波

#include //52单片机头文件

#include //包含有左右循环移位子函数的库

#define uint unsigned int //宏定义

#define uchar unsigned char

sbit Waveout=P1^0;

uchar tt;

uint fre,flag;

uint Freq[]={1,10,50,100,200,400,800,1000}

void main() //主函数

{

fre=50000;

TMOD=0x11;//设置定时器0,定时器1为工作方式1

TH0=(65536-fre)/256;

TL0=(65536-fre)%256;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

EA=1;//开总中断

ET0=1;//开定时器0中断

ET1=1;

TR1=1;

TR0=1;//启动定时器0

while(1)

//等待中断产生

{

if(tt=a)

{

tt=0;

Waveout=~Waveout;

}

}

}

void timer0() interrupt 1 //定时器0中断

{

TR0=0; //进中断后先把定时器0中断关闭,防止内部程序过多而造成中断丢失

TH0=(65536-fre)/256;

TL0=(65536-fre)%256;

tt++;

}

void timer1() interrupt 3 //定时器1中断用来产生300微秒时间定时

{

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

flag++;

if(flag==6)

{

flag=0;

freq=Freq[i];

}

}

因篇幅问题不能全部显示,请点此查看更多更全内容