AT89S51单片机的定时器计数器.ppt

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
AT89S51单片机的定时器计数器

* #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是否为1,为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脚 #define f1(a) (65536-a)/256 //定义装入定时器高8位时间常数 #define f2(a) (65536-a)%256 //定义装入定时器低8位时间常数 unsigned int i = 500; unsigned int j = 0; void main(void) { EA=1; //开总中断. ET1=1; //允许定时器T1中断 . TMOD=0x10; //TMOD=0001 000B,使用T1的方式1定时 TH1=f1(i); //给定时器T1高8位赋初值. TL1=f2(i); //给定时器T1低8位赋初值. TR1=1; //启动定时器T1 while(1) * * { //循环等待 i=460; while(j2000); j=0; i=360; while(j 2000); j=0; } } void T1(void) interrupt 3 using 0 //定时器T1中断函数 { TR1= 0; //关闭定时器T1 sound=~sound; //P1.7输出求反 TH1=f1(i); //定时器T1的高8位重新赋初值. TL1=f2(i); //定时器T1的低8位重新赋初值. * j++; TR1=1; //启动定时器T1 } 7.4.5 LED数码管秒表的制作 【例7-5】用2位数码管显示计时时间,最小计时单位为“百毫秒”,计时范围0.1~9.9s。当第1次按一下计时功能键时,秒表开始计时并显示;第2次按一下计时功能键时,停止计时,将计时的时间值送到数码管显示;如果计时到9.9s,将重新开始从0计时;第3次按一下计时功能键,秒表清0。再次按一下计时功能键,则重复上述计时过程。 本秒表应用定时器模式,计时范围0.1~9.9s。此外还涉及如何编写控制LED数码管显示的程序。 本例原理电路见图7-19。 * 图7-19 LED数码管显示的秒表原理电路及仿真 * 参考程序如下: #includereg51.h //包含51单片机寄存器定义的头文件 unsigned char code discode1[]={0xb

文档评论(0)

rovend + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档