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

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

2021-01-13 来源:乌哈旅游


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

1、\"1 0、\" // 50、\" 100、\" 200、\"

400、\"800HZ的方波 #include52.\"h>//52单片机头文件

#include //包含有左右循环移位子函数的库 #define uint unsigned int//宏定义 #define uchar unsigned char sbit Waveout=P1^0; uchar tt; uint fre,flag;

1 / 3

uint Freq[]={1,10,50,100,200,400,800,1000} void main()//主函数{fre=500;

TMOD=0x11;//设置定时器0,定时器1为工作方式1 TH0=(65536-fre)/256; TL0=(65536-fre)%256; TH1=(65536-500)/256; TL1=(65536-500)%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;

2 / 3

tt++;}void timer1() interrupt 3//定时器1中断用来产生300微秒时间定时{TH1=(65536-500)/256;

TL1=(65536-500)%256; flag++;

if(flag==6){flag=0; freq=Freq[i];}}

3 / 3

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