//52单片机头文件#inc">

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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

1、"1

0、"

//

50、"

100、"

200、"

400、"800HZ的方波

#include

52."h>//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=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;

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

TL1=(65536-500)%256;

flag++;

if(flag==6){flag=0;

freq=Freq[i];}}

相关文档
最新文档