- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
同时用两个定时器控制蜂鸣器发声
同时用两个定时器控制蜂鸣器发声,定时器0 控制频率,定时器1 控制同个频率持续的时间,
间隔300ms 依次输出1,10,50,100,200,400,800,1k (hz)的方波。此题出题略有错误,应
去掉1Hz,原因见注释
***************方法1 (747code )***************
#include reg52.h
#define uint unsigned int
#define uchar unsigned char
sbit beep=P3^4;
uint yanshi[]={50000,10000,5000,2500,1250,625,500}; //暂时除去1Hz,原因是1Hz 的半个周期
是500mS,300mS 怎么能表现出来呢?
uchar t,bp,pd; //t 为50mS 时间脉冲信号,bp 为变频信号,pd 为所选频段
void timer0() interrupt 1 // 定时器0 控制频率
{
TH0=(65536-yanshi[pd])/256;
TL0=(65536-yanshi[pd])%256;
bp++; // bp 为变频信号
}
void timer1() interrupt 3 // 定时器1 控制同个频率持续的时间,50mS 脉冲
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
t++;
}
void init()
{
EA=1; //开启总中断
ET0=1;ET1=1;//开启外部定时器中断允许位
TMOD=0x11; // 同时定义两个定时器的工作模式
TH0=(65536-yanshi[bp])/256;
TL0=(65536-yanshi[bp])%256;//给定时器0 赋初值
TH1=(65536-50000)/256;
TL1=(65536-50000)%256; //给定时器1 赋初值
TR0=1;TR1=1;//启动两个定时器;可以测试一次给字节赋值
}
void main()
{
bp=0;pd=0;beep=1;t=0;
init();
while(1)
{
if(bp0) //测试变频信号发生
{
TR0=0; //关闭定时器0 ,防止在执行定时器1 时被中断,会引起混乱
bp=0; //将变频信号bp 归零,等待下一个信号1
beep=~beep; //变频信号发生后beep 取反
if(t5) //测试定时器0 脉冲是否达到6 个,即300mS
{
pd++; //如果达到300mS,频段改变
t=0; //将定时器脉冲数归零
}
if(pd6) //频段pd 超出6 个即第7 个时,将频段归零
{
pd=0;
}
TR0=1; //开启定时器0,让定时器0 继续工作;定时器0 在每执行一次以
上程序中大约有4 条指令时间的增加,大约12 ×4=48 微秒
}
}
}
*************方法2 (748code )*****************
#include reg52.h
#define uint unsigned int
#define uchar unsigned char
sbit beep=P3^4;
uint yanshi[]={50000,10000,5000,2500,1250,625,500}; //暂时除去1Hz,原因是1Hz 的半个周期
是500mS,300mS 怎么能表现出来呢
您可能关注的文档
最近下载
- 2025年一建一级建造师项目管理考点重点知识总结高分笔记.pdf VIP
- 部编版语文6年级上册学历案(全册).docx VIP
- 中国文化概况(修订版)Chapter12WorldHeritageSites.pptx VIP
- 输尿管肿瘤护理课件最新完整版本.pptx VIP
- 华为LTC流程IPD流程ITR流程三大核心流程变革一篇文章就全明白啦V2.0!.pdf VIP
- 高中英语作文高级词汇总结.docx VIP
- 中国文化概况(修订版)Chapter10.pptx VIP
- 中国文化概况(修订版)Chapter_11_new.ppt VIP
- 专升本培训协议合同范本.docx VIP
- 高中英语高频词汇.doc VIP
文档评论(0)