第7章定时器计数器的工作原理和应用.pptVIP

第7章定时器计数器的工作原理和应用.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章定时器计数器的工作原理和应用

图7-14 由外部计数输入信号控制LED的闪烁 (3)设置IE寄存器 本例由于采用T1中断,因此需将IE寄存器的EA、ET1位置1。 (4)启动和停止定时器T1 将寄存器TCON中TR1=1,则启动T1计数;TR1=0,则停止T1计数。 参考程序如下: #include reg51.h void Delay(unsigned int i) //定义延时函数Delay( ),i是形 //式参数,不能赋初值 { unsigned int j; for(;i0;i--) //变量i由实际参数传入一个值 //因此i不能赋初值 for(j=0;j125;j++) {;} //空函数 } void main( ) //主函数 { TMOD=0x50; //设置定时器T1为方式1计数 TH1=0xff; //向TH1写入初值的高8位 TL1=0xfc; //向TL1写入初值的低8位 EA=1; //总中断允许 * * ET1=1; //定时器T1中断允许 TR1=1; //启动定时器T1 while(1) ; //无穷循环,等待计数中断 } void T1_int(void) interrupt 3 //T1中断函数 { for(;;) //无限循环 { P1=0xff; //8位LED全灭 Delay(500) ; //延时500ms P1=0; //8位LED全亮 Delay(500); //延时500ms } } * 7.4.3 控制P1.0产生周期为2ms的方波 【例7-3】假设系统时钟为12MHz,设计电路并编写程序实现从P1.0引脚上输出一个周期为2ms的方波,见图7-15。 要在P1.0上产生周期为2ms的方波,定时器应产生1ms的定时中断,定时时间到则在中断服务程序中对P1.0求反。使用定时器T0,方式1定时中断,GATE不起作用。 本例的原理电路见图7-16。其中在P1.0引脚接有虚拟示波器,用来观察产生的周期2ms的方波。 图7-15 定时器控制P1.0输出一个周期2ms方波 * 图7-16 定时器控制P1.0输出周期2ms的方波的原理电路 * 下面来计算T0初值X : 设T0的初值为X,有 (216?X )×1×10?6=1×10?3 即 65?536?X=1?000 得X=64 536,化为16进制数就是0xfc18。将高8位0xfc装入TH0,低8位0x18装入TL0。 参考程序如下: #include reg51.h //头文件reg51.h sbit P1_0=P1^0; //定义特殊功能寄存器P1的位变量P1_0 void main(void) //主程序 { TMOD=0x01; //设置T0为方式1 TR0=1; //接通T0 while(1) //无限循环 { * TH0=0xfc; //置T0高8位初值 TL0=0x18; //置T0低8位初值 do{}while(!TF0); //TF0为0原地循环,为1则T0溢出,往下执行 P1_0=!P1_0; // P1.0状态求反 TF0=0; //TF0标志清零 } } 仿真时,右键单击虚拟数字示波器,出现下拉菜单,点击“Digital oscilloscope”选项,就会在数字示波器上显示P1.0引脚输出周期为2ms方波,如图7-17所示。 * 图7-17 虚拟数字示波器显示的2ms的方波波形 7.4.4 利用T1控制发出1kHz的音频信号 【例7-4】利用T1的中断控制P1.7引脚输出频率为1kHz方波音频信号,驱动蜂鸣器发声。系统时钟为12MHz。方波音频信号周期1ms,因此T1的定时中断时间为0.5 ms,进入中断服务程序后,对P1.7求反。电路见图7-18。 先计算T1初值,系统时钟为12MHz,则机器周期为1μs。1kHz音频信号周期为1ms,要定时计数的脉冲数为a。则T1初值: TH1=(65?536??a)?/256; TL1=(65?536??a)?%256 * * 图7-18 控制蜂鸣器发出1kHz的音频信号 参考程序如下: #includereg51.h //包含头文件 sbit sound=P1^7; //将sound位定义为P1.7脚 #

文档评论(0)

jyf123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6153235235000003

1亿VIP精品文档

相关文档