课件第8章-定时器.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《课件第8章-定时器.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课件 定时器
- 资源描述:
-
1、第八章单片机的定时器n知识目标:掌握单片机定时器的结构与特点,掌握其控制寄存器及工作方式的设定方法。n技能目标:能正确设定定时器的控制寄存器,能正确计算设定定时器的初值,会编写定时器控制程序,能解决定时相关问题。n素质目标:不断深化对单片机兴趣,养成能克服学习困难的习惯。单片机的定时器要求:掌握定时器的控制机制;掌握定时器的工作方式1、2;能编制控制定时器的程序项目二任务4 定时器中断控制的跑马灯n要求:采用定时中断方式,实现图8.1跑马灯控制功能。要求跑马灯的闪烁速率为每秒1次。n任务分析:用软件延时的方法虽然简单,但效率不高。本任务就是要用更高效的方法解决延时问题。n前面已经谈到,用软件延
2、时的办法虽然方法简单,但单片机的效率低下。能否在单片机CPU工作的同时进行定时呢?n回答是肯定的,方法是使用单片机内部的定时器。将定时器与中断结合起来,可以实现多个任务同时运行。n如,前面我们设计了跑马灯,又设计了交图通灯,那么能否让单片机控制跑马灯及交通灯在同一块电路板上同时运行?n完全可以,方法时用定时器将时间分片。只要时间片足够短,事件1、事件2、事件3都可以看作是同时在进行;单片机好像是同时在处理3件事。关于交通灯项目的再讨论n延时程序占用大量时间,空转,效率不高,如何提高效率?n延时,即定时问题能否交给专门的装置去管?n定时器即专门处理时间问题;n如何有多个程序要求“同时”运行怎么办
3、?为什么要中断?要跑马灯与交通灯同时运行,怎么办?时间分片可以解决这一问题A时间段,CPU做事件1B时间段,CPU做事件2C时间段,CPU做事件3A时间段,CPU做事件1B时间段,CPU做事件2C时间段,CPU做事件3n只要时间片足够短,事件1、事件2、事件3都可以看作是同时在进行;单片机好像是同时在处理3件事。需要哪些装置才可实现上述功能?n定时器,确定时间片的时间;n中断机制,时间一到能转到执行另一件事情,并记下正处理事件的暂停位置。思考:古代沙斗计时需要哪些东西,如何控制?事件1事件2事件3事件1事件2事件3事件1事件2定时器n定时器怎样实现呢?我们看看古代沙斗计时是怎样实现的。需要哪些
4、机构?n沙子:计时的基本单位;n接沙子的容器:能确定定时时间(沙子多少及是否溢出);n开关插销:控制开启定时器及结束定时;n单片机的定时器的结构与此是类似的,只是采用电子器件实现这些功能。n最左边的选择开关用来选择计数脉冲(相当于沙子)的来源,打到上面时,选择的是内部一机器周期计数一次,打到下面时,选择的是外部脉冲,外部脉冲的输入引脚是T0(P3.4)、T1(P3.5)。n着的开关控制定时器的启动与停止(相当于开关插销)。定时器的核心其实是能自动加一的计数器(其作用类似于装沙子的容器),每来一个脉冲,它就加一,这样计数器记录的脉冲个数乘以脉冲的周期即为定时的时间。计数器计到最大值后会产生溢出(
5、正如沙子装满容器后会溢出一样),它将置位中断标志TF产生中断请求。定时器的控制寄存器n以上的这些控制都是通过特殊功能寄存器来实现的。一、工作方式寄存器一、工作方式寄存器TMOD 工作方式寄存器工作方式寄存器TMOD用于设置定时用于设置定时/计数器计数器的工作方式,低四位用于的工作方式,低四位用于T0,高四位用于,高四位用于T1。其。其格式如下:格式如下:n字节地址:89H,不可以位寻址。nGATE:门控位。GATE0时,只要用软件使TCON中的TR0或TR1为1,就可以启动n定时/计数器工作;GATA1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。
6、即此时定时器的启动条件,加上了或引脚为高电平这一条件。n :定时/计数模式选择位。n 0为定时模式;=1为计数模式。nM1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。TC/控制寄存器TCONnTCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控制定时/计数器的启动和中断申请。nTF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。nTR1(TCON.
7、6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。nTF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。nTR0(TCON.4):T0运行控制位,其功能与TR1类同。TH、TLnTH、TL是计数器的高位和低位,包括TH1、TL1(对应定时器)TH0、TL0(对应定时器)。定时器的工作方式定时器的工作方式 n工作方式0n13位的定时/计数器(THi7-0+TLi4-0)n由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的T
8、F0标志,向CPU发出中断请求。方式1n方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器。TF1TR1TF0TR0GATEC/TM1M0GATEC/TM1M01&110T0引脚INT0引脚10机器周期TH0TL08位8位溢出TCONTMODD0D7D7D0申请中断图8.9 定时器工作方式0、1示意图方式2n方式2为自动重装初值的8位计数方式。n可自动重装载计数初值(TLi溢出后THi中数值可自动装入TLi适合于作串口波特率发生器(定时精度较高)TF1TR1TF0TR0GATEC/TM1M0GATEC/TM1M01&110T0引 脚INT0引 脚10机 器
9、周 期TH0TL08位溢 出TCONTMODD0D7D7D0申 请中 断图 8.10 定时器工作方式2示意图方式3n方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。n工作方式3将T0分成为两个独立的8位计数器TL0和TH0。TH0+TF1+TR1组成的8位定时器,TL0+TF0+TR0组成的8位定时/计数器,T1组成的无中断功能的定时器。n特点:方式3下T0可有2个具有中断功能的8位定时器。在定时器T0用作方式3时,T1仍可设置为方式02。这种方式主要用于串口通信。振 荡 器12T F0T L0(8位)&1中 断ST 0脚G A T E0IN T1AT R 0
10、C/=0C/=1TTT F1T H 0(8位)中 断T R 1振 荡 器12ST1脚C/=0C/=1TTT L1T H 1至 串 行 口图 8.11 定时器工作方式3示意图定时器计数初值的确定n定时器只有溢出才会产生中断标志,表示时间到了,正如沙子斗计时时,只有沙子溢出才表示时间到了一样。用沙子计时,所要计的时间是任意时,要预先填入一定的沙子(是容器体积的补数),同样,计数器也要预装初值,初值是所要计数值的补数。n四种方式初值可按如下方法计算:nX=M 计数值n对于不同的工作方式,计数器位数不同,故最大计数值M也不同:n 方式0:M=213=8192n 方式1:M=216=65536n 方式2
11、:M=28=256n 方式3:定时器0分为2个8位计数器,每个M均为256。n计算出来的结果X转换为16进制数后分别写入TL0(TL1)、TH0(TH1)。n注意:方式0时初始值写入时,对于TL不用的高3位应填入0!定时器应用举例n项目二任务4解答 定时器中断控制的跑马灯XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.
12、4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115U180C51R2180RR3180RR4180RR5180RR6180RR7180RR8180RR9180RD1LED-GREEND2LED-GREEND3LED-GREEND4LED-GREEND5LED-GREEND6LED-GREEND7LED-GREEND8LED-GREEN图 8.12 跑马灯电路
13、图6n分析:图 8.12 跑马灯电路图6n利用定时器直接进行1s延时是无法实现的,但可以利用硬件/软件联合法(利用定时中断进行中断次数统计),从而增加延时长度。n在12M晶振定时方式1时,1s延时可以视为20次中断,每次50ms的累积延时。n此时的计数初值为:a=-50000n#define uchar unsigned char/定义一下方便后面使用n#include /包括一个51标准内核的头文件nbit ldelay=0;/长定时溢出标记nuchar t=20;/定时溢出次数n/定时器0中断函数,中断号为1.nntimer0()interrupt 1 nt+;nif(t=20)n t=0
14、;n ldelay=1;/每次溢出置一个标记,以便主程序处理nnTH0=0 x3c;/重置T0初值0 x3cb0 nTL0=0 xb0;nnvoid main(void)nuchar code ledp8=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;nuchar ledi=0;/用来指示显示顺序nTMOD=0 x01;/定义T0定时方式1nTH0=0 x3c;/溢出20次=1秒(12M晶振)nTL0=0 xb0;nTR0=1;/启动定时器nET0=1;/打开定时器0中断nEA=1;/打开总中断nwhile(1)/主程序循环n if(ldela
15、y)/发现有时间溢出标记,进入处理nldelay=0;/清除标记nP0=ledpledi;/读出一个值送到P0口nledi+;/指向下一个nif(ledi=8)ledi=0;/到了最后一个灯就换到第一个n nn项目二任务5信号发生器n要求:设单片机的fosc=12MHz,采用T0定时方式1在P1.0脚上输出周期为2ms的方波,试计算定时器的初值。n周期为2ms的方波由2个半周期为1ms的正负脉冲组成,定时1ms后将端口输出电平取反即中得到方波。n已知机器fosc =12MHz,1ms定时对应的计数值为:ms/T机1000us/(12/fosc)=1000n则1ms定时的计数初值应为:x=216
16、-tfosc/12 =216-100055536.n其实,由于初值是计数值的补数,在语言中也可直接用负数表示,即x=-1000.项目二任务6计数器实验要求:使用T1作为定时器,T0作为计数器,均按方式1工作,测试P3.4(T0)引脚上每50ms来了多少脉冲,将其数值按二进制数在LED灯上显示出来,每隔3秒测试一次。U2(P3.4/T0)1234567820191817161514139121011U1LED-BARGRAPH-REDXTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD43
17、5P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U2AT89C51开始定时器初始化:T1、T0的工作方式,初值,启动开中断:EA、ET1等待中断关中断恢复50ms延时初值保存T0的计数值T0计数
18、值清零3秒计数值减1延时3秒到否?恢复3秒计时的初值将脉冲个数送显示中断返回 Y NT1中断入口初值的计算机器周期:12/12MHZ=1us需要计数的值:50ms/1us=50000其补数为:65536-50000=15536高8位为:15536/256=60=0 x3c低8位为:15536%256=176=0 xb03秒计数器的值:3秒/50ms=60/定时器实验/头文件引用#include/宏声明#define uchar unsigned charuchar times=60;/延时3秒常数/定时器中断void int_t1()interrupt 3 uchar pulse;TR1=0;
19、TL1=0XB0;TH1=0X3C;pulse=TL0;TL0=0 x00;TH0=0 x00;TR1=1;times-;if(times=0)times=60;P1=pulse;/主程序void main()TMOD=0 x15;TL0=0 x00;TH0=0 x00;TL1=0 xb0;TH1=0 x3c;TR0=1;ET0=1;TR1=1;ET1=1;EA=1;while(1);图 8.14 频率设置截图n仿真中所用信号的频率为600Hz,如图所示。所测量的时间为50ms,是1/20秒,故这段时间内的脉冲个数为600/20=30,与显示的二进制数(11110)相吻合。改变所设定的频率,计
展开阅读全文