




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/2/7,1,第5章 80c51的中断系统及定时/计数器,80c51单片机的中断系统,5.1,80c51单片机的中断处理过程,5.2,80c51单片机的定时/计数器,5.3,80c52的定时/计数器2,5.4,2019/2/7,2,5.1 80c51单片机的中断系统,5.1.1 80c51中断系统的结构,cpu进行工作a时发生了事件b,请求cpu马上处理 cpu暂时中断当前工作a,转去处理事件b 事件b处理完后,回到工作a被中断的地方继续处理a工作,中断的概念,中断源 中断请求 中断服务 中断返回 中断系统,中断的优点 利用率高 实时性强 可靠性好,2019/2/7,3,80c51中断系统的结构,5个中断源、2个优先级,2019/2/7,4,中断源,5.1.2 80c51的中断源,外部中断0(int0) 外部中断1(int1) t0溢出中断(tf0) t1溢出中断(tf1) 串行口中断(ri或ti),2019/2/7,5,触发方式设置及中断标志,电平方式(itx=0),intx引脚低电平时iex=1,响应中断后iex不自动清0(intx引脚状态)。 边沿方式(itx=1),intx引脚负跳变时iex=1,响应中断后iex自动清0。,外部中断标志ie1、ie0(用iex表示),2019/2/7,6,两种触发方式比较:,电平方式时, intx低电平必须保持到响应时,否则就会漏掉;在中断服务结束前,intx低电平必须撤除,否则中断返回之后将再次产生中断。 例,8255的中断请求线在接受读或写操作后即被复位,因此以其去请求电平触发方式的中断比较方便。,边沿方式时,采样到有效下降沿后,在iex中将锁存一个1。若cpu暂时不能响应,申请标志也不会丢失,直到响应时才清0。 例,adc0809的转换结束信号eoc为正脉冲,经反相后就可以作为80c51的intx信号 。,2019/2/7,7,溢出中断标志tf1、tf0(用tfx表示),溢出中断请求标志tfx ,tx启动后就开始由初值进行加1计数,直至最高位产生溢出使tfx=1向cpu请求中断。cpu响应中断后tfx自动清0。,scon的中断标志,ri:串口接收中断标志,响应中断时不能自动清除 ti:串口发送中断标志,响应中断时不能自动清除,2019/2/7,8,5.1.3 80c51中断的控制,中断允许控制,中断源的开放和屏蔽由ie控制(1,开放;0,禁止),ex0:外中断0允许 et0:t0中断允许 ex1:外中断1允许,et1:t1中断允许 es :串口中断允许 ea :cpu中断允许,2019/2/7,9,中断优先级控制,中断优先级由ip控制(1,高级;0,低级),px0:外中断0优先级 pt0:t0中断优先级 px1:外中断1优先级,pt1:t1中断优先级 ps :串口中断优先级,同一优先级的自然顺序: 自高至低:int0、to、int1、t1、串口。,2019/2/7,10,中断优先级遵循的原则,几个中断同时申请,先响应高级的中断 正进行的中断服务,同级或低级中断不能对其中断,但可以被高级中断所中断。,为此,中断系统内设有对应高、低2个优先级状态触发器(用户不能寻址)。 状态触发器的复位由中断返回指令reti控制。,2019/2/7,11,5.2 80c51单片机中断处理过程,5.2.1 中断响应条件和时间,中断响应条件,有中断请求 相应的中断允许位为1 cpu开中断(即ea=1),遇下面情况之一将不被响应(此间中断条件失效,中断丢失),正在处理同级或高级中断 当前查询周期不是所执行指令的最后一个机器周期 正在执行reti或访问ie或ip 的指令,2019/2/7,12,中断响应时间,中断响应至少需要3个完整的机器周期(38个)!,受阻时要附加35个机器周期(无同级或高级中断正进行),查询周期不是当前指令的最后机器周期(如mul,+3) 查询周期恰逢reti类指令(且后跟mul指令+5),2019/2/7,13,5.2.2 中断响应过程,cpu响应中断过程,将相应优先级状态触发器置1(阻断后来同级或低级中断 ) 执行硬件lcall指令(pc入栈,中断服务程序入口址送pc ) 执行中断服务程序,编写中断服务程序注意,中断服务程序入口存放指令ljmp或ajmp 现场保护与现场恢复,2019/2/7,14,5.2.3 中断返回,中断服务程序最后指令必须是reti,其功能:,将断点从堆栈弹送pc,cpu从原断点继续执行 将相应优先级状态触发器清0,恢复原来工作状态,注意,不能用ret代替reti 中断服务程序中push和pop必须成对使用,2019/2/7,15,5.2.4 中断程序举例,【例5-1】单外部中断源示例,org 0000h start:ljmp main org 0003h ljmp into org 0030h main:clr it0 ;电平 setb ea setb ex0 mov dptr,#1000h ,主程序:,2019/2/7,16,中断服务程序:,org 0200h int0:push psw push acc clr p3.0 ;由p3.0输出0 nop nop setb p3.0 mov p1,#0ffh ;置p1口为输入 mov a,p1 ;输入数据 movx dptr,a ;存入数据存储器 inc dptr ;修改数据指针,指向下一个单元 pop acc ;恢复现场 pop psw reti,2019/2/7,17,【例5-2】 多外部中断源示例,中断服务程序:,org 0003h ljmp inse0 org 0013h ljmp inse1 inse0:push psw ;xi0中断服务 push acc pop acc pop psw reti (转下页),2019/2/7,18,inse1:push psw (接上页) push acc jb p1.0,dv1 ;p1.0为1,转xi1中断服务程序 jb p1.1,dv2 ;p1.1为1,转xi2中断服务程序 jb p1.2,dv3 ;p1.2为1,转xi3中断服务程序 jb p1.3,dv4 ;p1.3为1,转xi4中断服务程序 inret:pop acc pop psw reti dv1: ;xi1中断服务程序 ajmp inret dv4: ;xi4中断服务程序 ajmp inret,2019/2/7,19,5.3 80c51单片机的定时/计数器,定时/计数器的结构,基本型:t0,定时、计数。 t1,定时、计数、串口波特率发生器。,增强型:增加了t2。见5.3.4节。,5.3.1 定时/计数器的结构和工作原理,th1、tl1 th0、tl0 tcon tmod,2019/2/7,20,定时/计数器的工作原理,实质是16位加1计数器,定时器模式时,是对内部机器周期计数。计数值乘以机器周期就是定时时间 计数器模式时,是对外部事件计数。脉冲由t0(p3.4)或t1(p3.5)引脚输入。,注意:(若计数值为n,计数初值为x) 溢出信号使tf0或tf1置1,并发出中断请求,16位时有: n=65536-x,或x=65536-n 12mhz晶振时,计数频率低于0.5mhz,2019/2/7,21,5.3.2 定时/计数器的控制,工作方式寄存器tmod,gate:门控位。gate0时,只要trx为1,就可启动定时/计数器工作;gate1时,要trx为1,定时/计数器的启动还要加上intx引脚为高电平这一条件。 c/t:模式选择位。 清0为定时模式,置1为计数方式。 m1m0:工作方式设置位。可设置四种工作方式(见下页)。,2019/2/7,22,注意:tmod不能进行位寻址,2019/2/7,23,控制寄存器tcon,tfx:tx溢出标志位。响应中断后tfx有硬件自动清0。用软件设置tfx可产生同硬件置1或清0同样的效果。 trx:tx运行控制位。置1时开始工作;清0时停止工作。trx要由软件置1或清0(即启动与停止要由软件控制)。,2019/2/7,24,5.3.3 定时/计数器的工作方式,t0有方式0、1、2、3;t1有方式0、1、2。以t0为例说明。,方式0:13位方式,2019/2/7,25,c/t=1时,则为计数模式,有: x=213-n=8192-n c/t=0时,则为定时模式,有: x=213-n=8192-n,n=t/tcy t是定时时间,tcy是机器周期时间,【例5-3】若计数个数n为2,求计数初值。 公式法计算:x81922=8190=1ffeh 求补法计算:对0 0000 0000 0010b取反加1为: 1 1111 1111 1110b(1ffeh),初值计算:,公式法,求补法 :x=对n求补,2019/2/7,26,门控位作用,当gate=0时 仅由tr0控制与门的开启。与门输出1时,控制开关接通,计数开始;,当gate=1时 与门的开启由int0和tr0共同控制。这种方式可以用来测量int0引脚上正脉冲的宽度。,注意:方式0的计数初值高8位和低5位确定麻烦 ,实际应用中常由16位的方式1取代。,2019/2/7,27,方式1:16位方式,x=216-n=65536-n 计数范围:165536 计数初值要分成2个字节分别送入th0、tl0,2019/2/7,28,【例5-4】若要求定时器t0工作于方式1,定时时间为1ms,当晶振为6 mhz时,求送入th0和tl0的计数初值各为多少?应怎样送入th0和tl0?,由于晶振为6 mhz,所以机器周期tcy为2s,因此: n=t/tcy=110-3/210-6500 x216-n65536-50065036fe0ch,也可以利用以下2条指令完成: mov tl0,#(65536-500)mod 256 ;余数为计数初值的低字节 mov th0,#(65536-500)/256 ; 商为计数初值的高字节,用传送指令分别将feh送入th0中,0ch送入tl0中即可。,2019/2/7,29,方式2:8位自动重装方式,x=28-n=256-n 计数范围:1256 特别适合与脉冲信号发生器,2019/2/7,30,方式3:(仅t0有此方式,t1的方式3将停止计数),tl0进行8位定时/计数 th0进行8位定时(t1方式2时,可出借tr1、tf1),2019/2/7,31,5.3.4 定时/计数器用于外部中断扩展,例:用t0扩展一个外部中断源。将t0设置为计数器方式,按方式2工作,th0、tl0的初值均为0ffh,t0允许中断,cpu开放中断。其初始化程序如下: mov tmod,#06h ;置t0为计数器方式2 mov tl0,#0ffh ;置计数初值 mov th0,#0ffh setb tr0 ;启动t0工作 setb ea ;cpu开中断 setb et0 ;允许t0中断 ,t0外部引脚上出现一个下降沿信号时,tl0计数加1,产生溢出,将tf0置1,向cpu发出中断请求 ,2019/2/7,32,5.3.5 定时/计数器应用举例,初始化程序应完成: 对tmod赋值,以确定t0和t1的工作方式; 求初值,并写入th0、tl0或th1、tl1; 中断方式时,要对ie赋值,开放中断; 使tr0或tr1置位,启动定时/计数器工作。,2019/2/7,33,计数应用,【例5-5】有一包装流水线,产品每计数24瓶时发出一个包装控制信号。试编写程序完成这一计数任务。用t0完成计数,用p1.0发出控制信号。,确定方式字: t0在计数的方式2时: m1m0=10,gate=0 ,c/t=1 方式控制字为06h,求计数初值x: n=24 x=256-24=232=e8h 应将e8h送入th0和tl0中,2019/2/7,34,org 0000h ljmp main org 000bh ljmp dvt0 org 0100h main:mov tmod,#06h ;置t0计数方式2 mov th0,#0e8h;装入计数初值 mov tl0,#0e8h setb et0 ;t0开中断 setb ea ;cpu开中断 setb tr0 ;启动t0 sjmp $ ;等待中断,dvt0:setb p1.0 nop nop clr p1.0 reti end,主程序,中断服务程序,2019/2/7,35,定时应用,定时时间较小时(小于65ms)。晶振为12 mhz时,tcy为1s。可直接采用方式1完成定时任务。,【例5-6】利用定时/计数器t0的方式1,产生10ms的定时,并使p1.0引脚上输出周期为20ms的方波,采用中断方式,设系统的晶振频率为12 mhz。,确定方式字: t0在定时的方式1时: m1m0=01,gate=0 ,c/t=0 方式控制字为01h,求计数初值x: tcy为1s n=10ms/1s=10 000 x=65536-10000=d8f0h 应将d8送th0, f0h送tl0,2019/2/7,36,org 0000h ljmp main org 000bh ljmp dvt0 org 0100h main:mov tmod,#01h ;置t0方式1 mov th0,#0d8h;装入计数初值 mov tl0,#0f0h setb et0 ;t0开中断 setb ea ;cpu开中断 setb tr0 ;启动t0 sjmp $ ;等待中断,dvt0:cpl p1.0 mov th0,#0d8h mov tl0,#0f0h reti end,主程序,中断服务程序,2019/2/7,37,采用软件查询方式完成的源程序如下:,org 0000h ljmp main ;跳转到主程序 org 0100h ;主程序 main:mov tmod,#01h ;置t0工作于方式1 loop:mov th0,#0d8h ;装入计数初值 mov tl0,#0f0h setb tr0 ;启动定时器t0 jnb tf0,$ ;tf0=0,查询等待 clr tf0 ;清tf0 cpl p1.0 ;p1.0取反输出 sjmp loop end,2019/2/7,38,定时时间较大时(大于65ms)。实现方法:一是采用1个定时器定时一定的间隔(如20ms),然后用软件进行计数;二是采用2个定时器级联,其中一个定时器用来产生周期信号(如20ms为周期),然后将该信号送入另一个计数器的外部脉冲输入端进行脉冲计数。,【例5-7】编写程序,实现用定时/计数器t0定时,使p1.7引脚输出周期为2s的方波。设系统的晶振频率为12mhz。,确定方式字: t0在定时的方式1时: m1m0=01,gate=0 ,c/t=0 方式控制字为01h,求计数初值x: tcy为1s n=20ms/1s=20 000 x=65536-20000=4e20h 应将4e送th0, 20h送tl0,采用定时20ms,然后再计数50次的方法实现,2019/2/7,39,org 0000h ljmp main org 000bh ljmp dvt0 org 0030h main:mov tmod,#01h;置t0方式1 mov th0,#4eh ;装入计数初值 mov tl0,#20h ;首次计数值 mov r7,#50 ;计数50次 setb et0 ;t0开中断 setb ea ;cpu开中断 setb tr0 ;启动t0 sjmp $ ;等待中断,dvt0:djnz r7,nt0 mov r7,#50 cpl p1.7 nt0:mov th0,#4eh mov tl0,#20h setb tr0 reti end,主程序,中断服务程序,2019/2/7,40,门控位的应用,【例5-8】 测量int0引
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 七年级生物上册 1.1.1《我们周围的生物》教学设计 (新版)苏教版
- 初中英语牛津版 (深圳&广州)七年级上册(2012秋审查)Unit 5 visiting the moon公开课第2课时教案
- 二年级道德与法治上册 第一单元 1《暑假中的一天》教学设计2 浙教版
- 五 分数除法 分数除法(二) 第2课时 教案
- 餐饮管理培训课件
- 法律法规培训
- 内蒙古兴安盟乌兰浩特市九年级历史下册 第7课 世界反法西斯战争的胜利教学设计 新人教版
- 七年级信息技术上册 第五课 认识新同学教学设计
- 七年级英语下册 Unit 6 I'm watching TV Section A第1课时(1a-2d)教学设计 (新版)人教新目标版
- 人教版历史与社会七年级下册第八单元第三课第一框《中华文明的曙光》教学设计
- 2025年河南工业和信息化职业学院单招职业技能测试题库必考题
- 瑞吉欧幼儿教育
- 2025年中国人寿招聘笔试笔试参考题库附带答案详解
- 中国输电线路在线监测系统行业发展状况及前景规模调查报告2025-2030年
- 第16课《有为有不为》公开课一等奖创新教学设计
- 2025年河南林业职业学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 消防安全监督与检查要点
- 【MOOC】《思想道德与法治》(东南大学)章节中国大学慕课答案
- 《慢性阻塞性肺病的》课件
- 小学一年级数学两位数加减一位数同步练习题带答案
- 《新闻摄影之我见》课件
评论
0/150
提交评论