教学课件MCS-51单片机定时器计数器教学课件PPT.ppt_第1页
教学课件MCS-51单片机定时器计数器教学课件PPT.ppt_第2页
教学课件MCS-51单片机定时器计数器教学课件PPT.ppt_第3页
教学课件MCS-51单片机定时器计数器教学课件PPT.ppt_第4页
教学课件MCS-51单片机定时器计数器教学课件PPT.ppt_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章 mcs-51单片机定时器/计数器,教学目标 第一节 mcs51定时/计数器的结构 第二节 定时/计数器的方式和控制寄存器 第三节 定时/计数器的工作方式 第四节 定时/计数器应用 第五节 定时/计数量程的扩展 本章小结 思考题与习题,(p288) 7.6 mcs51内部定时器/计数器,教学目标,通过本章教学,要求达到以下目标: 1 . 了解定时/计数器内部结构及工作原理。 2熟悉定时/计数器控制寄存器tcon、工作 方式寄存器tmod的结构、控制作用和设 置方法。 3理解定时/计数器4种工作方式,重点掌握方 式1、方式2的应用。 4学会定时/计数器初值的计算方法。 5掌握定时/计数器应用程序的编制方法。,在实际的控制系统中常要求有外部实时时钟,以实现定时或延时控制;还要求有外部计数器,以实现对外界事件进行计数。 例如:在单片机控制的电力拖动系统中,控制的对象为电动机,为了实现闭环控制,就需要定时地对转速进行采样。若采用光电脉冲发生器作为检测元件,则先应对每个采样周期中光电脉冲发生器发出的脉冲进行计数,然后再通过实时计算求得对应的转速。,对于定时/计数器来说,不管是独立的定时器芯片还是单片机内的定时器,大都有以下特点: (1)定时/计数器有多种工作方式,可以是计数方式也可以是定时方式,其实是一个东西。 (2)定时/计数器的计数值是可变的,当然对计数的最大值有一定限制,这取决于计数器的位数。计数的最大值也就限制了定时的最大值。 (3)可以按照规定的定时或计数值,在定时时间到或者计数终止时,发出中断申请,以便实现定时控制。,6.1 定时/计数器的结构及工作原理,mcs-51单片机的定时/计数器简称t/c,t/c的结构图,加1计数器,p3.5,p3.3,中断申请,启停控制,计数/定时脉冲源,t/c的核心是1个16位加1计数器; 它由两个8位的特殊功能寄存器构成: 低八位:tl,计满向高八位进位 高八位:th,说明:,加1计数器,加1计数器,16位的加1计数器由两个8位的特殊功能寄存器thx或tlx组成(x=0、1)。它们可被程序设置为不同的组合状态。(13位、16位、两个分开的8位等),从而形成不同的4种工作方式,这只要用指令改变tmod(工作方式控制寄存器)的相应位即可实现。,加1计数器,加1计数器计满后(13位为213、16位为216、8位为28),向cpu申请中断,标志位tf1自动置位,若中断是开放的,则cpu响应定时器中断。当cpu响应中断转向中断服务程序时,由硬件自动将该位清0。,中断申请,输入脉冲有两个来源: 外部脉冲源,对应单片机p3.4、p3.5引脚。 系统时钟(振荡器)经12分频以后的脉冲信号。,说明:,加1计数器,p3.5,加1计数器,模拟位开关决定了t/c的工作状态:当开关处于上方时为定时状态,处于下方时为计数状态。工作状态的选择由特殊功能寄存器tmod的c/t位来决定。,p3.5,计数/定时脉冲源,加1计数器,当t/c处于计数模式时,对p3.4(计数器t0)、p3.5(计数器t1)、输入脉冲进行统计。由特殊功能寄存器tmod的c/t位来决定。,p3.5,加1计数器,当t/c处于定时方式时,由于一个机器周期包含12个振荡周期所以它的计数速率是振荡频率的1/12。加1计数器在每个机器周期加1。因此,也可以把它看作在累计机器周期。,加1计数器,tr1、gate、/int1共同控制定时器的启动。,p3.3,6.2 定时/计数器的控制和方式寄存器,mcs-51单片机有2个特殊功能寄存器tcon和tmod: tcon:用于控制定时器的启动与停止,中断标志。 tmod:用于设置t/c的工作方式。,1.定时器控制寄存器tcon,d7 d6 d5 d4 d3 d2 d1 d0,t c o n,88h,位地址,外部中断标志和触发方式,0:无 tx中断(硬件复位),1:有 tx溢出中断,0:停 tx计数,1:启 tx计数,tfx:,trx:,定时器启停和标志,tf0(tf1):为t0(t1)定时器溢出中断标志位。当t0(t1)计数溢出时,由硬件置位,并在允许中断的情况下发出中断请求信号。当cpu响应中断转向中断服务程序时,由硬件自动将该位清0。,tr0(tr1):为t0(t1)运行控制位。该位由软件进行设置。 当tr0(tr1)=1时启动t0(t1); tr0(tr1)=0时关闭t0(t1)。,2.定时器工作方式寄存器tmod,定时器工作方式寄存器tmod用于选择定时器的工作方式。,c/t 0,c/t 1,m1m0:t/c工作方式定义位。,89h,gata:定时/计数器启动控制位。,t mod,gate:门控制位,用于控制定时器的启动是否受外部中断源信号的影响(或称外部引脚信号的控制)。 gate=0时,与外部中断无关,由tcon寄存器中的trx位控制启动。 gate=1时,由控制位trx和引脚 共同控制启动。,6.3 定时/计数器的工作方式,t mod,t/c构成一个13位的计数器,由thx的8位和tlx的低5位组成,tlx的高3位未用,满计数值为213。 t/c启动后立即加1计数,当tlx的低5位计数溢出时向thx进位,thx计数溢出则对相应的溢出标志位tfx自动置位,以此作为定时器溢出中断标志。 当单片机进入中断服务程序时,由内部硬件自动清除该标志。,1、方式0,m1m0=00,t/c方式0的逻辑结构图,th1/th0,tl1/tl0,tl1 (5位),计数,构成16位定时/计数器。 其中thx作为高8位,tlx作为低8位,满计数值为216,其余同方式0类似。,2、方式1,m1m0=01,t/c方式1的逻辑结构图,th1/th0,tl1/tl0,计数,构成1个8位自动重装载的t/c,满计数值为28。 在方式0和方式1中,当计数满后,若要进行下一次定时/计数,需用软件向thx和tlx重新予置计数初值。 在方式2中thx和tlx被当作两个8位计数器,计数过程中thx寄存8位初值并保持不变,由tlx进行8位计数。计数溢出时,除产生溢出中断请求外,还自动将thx中的初值重新装到tlx中去,即重装载。 除此之外,方式2也同方式0类似。,3、方式2,m1m0=10,t/c方式2的逻辑结构图,th1/th0,tl1/tl0,计数,寄存器,th0和tl0被拆成2个独立的8位计数器。 tl0既可作为定时器使用,也可作为计数器使用,它占用了定时器t0所使用的控制位(c/t、gate、tr0、tf0),其功能和操作与方式0或方式1完全相同。 th0只能作定时器用,并且占据了定时器t1的两个控制信号tr1和tf1。,t0和t1有不同的工作方式,c/t0:,定时器t1只能按不需要中断的方式2工作。,c/t1:,4、方式3,m1m0=11,t/c方式3的逻辑结构图,th1,tl1,计数,th0,tl0,计数,计数,寄存器,(1)确定工作方式,即对tmod寄存器进行赋值。 (2)计算计数初值,并写入寄存器th0、tl0或th1、tl1中。 (3)根据需要,置位etx允许t/c中断。 (4)置位ea使cpu开中断(需要时)。 (5)置位trx启动计数。,6.4 定时/计数器应用,可编程器件在使用之前需要进行初始化。对定时/计数器而言需: 第一要能正确写入控制字; 第二能进行计数初值的计算。,一般步骤,定时/计数器的初始化,定时/计数初值的计算方法,计数方式的初值计算,定时方式的初值计算,定时/计数初值的计算方法,计数方式的初值计算: 计数器是在计数初值的基础上进行加1计数,并能在计数器从全“1”变为全“0”时自动产生定时溢出中断请求。 假设需要的计数值为n,则应装入的计数初值为:,x=mn (m :模数,为216、213、28、n :需要的计数值),定时/计数初值的计算方法,定时方式的初值计算:,在定时方式下,计数脉冲由单片机主脉冲经12分频后得到,因此定时器定时时间为:,m :模数,为216、213、28 tc :定时计数初值 t计数:计数脉冲周期 t : 需要的定时时间,fs:晶振频率 tcp :机器周期,计数初值:,其中:,设:fs12mhz,初值tc0,则:,方式0时:tmax2131s8.192 ms 方式1时:tmax2161s65.536 ms 方式2、3 时:tmax281s0.256 ms,最大定时时间计算,思考:fs6mhz定时最大时间为多少?8mhz呢?,设:fs6mhz,初值tc0,则:,方式0时:tmax2132s16.384 ms 方式1时:tmax2162s131.072 ms 方式2、3 时:tmax282s0.512 ms,最大定时时间计算,例1,若晶振频率为6mhz,试计算mcs-51单片机定时/计数器的最小定时时间和最大定时时间。,解:先确定机器周期:,tcp12/6=2s,计算最小定时时间:,对于定时器的几种工作方式来说,最小定时时间都是一样的,即仅计一个脉冲便产生溢出,所以 tmin=1tcp=12s=2s,计算最大定时时间:,当t/c工作在方式1下的定时时间最长,则最大定时时间为:,tmax=216tcp=2162s=131072s=131ms,例2:,若单片机的晶振频率为6mhz,要求定时/计数器t0产生100ms的定时,试确定计数初值以及tmod寄存器的内容。,解:,当晶振频率为6mhz时,在不扩展计数器情况下产生100ms的定时只能采用方式1(16位定时器)。,计数初值:tcmt/t计数,t计数2s,tc 216100103/2 655365000015536 3cb0h,方式0时:tmax2132s16.384 ms 方式1时:tmax2162s131.072 ms 方式2、3 时:tmax282s0.512 ms,对于t0来说:m1m0=01、 = 0 、gate=0。 由于t1不用,可任意设置,现取为全0。 所以: tmod=0000,0001b=01h,设置tmod方式字:,c/t 0,c/t 1,89h,tmod,例2:,若单片机的晶振频率为6mhz,要求定时/计数器t0产生100ms的定时,试确定计数初值以及tmod寄存器的内容。,例3,利用定时/计数器t0通过p1.0引脚输出周期为2ms的方波,设晶振频率为12mhz。试确定计数初值、tmod内容及编制相应程序。,若要产生周期为2ms的方波,只要每1ms将信号的幅值由0变到1或由1变到0即可,可采用取反指令cpl来实现。为了提高cpu的效率,可采用定时中断的方式,每1ms产生一次中断,在中断服务程序中将输出信号取反即可。 定时器t0的中断入口地址为000bh。,分析:,计算计数初值:,解:,对于定时1ms来说,用定时器方式0(13位定 时器)就可实现。,tc 213(110-3 ) /(110-6 ) 819210007192 0001110000011000b =1c18h?,则其高8位为e0h,低5位为18h, 故th0=e0h(高8位),tl0=18h(低5位)。, 确定tmod方式字:,对于定时器t0来说,m1m0=00h、 =0、gate=0。定时器t1不用,取为全0。于是 tmod=00000000b=00h,c/t 0,c/t 1,t mod,org 0000h ljmp main org 000bh ;t0中断服务程序入口 ljmp int0 ;转至int处 org 2000h ;主程序 main: mov tmod,00h ;置t0为定时方式0 mov th0,0e0h ;设置计数初值 mov tl0,18h setb ea ;cpu开中断 setb et0 ;允许t0中断 setb tr0 ;启动t0 halt: sjmp $ ;暂停,等待中断 int0: cpl p1.0 ;输出方波 mov th0,0e0h ;重新装计数初值 mov tl0,18h reti ;中断返回 end, 程序设计:,机器周期 1 2 2,特别注意: 当采用方式0、1、3时,只要不关闭定时/计数器,那么每当计数器回0溢出时,都需要重新装入计数初值,以保证计数值不变。 为了得到精确的定时,重装时要扣去cpu响应中断和执行重装所需要的时间。,cpu响应中断需38个周期(一般按45个估算),本例中重装完定时常数,执行了3条指令,用了5个机器周期,故重装时使计数减去10个机器周期。,int0: cpl p1.0 ;输出方波 mov th0,0e0h ;重新装计数初值 mov tl0,22h ;22h18h+0ah reti ;中断返回,修改后的中断服务程序为:,例4,分析:程序和例3很相似,不同之处为不需要中断和中断服务程序。 查询的对象是定时器t0的溢出标志tf0,在计数过程中,tf0为0;当定时时间到,计数器溢出使tf0置1。 由于未采用中断,tf0置1后不会自动复位为0,故需用指令使tf0复位为0。,用查询方式产生例3中所要求的方波。,解:计数初值的计算以及tmod的选取同例3。 tmod00h ;置定时器t0为方式0 th00e0h ;设置计数初值 tl018h,org ooooh ljmp main org o100h main: mov tmod,00h ;置定时器t0为方式0 mov th0,0e0h ;设置计数初值 mov tl0,18h mov ie,00h ;禁止中断 setb tr0 ;启动t0定时 loop: jbc tf0,loop1 ;查询计数溢出,若跳转同时清tf0 sjmp loop ;tf0=0,则反复查询 loop1: cpl p1.0 ;输出方波 mov th0,0e0h ;重新装入计数初值 mov tl0,18h sjmp loop ;重复循环 end,设晶振频率为6mhz、定时/计数器t0工作于方式3,tl0和th0作为两个独立的8位定时器,要求tl0使p1.0产生400s的方波,th0使p1.1产生800s的方波。,例5,解:当采用方式3时,对于th0来说,需要借用定时器t1的控制信号。,计算计数初值: x0=28-20010-6/210-6=156=9ch x1=28-40010-6/210-6=56=38h 确定tmod方式字: 对定时器t0来说,m1m0=11、c/t =0、gate=0,定时器t1不用,取为全0。 则: tmod=00000011b=03h,设晶振频率为6mhz、定时/计数器t0工作于方式3,tl0和th0作为两个独立的8位定时器,要求tl0使p1.0产生400s的方波,th0使p1.1产生800s的方波。,例5,p1.0,p1.1,org 0000h ljmp main org 0100h ;主程序 main:mov tmod,03h ;t0工作于方式3 mov tl0,9ch ;置计数初值 mov th0,38h setb ea ;cpu开中断 setb et0 ;允许t0中断(用于tl0) setb et1 ;允许t1中断(用于th0) setb tr0 ;启动tl0 setb tr1 ;启动th0,程序设计:,setb tr0 ;启动tl0 setb tr1 ;启动th0 halt:sjmp halt ;暂停,等待中断 org 000bh ;tl0中断服务程序 cpl p1.0 ;p1.0取反 mov tl0,9ch ;重新装入计数初值 reti ;中断返回 org 001bh ;th0中断服务程序 cpl p1.1 ;p1.1取反 mov th0,38h ;重新装计数初值 reti ;中断返回 end,6.5 定时/计数量程的扩展,扩展的方法(n216 ) : 硬件扩展:计数器级联。如t0计数满量程后,将px.x取反,再送入t1端计数即可。 软件扩展:t满量程后,在某一个/多个寄存器加1/减1,使最终的计数满足要求。,在p1.7端接一个发光二极管led,要求利用定时控制使led亮一秒灭一秒周而复始,设fosc=6mhz。,例6:,fs6mhz,初值tc0,则:,方式0时:tmax2132s16.384 ms 方式1时:tmax2162s131.072 ms 方式2、3 时:tmax282s0.512 ms,p1.7,52,方法1:t0每隔100ms中断一次,中断10次即实现了1秒的定时。,软件扩展:t满量程后,在某一个/多个寄存器加1/减1,使最终的计数满足要求。,53,org 0000h ljmp main org 000bh ;t0中断服务程序入口 ajmp ip0 org 0030h ;主程序开始 main: clr p1.7 ;t0定时100ms mov tmod,#01h mov th0,#3ch mov tl0,#0b0h setb et0 setb ea mov r4,#0ah setb tr0 sjmp ;等待中断 ip0: djnz r4,ret0 ;中断10次计数未到,返回继续定时 cpl p1.7 ;定时100ms10次,说明1s到,p1.7取反 mov r4,#0ah ret0: mov th0,#3ch mov tl0,#0b0h reti end,54,解:方法2:采用t0产生周期为200ms脉冲,即p1.0每100ms取反一次作为t1的计数脉冲,t1对p1.0下降沿计数,因此t1计5个脉冲正好1000ms。,在p1.7端接一个发光二极管led,要求利用定时控制使led亮一秒灭一秒周而复始,设fosc=6mhz。,t0采用定时,方式1, x0= 65536-50000 得x0=3cb0h, t1采用计数方式2, 计数初值x1 =256-5=fbh,例6:,55,56,org 0000h main: clr p1.7 setb p1.0 mov tmod,#61h mov th1,#0fbh mov tl1,#0fbh setb tr1 loop1: cpl p1.7 loop2:mov th0,#3ch mov tl0,#0b0h setb tr0 loop3: jbc tf0,loop4 sjmp loop3 loop4:cpl p1.0 jbc tf1,loop1 ajmp loop2 en

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论