MCS-51终端系统教学课件PPT单片机中断定时器计数器.pptx_第1页
MCS-51终端系统教学课件PPT单片机中断定时器计数器.pptx_第2页
MCS-51终端系统教学课件PPT单片机中断定时器计数器.pptx_第3页
MCS-51终端系统教学课件PPT单片机中断定时器计数器.pptx_第4页
MCS-51终端系统教学课件PPT单片机中断定时器计数器.pptx_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

mcs-51及其5l子系列的其它成员都具有相同的中断结构。 8051有5个中断源2个外部中断源int0和int1,2个片内定时器计数器溢出中断源,1个片内串行口中断源。 分为两级高级中断和低级中断。其中任何一个中断源的优先级均可由软件设定为高级或低级,能实现两级中断服务程序嵌套 。 都是可屏蔽的,由软件设定。,第五章 mcs-51的中断系统,中断允许寄存器ie控制,中断优先级寄存器ip控制,中断触发方式位it控制,一、mcs51的中断源,1.中断源 1) 外部中断0请求,由p3.2引脚输入。可由用户设定为两种触发方式,(电平触发方式还是边沿触发方式)。一旦输入信号有效,则向cpu申请中断,并且将中断标志ie0置1。 2) 外部中断1请求,由p3.3引脚输入。亦可由用户设定为电平触发方式还是边沿触发方式。一旦输人信号有效,则向cpu申请中断,并将中断标志ie1置1。,3)片内定时器t0溢出中断请求。当定时器t0产生溢出时,t0中断请求标志tf0 置1,请求中断处理。 4)片内定时器t1溢出中断请求。当定时器t1产生溢出时,t1中断请求标志tf1置l,请求中断处理。 5)片内串行口发送接收中断请求。当通过串行口发送或接收完一帧串行数据时,串行口中断请求标志ti或ri置1,请求中断处理。,2.中断请求标志,(1)tcon的中断标志 tcon是专用寄存器,字节地址为88h,它锁存了外部和的中断请求标志及t0和t1的溢出中断请求标志,1)it0:选择外部中断0(int0)触发方式控制位。 it0=0 int0为电平触发方式。 2)ie0:外部中断0请求标志位。ie01,外部中断0向cpu申请中断。 3)it1:选择外部中断1(int1)触发方式控制位。 4)1e1:外部中断1请求标志位。ie11时,外部中断1向cpu申请中断。 5)tf0:片内定时器t0溢出中断请求标志。t0被启动后,从初始值开始进行加1计数,当最高位产生溢出时置tf01,向cpu申请中断,直到cpu响应该中断时,才由硬件自动将tf0清0,也可由软件查询该标志,并用软件清0。 6)tf1:片内定时器t1溢出中断请求标志,其操作功能与tf0类同。,scon是串行口控制寄存器,与中断有关的是它的低两位ti和ri。 1) ti(scon.1):串行口发送中断标志位。每发送完一个串行帧,由硬件置位ti。cpu响应中断时,不能清除ti,ti必须由软件清除。 2)ri(scon.0):串行口接收中断标志位,当允许串行口接收数据时,每接收完一个串行帧,由硬件置位ri。同样,ri必须由软件清除。,scon,2)scon的中断标志,二、mcs51的中断控制,1、中断允许寄存器ie中断的允许与开放,2中断优先级寄存器ip 中断优先级控制,内部自然优先级: 入口地址 int0 高 0003h t0 000bh int1 0013h t1 001bh ti/ri 底 0023h,中断处理过程一般分为三个阶段,即中断响应、中断处理和中断返回。,三、响应中断的条件及过程,1.中断响应 (1)中断响应的条件 1)有中断源发出请求信号 2)中断是开放的(总允许、源允许) 3)没有封锁(受阻),受阻情况是: cpu正在执行同级或高一级的中断服务程序; 现行机器周期不是正在执行的指令的最后一个机器周期,即现行指令完成前不响应任何中断请求; 当前正在执行的是中断返回指令reti或访问专用寄存器ie或ip的指令。也就是说,在执行reti或是访问ie、ip的指令后,至少需要再执行条其他指令,才会响应中断请求。,2)中断响应过程 进入中断响应周期。cpu在中断响应周期要完成下列操作: 1) 根据中断请求源的优先级高低, 使相应的优先级状态触发器置1。 2) 清相应中断请求标志位ie0、 ie1、tf0或tf1 3) 保留断点,把pc内容 压入堆 保存。 4) 把被响应的中断源服务 程序入口地址送入pc,输入相应 中断服务程序。,2.中断服务与返回 在编写中断服务程序时加注意的几点: 1)因各入口地址之间只相隔8个字节,一般的中断服务程序是存放不下的。所以通常在中断入口地址单元处存放条无条件转移指令,这样就可使中断服务程序灵活地安排在64kb程序存储器的任何空间。 2)若要在执行当前中断程序时禁止更高优先级中断,可先用软件关闭cpu中断,或禁止某中断源中断,在中断返回前再开放中断。 3)注意在保护现场和恢复现场。 4)中断服务程序的最后一条是返回指令reti,该指令将清除响应中断时被置位的优先级状态触发器,然后自动将断点地址从栈顶弹出,装入程序计数器pc,使程序返回到被中断的程序断点处,继续向下执行。,3.中断请求的撤除 cpu响应中断请求后,在中断返回(reti)前,该中断请求信号必须撤除,否则会引起另外一次中断。 注意:采用边沿触发的外部中断标志ie0或iel和定时器中断标志tf0或tfl,cpu响应中断后能用硬件自动情除。 但在电平触发时,ie0或iel受外部引脚中断信号(或)的直接控制,cpu无法控制ie0或iel,需要另外考虑撤除中断请求信号的措施,如通过外加硬件电路,并配合软件来解决;串行口中断请求标志ti和ri也不能由硬件自动清除,需要在中断服务程序中,用软件来清除相应的中断请求标志 。,小结:1、硬件构成 2、存储器组织 3、中断系统,mcs-51子系列单片机内有两个可编程的定时器计数器 t0和t1;它可由用户程序选择其工作方式,设定其工作参 数和条件。,第六章 mcs51定时/计数器及其应用,本章重点: 定时/计数器的编程结构 控制字与编程方法 应用编程,第一节 定时/计数器的结构与工作原理,一、定时/计数器的逻辑结构 定时计数器的结构如图所示。,定时/计数器的核心部件是加1计数器,其输入的计数脉冲有两个来源。当加到计数器为全“1”时,再输入一个脉冲,就使计数器回零,同时产生溢出脉冲使tcon中溢出中断标志tf0或tf1置1,并可向cpu申请中断。,1. 定时器工作方式时,对机器周期tm计数。这时计数器的计数脉冲由振荡器的12分频信号产生,即每经过一个机器周期,计数值加1,直至计满溢出。在机器周期固定的情况下,定时时间的长短与计数器事先装入的初值有关,装入的初值越大,定时越短。,2. 计数器工作方式时,通过引脚t0(p3.4)和t1(p3.5)对外部脉冲信号计数。当t0或t1脚上输入的脉冲信号出现由1到0的负跳变时,计数器值加1。,二、定时/计数器的工作原理,第二节 定时/计数器的控制与工作方式,应用问题 1、定时/计数如何设定? 2、定时/计数器如何启动? 3、定时/计数的值如何设定? 单片机内部的定时/计数器是一种可编程器件,可设置为四种工作方式,由两个8位专用寄存器tmod和tcon进行管理与控制。,单片机内部的定时/计数器是一种可编程器件,可设置为四种工作方式,由两个8位专用寄存器tmod和tcon进行管理与控制。,一、定时计数器的管理与控制 1.工作方式寄存器tmod 用于选定定时/计数器的工作方式、启动方式等。,与t0同,1)用于设置定时/计数器的工作方式(03); m1 m1 2)选择定时/计数ct* ; c/t=0-定时,c/t=1-计数 3)启动控制方式选择-内/外; gate:门控位,启动方式设定 gate0 - 允许软件位tr0或tr1启动; gate1 - 允许外部引脚信号int0/int1启动。,2、定时器控制寄存器tcon 1) tf1 定时器1溢出标志 2) tr1 定时器1运行控制位 3) tf0 定时器0溢出标志 4) tr0 定时器0运行控制位 5) ie1 外部中断1请求标志 6) it1 外中断1触发方式选择位 7) ie0 外部中断0请求标志 8) it0 外部断0触发方式选择位。,注意:复位后tmod、tcon各位均清零。 例:启动t0工作,用指令 setb tr0,例如:设定时器t0工作于方式1定时,由软件启动控制,则可用如下指令来装入控制字。 mov tmod,#00000001b;或 mov tmod,#01h; 练习:设定时器t1工作于方式2计数,由外部脉冲启动,试写入方式控制字。,通过控制tmod中的m1,m0位选择定时器4种工作方式。这4种工作方式的实质是对t0(或t1)的两个8位计数器th0、tl0(或th1、tl1)的计数操作方式而言。,二、定时/计数器的工作方式,1.方式0,方式0下的逻辑结构图,(1)c/t=1为计数工作方式,计数脉冲由t1引脚输入。计数个数 n=( 213初值x) (2)c/t=0为定时工作方式,计数脉冲为时钟频率fosc/12。 定时时间t=(213初值x)*时钟周期*12 x 213定时时间t/时钟周期*12,方式0下工作时:,思考: (1)最大计数或定时时的初值 x 是多少? (2)时钟频率为12mhz时,方式0最大定时时间是多少?,2.方式1 定时/计数器工作于方式1时为一个16位的计数器。其逻辑结构、操作及运行控制几乎与方式0完全样,差别仅在于计数器的位数不同。,定时工作方式1时,定时时间为: 定时时间 t (216计数初值tc)机器周期 用于计数器工作方式时, 最大计数值为: 21665536,3. 方式2 定时/计数器工作于方式2时,将两个8位计数器thx、tlx分成独立的两部分,组成一个可自动重装载的8位定时/计数器。其逻辑结构如图所示。,方式2的控制运行与方式0、方式1相同。 用于定时工作方式时,定时时间t为:t(28计数初值x)机器周期 用于计数工作方式时,最大计数值(初值0时)是28。方式2特别适合于用作较精确的定时和脉冲信号发生器。还常用作串行口波特率发生器 。,4.方式3 方式3只适用于定时器t0。在方式3下,t0被分成两个相互独立的8位计数器tl0和th0,如图所示 。,1)th0和tl0变成2个分开的计数器。 2)tl0占用了全部的定时器控制位。 (c/t, gate, tr0, tf0) 3)th0只能用于定时方式,运行控制位和溢出标志位则借用定时器1的tr1和tf1。 4)在t0设置为方式3工作时,一般是将定时器t1作为串行口波特率发生器,或用于不需要中断的场合。相当于增加了一个8位的定时器。,定时/计数器工作于方式3时:,第三节 定时/计数器的应用,一、定时/计数器计数初始化 1. 定时计数器的初始化方法 初始化的主要是对tcon和tmod编程,计算和装载t0和t1的计数初值。,(1)初始化步骤 1)分析定时器计数器的工作方式,将方式字写入tmod寄存器; ( 定/计、内/外启动、工作方式) 2)计算t0或t1中的计数初值,并将其写入th0、tl0或th1、tl1; 3)根据需要开放cpu和定时计数器的中断,即对ie和ip寄存器编程; 4)启动定时器计数器工作:若要求用软件启动,编程时对tr0或tr1置位即可启动;若由外部中断引脚电平启动,则对tr0或tr1置位后,还需给外引脚(或)提供启动电平。,1)计数器模式时的计数初值 x2mn (m为计数器位数,n为要求的计数值) x0,计数器的计数值最大 2m,2)定时器模式时的计数初值 定时时间为:t(2m计数初值x )机器周期 计数初值 x 2m -(t/12*t osc ),(2)计数器初值的计算,213 8192 (方式0) 216 65536 (方式1) 28 256(方式2及方式3 ),若系统时钟频率 fosc12mhz,1机器周期1s; 方式0:m13, tmax 213*机器周期8192s 方式1:m16, tmax216*机器周期65536s 方式2: m8, tmax28*机器周期256s (方式3同),x = 605360ec78h,x0,定时器的定时时间最大: tmax 2m机器周期,例如,若fosc6mhz,定时时间为10ms,使用定时器t0工作于方式1 ,则初值:,编写初始化程序的步骤; 1)方式控制字送 tmod mov tmod,# 2)计数器的初值送th、tl(0/1) mov th0,# mov tl0,# 3)根据需要开放中断和设定优先级 即对ie和ip赋初值(可位寻址) 4) 启动t0/t1开始工作-置位tr0/1 setb tr0/1 5)等待溢出信号的出现(如何进入处理程序?) (查询法或中断法),2. 定时/计数器初始化举例,例4-1:要求定时器t1于方式1,定时50ms,由软件启动,允许中断。设系统时钟频率fosc6mhz,编写初始化程序段。 解:1)方式控制字为 00010000b=10h 2)计数初值为 x1,t1初始化程序段如下: mov tmod,#10h ;写入工作方式字 mov th1,#9eh ;写入计数初值 mov tl1,#58h setb et1 ;开放t1中断 setb ea ;开放cpu中断 setb tr1 ;启动t1工作 ,例4-2: 要求利用定时/计数器t0对t0引脚(p3.4)出现的脉冲计数,每计数100个脉冲向cpu申请中断,设由由软件启动。编写初始化程序段。 解:1)经分析,可设定时器t0工作于方式2计数,方式控制字为0000110b=06h 2)要求的计数值n=100,则计数初值为 28-100=156,初始化程序段如下: mov tmod,#06h ;写入工作方式字 mov th0,#156 ;写入计数初值 mov tl0,#156 setb et0 ;开放t0、 cpu中断 setb ea setb tr0 ;启动t0工作,注意:方式2时初值必须同时写入th和tl,二、定时/计数器计数应用举例,在应用定时计数器时,溢出标志tfx置位后既可由硬件向cpu申请中断,也可通过用户程序查询tfx的状态,因此对计数溢出信息的处理有以下两种方法。 中断法在定时器初始化时要开放对应的源允许(et0或et1)和总允许,在启动后等待中断。当计数器溢出中断,cpu将程序转到中断服务程序入口,因此应在中断服务程序中安排相应的处理程序。 查询法既在定时器初始化并启动后,在程序中安排指令查询tfx的状态。 lp:jbc tf0,next ;tf0为1,转后面的处理程序,并将tf0复位 sjmp lp ;tf0为0,继续查询 next:,注意:中断法时,cpu响应中断会自动清tf,第三节 定时/计数器的应用,采用查询方式时的一般编程模式: org 0030h main: mov tmod,# mov th0,# mov tl0,# - setb tr0 wait: jbc tf0,next; sjmp wait; next:mov th0,#;重装 mov tl0,# ;初值 - - ;处理程序 - - slmp wait,采用中断方式时的一般编程模式: org 0000h sjmp main org 000bh (001bh) ljmp t0fw org 0030h main: mov tmod,# mov th0,# mov tl0,# setb et0 ; setb ea ; - ;置其他初值 setb tr0 ; sjmp $ t0fw: - ; 重装初值 - ;处理程序 - reti,二、定时/计数器计数应用举例 1. 定时模式的应用 例4-3: 利用定时/计数器定时产生周期信号。要求用定时器t0定时,在p1.7引脚上输出周期为50hz的方波。设晶振频率为12mhz。 解:1)按题意分析:方波周期t=1/50=20ms,可用t0方式1定时10ms,使p1.7每隔10ms取反一次,即可得到周期为20ms的方波。设t0工作在方式1,由软件启动。 2)tmod控制字为 0000 0001 b 3)初值计算:fosc=12mhz,机器周期为1s。 初值216-10103/1=65536-10000=55536=d8f0h, 即有th0=d8h,tl0=f0h。,cpl p1.7 ; 定时处理,p1.7取反输出方波,例:要求用定时器t1定时,在p1.0引脚上输出如图方波。设晶振频率为12mhz。,解:1)按题意分析:可用t1为16位定时器模式(方式1)定时1ms。判断p1.0为高电平时,溢出二次才对端口取反。 2)tmod控制字为 0001 0000 b 3)初值计算:fosc=12mhz,机器周期为1s。 初值216 - 12 106 103 / 12= 65536-1000=64536=fc18h, 即 th1=fch,tl1=18h。,若采用查询法,编程如下:

温馨提示

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

评论

0/150

提交评论