第6章MCS-51单片机定时器、计数器.ppt_第1页
第6章MCS-51单片机定时器、计数器.ppt_第2页
第6章MCS-51单片机定时器、计数器.ppt_第3页
第6章MCS-51单片机定时器、计数器.ppt_第4页
第6章MCS-51单片机定时器、计数器.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

第六章 mcs-51单片机定时器/计数器,【学习目的和要求】 mcs-51单片机内部有两个定时器/计数器,它们可以用于对某一事件的计数结果进行控制,或按一定时间间隔进行控制。 了解和掌握定时器/计数器的结构原理和各种工作方式。 了解定时器/计数器的基本编程应用,6.1 定时器/计数器结构及工作原理 6.2 定时器/计数器的控制及工作方式 6.3 定时器/计数器的编程和应用,第六章 mcs-51单片机定时器/计数器,6.1.1 定时器/计数器的结构,t0、t1又可分为两个独立的8位计数器,即th0、tl0和th1、tl1,用于存储定时器/计数器的初值,tmod为方式控制寄存器,用来设置定时器/计数器的工作方式,tcon为控制寄存器,用来控制定时器/计数器的启动与停止,mcs-51系列单片机的51子系列由两个16位定时器t0、t1和两个寄存器tcon、tmod组成。,第六章 mcs-51单片机定时器/计数器,6.1.2 定时器/计数器的工作原理,原理:都是进行计数操作,每来一个脉冲定时器/计数器就加1,加满溢出后,再从新开始计数,不同之处是输入的计数信号来源不同。,t0的结构示意图,定时功能:是通过对单片机内部时钟脉冲的计数来实现的。 计数输入信号是内部时钟脉冲,每个机器周期使寄存器的值加1。所以,计数频率是振荡频率的1/12。 计数功能:是通过对外部输入脉冲进行计数来实现的。计数脉冲来自相应的外部输入引脚,t0为p3.4,t1为p3.5。,6.1.2 定时器/计数器的工作原理,原理:都是进行计数操作,每来一个脉冲定时器/计数器就加1,加满溢出后,再从新开始计数,不同之处是输入的计数信号来源不同。,工作方式控制寄存器tmod,t1控制,t0控制,gate门控位,m1 m0工作方式选择,6.2 定时器/计数器控制及工作方式,定时器控制寄存器tcon,中断请求标志,触发方式选择,启动定时/计数器,0 低电平1 下降沿,0 停止 1 启动,6.2 定时器/计数器控制及工作方式,字节地址为88h,它可进行位寻址,位地址为8fh88h。,第六章 mcs-51单片机定时器/计数器,6.2.3 定时器/计数器的工作方式,通过对tmod寄存器中m0、m1位进行设置,可选择4种工作方式。,一、方式0,方式0为13位计数,由tl0的低5位(高3位未用)和th0的8位组成。tl0的低5位溢出时向th0进位,th0溢出时,置位tcon中的tf0标志,向cpu发出中断请求。,计数器,定时器,计数脉冲输入,二、方式1 方式1的计数位数是16位,由tl0作为低8位、th0作为高8位,组成了16位加1计数器 。,计数个数与计数初值的关系为:,三、方式2 方式2为自动重装初值的8位计数方式。 计数个数与计数初值的关系为: 工作方式2特别适合于用作较精确的脉冲信号发生器。,四、方式3 方式3只适用于定时/计数器t0,定时器t1处于方式3时相当于tr1=0,停止计数。 工作方式3将t0分成为两个独立的8位计数器tl0和th0 。,第六章 mcs-51单片机定时器/计数器,两个定时器/计数器的设置和使用是不同的。,(1)工作方式3下的定时器/计数器0,第六章 mcs-51单片机定时器/计数器,图6-9 t0工作在方式3时t1为方式0,图6-10 t0工作在方式3时t1为方式1,图6-11 t0工作在方式3时t1为方式2,(2)工作方式3下的定时器/计数器1,第六章 mcs-51单片机定时器/计数器,6.2.4 定时器/计数器的初始化,1. 定时器/计数器的初始化设置,定时器/计数器是一种可编程部件,在使用定时器/计数器时,需要先对其进行初始化,初始化步骤如下。 1.确定工作模式和工作方式,将方式控制字写入tmod寄存 器中。 2.预置定时或计数初值,将计算出的定时或计数初始值装 入tl0、th0或tl1、th1中。不同工作方式,其定时或计 数长度不一样,在定时或计数时不能超过其最大值。 3.开放定时器/计数器的中断,即如果采用中断方式,要对 ie中的相关位进行设置。 4.启动定时器/计数器工作, 使tcon中的tr0或tr1位置1。,第六章 mcs-51单片机定时器/计数器,2定时器/计数器初值的计算,定时器/计数器在不同工作方式时,定时初值或计数初值的计算方法不同,最大定时时间和最大计数值也不同,在定时或计数时不能超过其最大值。,第六章 mcs-51单片机定时器/计数器,6.3 定时器/计数器的编程和应用,6.3.1方式0应用,【例6-1】使用定时器/计数器0的方式0,晶振频率为 = 6mhz,以中 断方式工作,在p1.0引脚输出一个周期为1ms的方波,试编写程序。,解:根据题意,只要使p1.0脚每隔500us 取反一次即可得到周期1ms的方波,因而t0的定时时间t=500us 。,(1)设定tmod(即控制字)。 tmod的低4位控制定时器/计数器0,设t0为定时模式,即 =0;工作在方式0,即 m1m0=00;设定为软件启动定时器,即gate=0。tmod高4位与t0无关,一般都取0,所以tmod的控制字为00h。,(2)计算定时初值。 晶振频率 为6mhz,机器周期 定时初值 =8192-250=7942=0001111100000110b=1f06h 因tl0的高3位未用,对计算出的初值要进行修正,即在低5位前插入3个0,修正后的定时初值x=1111100000000110b=f806h。,第六章 mcs-51单片机定时器/计数器,(3)源程序清单 org 0000h ajmp main ;转主程序 org 000bh ;t0中断矢量地址 ajmp iser ;转中断服务程序 org 100h main: mov sp,#60h ;设堆栈指针 mov tmod,#00h ;写控制字 mov tl0,#06h ;置t0 初值 mov th0,#0f8h setb et0 ;允许t0中断 setb ea ;cpu开中断 setb tr0 ;启动t0 sjmp $ ;等待中断 iser: mov tl0,#06h ;t0中断服务子程序,重置t0 初值 mov th0,#0f8h ; cpl p1.0 ;p1.0取反 reti end,第六章 mcs-51单片机定时器/计数器,【例6-2】使用定时器/计数器1的方式0,晶振频率为6mhz,以查询 方式工作,在p1.0引脚输出一个周期为2ms的方波,试编写程序。,解:根据题意,只要使p1.0脚每隔1ms取反一次即可得到周期2ms的方波,因而t1的定时时间t=1ms。,(1)设定tmod(即控制字)。 tmod的高4位控制定时器/计数器1,设t1为定时模式,即 = 0;工作在方式0,即 m1m0=00;设定为软件启动定时器,即gate=0。tmod低4位与t1无关,一般都取0,所以tmod的控制字为00h。,(2)计算定时初值。 晶振频率 为6mhz,机器周期 定时初值 =8192-500=7692=1111000001100b=1e0ch 因tl0的高3位未用,对计算出的初值要进行修正,即在低5位前插入3个0,修正后的定时初值x=1111000000001100b=f00ch。,第六章 mcs-51单片机定时器/计数器,(3)源程序清单 org 100h mov tmod,#00h ;写控制字,t1工作方式0 mov tl1,#0ch ;置t1 初值 mov th1,#0f0h loop: setb tr1 ;启动t1 loop1: jnb tf1,loop1 ;查询tf1,有无溢出 clr tf1 ;有溢出清tf1 mov tl1,#0ch ;重置t1 初值 mov th1,#0f0h cpl p1.0 ;p1.0取反 sjmp loop,第六章 mcs-51单片机定时器/计数器,方式1与方式0基本相同,其差别只是计数长度不同。,【例6-3】在单片机p1口连接8个发光二极管,如图6-12所示。使用t1工作方式1,晶振频率 = 6mhz,以查询方式工作,定时时间为80ms,试编写程序,使图中p1.0接的发光二极管先亮,延时80ms后,p1.1亮,依次向左移动,当最左端p1.7亮后又回到最右端重新开始向左移动,不断循环。,第六章 mcs-51单片机定时器/计数器,(1)设定tmod(即控制字)。 tmod的高4位控制定时器/计数器1,设t1为定时模式,取 =0;工作方式1,取 m1m0=01;设定为软件启动定时器,取gate=0。tmod低4位与t1无关,一般都取0,所以tmod的控制字为10h。,解:根据题意,t1的定时时间t=80ms。,(2)计算定时初值。 晶振频率 为6mhz,机器周期 定时初值 =65536-40000=25536=0110001111000000b =63c0h,第六章 mcs-51单片机定时器/计数器,(3)程序设计 1、流程图,第六章 mcs-51单片机定时器/计数器,2、源程序 org 100h start: mov r0,#08h ;设左移8次 mov a,#11111110b ;开始点亮灯p1.0 loop: mov p1,a ;送p1口输出 acall delay ;调用延时子程序 rl a ;累加器循环左移1位 djnz r0,loop ;判断移动次数 jmp start ;返回,循环执行 delay: mov tmod,#00010000b ;设定t1工作在方式1 setb tr1 ;启动t1开始计时 mov tl1,#0c0h ;装入低位 mov th1,#63h ;装入高位 jnb tf1,$ ;t1没有溢出 clr tf1 ;产生溢出,清除标志位 ret ;子程序返回 end,第六章 mcs-51单片机定时器/计数器,【例6-4】设晶振频率为 =6mhz,要求利用定时器t1,每隔5s将p1.0取反一次。,解:因要求的定时时间5s已超出了定时器的定时能力,所以无法用定时器直接实现5s的定时。可将定时器的定时时间设为100ms(16位定时器的最长定时时间为131.072ms),在中断服务程序中对定时器溢出中断进行计数,当计数达50次时,将p1.0取反,否则直接返回主程序。,(1)确定工作方式控制字 设t1为16位定时器,即 =0;工作方式1,即 m1m0=01;设定为软件启动定时器,即gate=0。 所以tmod的控制字为10h。,(2)计算定时器t1初值x。,第六章 mcs-51单片机定时器/计数器,(3)源程序: org 0000h ljmp main ;转主程序 org 001bh ;t1中断服务程序入口地址 ljmp t0isr org 0100h main: mov sp,#60h ;设置堆栈指针 mov tmod,#10h ;t1为定时模式,工作方式1 mov tl0,#0b0h ;装入初值 mov th0,#3ch mov a,#50 ;累加器置初值50 setb ea ;cpu开中断 setb et1 ;允许t1中断 setb tr1 ;启动t1计数 sjmp $ ;等待 t0isr: mov tl0,#0b0h ;重新装入初值 mov th0,#3ch dec a ;累加器内容减1 jnz ext cpl p1.0 mov a,#50 ;累加器重置初值 ext: reti end,第六章 mcs-51单片机定时器/计数器,6.3.3 方式2应用,【例6-5】使用t1的方式2,晶振频率为 =12mhz,以中断方式工 作,在p1.0引脚输出一个周期为100 的方波,试编写程序。,解:根据题意,只要使p1.0脚每隔50us 取反一次即可得到周期100 us的方波,因而t0的定时时间t=50us 。,(1)设定tmod(即控制字)。 tmod的高4位控制定时器/计数器1,设t1为定时模式,即c/t=0;工作方式2,即 m1m0=10;设定为软件启动定时器,即gate=0。tmod低4位与t1无关,一般都取0,所以tmod的控制字为20h。,(2)计算定时初值。 晶振频率 为12mhz,机器周期 定时初值 =256-50=206=11001110b=0ceh,第六章 mcs-51单片机定时器/计数器,(3)源程序 org 0000h ajmp main ;转主程序 org 001bh ;t1中断矢量地址 ajmp iser ;转中断服务程序 org 100h main: mov sp,#60h ;设堆栈指针 mov tmod,#20h ;写控制字 mov tl1,#0ceh ;置t1 初值 mov th1,#0ceh setb et0 ;允许t0中断 setb ea ;cpu开中断 setb tr1 ;启动t1 sjmp $ ;等待中断 iser: cpl p1.0 ;p1.0取反 reti end,第六章 mcs-51单片机定时器/计数器,【例6-6】使用定时器/计数器1的方式2,晶振频率为 =12mhz,以查询方式工作,在p1.0引脚输出一个周期为100 us的方波,试编写程序。,解:根据题意,只要使p1.0脚每隔50 us取反一次即可得到周期100us 的方波,因而t1的定时时间t=50 us。,(1)设定tmod(即控制字)为20h。,(2)计算定时初值。 晶振频率 为12mhz,机器周期 定时初值 =256-50=206=11001110b=0ceh,(3)源程序 org 100h mov tmod,#20h ;写控制字,t1工作方式1 mov tl1,#0ceh ;置t1 初值 mov th1,#0ceh mov ie,#00h ;禁止中断 setb tr1 ;启动t1 loop: jbc tf1,loop1 ;查询tf1,有溢出转 loop1,并清tf1。 sjmp loop loop1:cpl p1.0 ;p1.0取反 sjmp loop,第六章 mcs-51单片机定时器/计数器,6.3.4 方式3应用,方式3只适于t0,且t0处于方式3时,t1只能工作在方式0、方式1和方式2。t0工作在方式3时,被分为tl0和th0两个独立的8位定时器/计数器。其中,tl0既可作定时器,也可作计数器。th0只能作8位的定时器。,【例6-7】使用定时器/计数器0的方式3,晶振频率为 =6mhz,以中断方式工作,在p1.0引脚输出一个周期为400us 的方波,试编写程序。,第六章 mcs-51单片机定时器/计数器,解:根据题意,只要使p1.0脚每隔200us 取反一次即可得到周期400us 的方波,因而t0的定时时间t=200us 。 (1)设定tmod(即控制字)。 tmod的低4位控制定时器/计数器0,设t0为定时模式,即c/t=0;工作方式3,即 m1m0=11;设定为软件启动定时器,即gate=0。tmod高4位与t0无关,一般都取0,所以tmod的控制字为03h。 (2)计算定时初值。 晶振频率 为6mhz,机器周期 定时初值 =256-100=156=10011100b=9ch,第六章 mcs-51单片机定时器/计数器,3)源程序 1使用tl0 org 0000h ajmp main ;转主程序 org 000bh ;t0中断矢量地址 ajmp iser ;转中断服务程序 org 100h main: mov sp,#60h ;设堆栈指针 mov tmod,#03h ;写控制字 mov tl0,#9ch ;置tl0 初值 setb et0 ;允许t0中断 setb ea ;cpu开中断 setb tr0 ;启动tl0 sjmp $ ;等待中断 iser: mov tl0,#9ch ;t0中断服务子程序,重置 t0 初值 cpl p1.0 ;p1.0取反 reti end,第六章 mcs-51单片机定时器/计数器,2使用th0 org 0000h ajmp main ;转主程序 org 001bh ;t1中断矢量地址 ajmp iser ;转中断服务程序 org 100h main: mov sp,#60h ;设堆栈指针 mov tmod,#03h ;写控制字 mov th0,#9ch ;置th0 初值 setb et1 ;允许t1中断 setb ea ;cpu开中断 setb tr1 ;启动th0 sjmp $ ;等待中断 iser: mov th0,#9ch ;t0中断服务子程序,重置 th0 初值 cpl p1.0 ;p1.0取反 reti end,第六章 mcs-51单片机定时器/计数器,本章小结 mcs-51单片机有两个定时器/计数器,定时器采用的是对内部脉冲进行计数,计数器采用的是对外部脉冲进行计数。定时器的计数脉冲来自振荡信号的12分频,即每过一个机器周期计数器加1,直至计数器溢出。计数器的外部脉冲是从t0或t1引脚输入的,外部脉冲的下降沿触发计数器计数,直至计数器溢出。通过对定时器/计数器初值的设置,可以确定计数器的溢出时间,从而实现不同的定时时间。 定时器/计数器可实现定时控制、时间延时、脉冲计数、频率测量、脉宽测量、信号发生等功能,在串行通信中,还可作为波特率发生器。 mcs-51单片机的定时器/计数器有两种工作模式和4种工作方式,工作方式不同其最大计数值也不同。,四、应用举例,可编程器件在使用前需要进行初始化: 确定tmod控制字:编程时将控制字送tmod; 计算计数器的计数初值: 编程时将计数初值送thi、 tli; 开中断(如果使用中断方式): 编程实置位ea、eti tri位置位控制定时器的启动和停止,例题1:设晶振频率fosc=6mhz,使用定时器1以方式1产生周期为500s的方波脉冲,并由p1.0 输出。试以中断方式实现。, tmod确定,t1控制,t0控制,控制字10h,要产生500s 的方波脉冲,只需在p1.0端以250s为间隔,交替输出高低电平即可实现。为此,定时间应为250s 。使用6z晶振,则一个机器周期为2s,设待求计数初值为,则:, 计算计数器的计数初值;,(216x)210 -6 =25010 -6 即216x=125 x216-125=10000h-7dh 0ff83h 所以,初值为: th1=0ffh,tl1=83h, 采用中断方式:编程时打开全局和局部中断。, 由定时器控制寄存器tcon中的tr1位控制定时器的启动和停止。 tr11,启动; tr10,停止。,程序设计,org 0000h ljmp main ;主程序入口 org 001bh ljmp intt1 ;t1中断入口,intt1: m

温馨提示

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

评论

0/150

提交评论