1 / 113

第 4 章 中断系统和定时 / 计数器

第 4 章 中断系统和定时 / 计数器. 本章学习目标 : 理解中断概念,能正确描绘单片机中断响应过程 熟记 80C51 单片机的 5 个中断源及其中断入口地址 能按要求正确设置特殊功能寄存器 IE 、 IP 、 TCON 、 SCON 和 TMOD 熟悉中断优先控制的方法 能正确描绘定时 / 计数器的 4 种工作方式,重点掌握方式 1 、方式 2 的应用 学会定时 / 计数初值的计算 能读懂教材中的控制实例,学会编写同等难度的中断、定时 / 计数程序. 4.1 中断系统. 4.1.1 中断系统的基本概念. 1. 中断的概念

kenaz
Télécharger la présentation

第 4 章 中断系统和定时 / 计数器

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第4章 中断系统和定时/计数器 • 本章学习目标 : • 理解中断概念,能正确描绘单片机中断响应过程 • 熟记80C51单片机的5个中断源及其中断入口地址 • 能按要求正确设置特殊功能寄存器IE、IP、TCON、SCON和TMOD • 熟悉中断优先控制的方法 • 能正确描绘定时/计数器的4种工作方式,重点掌握方式1、方式2的应用 • 学会定时/计数初值的计算 • 能读懂教材中的控制实例,学会编写同等难度的中断、定时/计数程序

  2. 4.1 中断系统 4.1.1中断系统的基本概念 1.中断的概念 (1)现实生活中的中断: 中断请求 某人看书——某人正在处理一件事A 电话铃响——出现另一件须立即解决的事B 暂停看书——中止A 书中作记号——记录断点,便于接续 电话谈话——处理B 继续看书——继续A的工作 保护断点 中断响应 中断返回

  3. 先接电话,然后再继续看书,这样效率最高! 4.1.1中断系统的基本概念 中断原因: 一个人不可能同时完成两项任务。 单片机 只有一个CPU,一旦面临多任务,它也会 中断吗?

  4. 事件A 事件B的处理过程 事件B 什么是中断 ? 中断过程 中断请求→中断响应→中断服务→中断返回 (2)单片机中的中断 • CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生或中断请求); • CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); • 待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回)。

  5. 2.中断技术的应用 • 并行处理 CPU可以与多台外设并行工作,并分时与他们进行信息交换,提高了CPU的工作效率。 • 实时控制 单片机应用系统可能随机请求CPU提供服务。有了中断系统,CPU就可以立即响应并予以处理。 • 故障处理 单片机系统在工作时可能会出现一些突发故障,如电源断电,存储器出错,程序执行错误(如除数为0)等,一旦出现故障,CPU就可及时转去执行故障处理程序,而不必停机。

  6. 中断由谁来实施? 3.中断系统 中断功能由中断系统来执行。 为实现中断功能而配置的硬件和编写的软件就是中断系统。

  7. 图4-1 中断系统的结构框图

  8. 那些部件可以向CPU申请中断呢? 4.1.2 中断源——中断的申请方 能够向CPU发出中断申请的部件称为中断源。 80C51单片机有5个中断源。见下表

  9. 4.1.3 中断控制——中断的控制“工具” 单片机通过对4个特殊功能寄存器实施中断控制: • 中断允许寄存器IE • 中断优先级寄存器IP • 定时/计数器及外部中断控制寄存器TCON • 串口控制寄存器SCON

  10. 1.中断允许寄存器IE • 功能: 控制单片机是否接受中断申请,以及接受哪一种中断申请 • 字节地址: A8H 其格式和每位的含义如下:

  11. 图4-2 IE的格式

  12. 如何对IE进行设置? IE的设置方法: 由位操作指令或数据传送指令实现。 例:同时打开外部中断0和串行口中断,可设置为: 法1:MOV IE,#10010001B 法2:SETB EA SETB ES SETB EX0 〈想一想〉还可以怎样实现?

  13. 2.中断优先级寄存器IP • 功能: 对80C51单片机进行高级别或低级别中断的设置, • IP的字节地址: B8H 格式和每位的含义如下:

  14. 图4-3 IP的格式

  15. 举例 例:令串行口为高优先级中断,外部中断0为低优先级中断。 设置方法: 法1:MOV IE,#10010001B;开中断 MOV IP,#00010000B;设优先级 法2:MOV IE,#10010001B SETB PS 说明:此时串口的优先级高于外部中断0的优先级

  16. 如果几个同级别的中断源同时申请中断,CPU如何响应?如果几个同级别的中断源同时申请中断,CPU如何响应? 答案: 此时CPU按自然优先级顺序确定该响应哪个中断请求。 注意: 自然优先级由硬件决定,用户不能更改。排列见表4-2

  17. 表4-2 中断入口地址及自然优先级

  18. 3.定时/计数器及外部中断控制寄存器TCON • 可设置外部中断申请的形式:低电平触发还是下降沿触发 • 控制定时/计数器的计时开始或停止 • 是各中断源(串口中断除外)是否申请中断的标志位 • 功能: • 字节地址:88H 格式如下,各位含义见表4-3

  19. 表4-3 TCON的功能说明

  20. 续表4-3

  21. 例 1 编程设定TCON为低电平触发的高优先级中断源。 分析: 这是典型的中断初始化问题,方法一般如下: 1)对TCON的相关位赋值 2)设定所用中断源的优先级——赋值IP 3)开中断——置位IE

  22. 例 1 解:法1:CLR IT1 SETB PX1 SETB EX1 SETB EA 法2:CLR IT1 MOV IP,#04H MOV IE,#84H

  23. 4.串口控制寄存器SCON • 功能: 只有D1和D0位用于中断,作为串口中断请求标志,即串口中断请求寄存器 • 字节地址: 98H 格式如下:

  24. RI为接收中断请求标志位。 当串口接收完一帧串行数据时,RI自动置1; CPU响应中断后,用软件对RI清0。 TI为串行口发送中断请求标志。 当串口发送完一帧串行数据时,TI自动置1,请求中断。CPU响应中断后,由软件对TI清零。 其他几位的含义及用法见第5章。

  25. 4.1.4 中断响应 1.中断响应条件 • 无同级或高级中断正在服务 • 有中断请求信号 • 相应的中断源已打开,即EA=1,中断源对应中断允许位也为1。 • 当前的指令周期已经结束 • 如果当前指令为RETI或访问IE和IP的指令,至少还要再执行完一条指令。

  26. 2.中断响应过程 将当前寄存器内容压入堆栈,如 PUSH ACC 在中断服务程序中实现,解决单片机中断后要干什么的问题。 把保存在堆栈中的寄存器内容取出,送回原来的位置,如POP ACC 图4-4中断响应过程

  27. 当CPU正在执行中断服务程序时,又有新的中断源发出中断申请,响应吗?当CPU正在执行中断服务程序时,又有新的中断源发出中断申请,响应吗? 情况1: 同级或低级中断源申请中断,CPU不予理睬 情况2: 高级别中断源申请中断,CPU就要响应。 ☆4.1.5中断嵌套 答案:CPU要进行分析判断,决定是否响应: 待执行完高级别中断服务程序后再转回低级中断服务程序继续执行,这就是中断嵌套。

  28. 图4-5 二级中断嵌套的执行过程

  29. 4.2 中断的应用 4.2.1中断应用指导 • 软件构成:主程序+中断服务程序 • 程序编制的关键点: 要对题目要求进行精确分析,明确哪些环节应该安排在主程序中,哪些环节应该安排在中断服务程序中,再分别编制主程序和中断服务程序。 1.中断系统的程序编制

  30. 1.中断系统的程序编制 (1)编制主程序 此部分必须编写 • 第一部分:主程序初始化 功能: • 用于设置堆栈位置; • 定义触发方式(低电平触发或脉冲下降沿触发) • 对IE和IP赋值等; • 第二部分:须由主程序完成的其它功能。

  31. 说明: 一般在中断服务程序中涉及到关键数据的设置时应关 中断,即禁止嵌套。 1.中断系统的程序编制 (2)选择中断服务程序的入口地址。 (3)编制中断服务程序。 即明确中断服务程序的起始位置 注意1: 一般要保护断点,即保护进入中断时累加器A、进/借位标志CY和SFR的状态,并在退出中断之前将其恢复; 注意2: 必须在中断服务程序中设定是否允许再次中断(即中断嵌套),由用户对EX0(或EX1)位置位或清0决定。

  32. 2.中断应用举例——三相交流电的故障检测电路2.中断应用举例——三相交流电的故障检测电路 例2图4-6是三相交流电的故障检测电路。当A相缺电时,发光二极管LEDA 亮;当B相缺电时,发光二极管LEDB亮;当C相缺电时,发光二极管LEDC亮。 硬件特点: ①外部中断 由3个交流继电器的触点和一个或非门扩展而成; ②3个220V的交流继电器的线圈ZA、ZB、ZC分别接在A、B、C各相和交流地之间。 • 图4-6 三相交流电的故障检测电路

  33. 0 0 0 (1)检测原理 ①三相电正常情况下 3个线圈同时得电 3个常开触点全都闭合 1 不申请外部中断

  34. 1 0 0 1 (1)检测原理 ②故障情况下(假设A相掉电) 线圈ZB、ZC有电 申请外部中断,在外部中断服务程序中读取P1.0引脚状态 线圈ZA失电 常开触点ZA断开 0 常开触点ZB、ZC闭合 1 产生A相掉电状态信号送入P1.0 A相故障指示灯亮 B、C相故障指示灯不亮 在中断服务程序中对该引脚输出1

  35. (2)软件设计 ORG 0000H LJMP MAIN ;跳至主程序 ORG 0013H ;的中断入口地址 LJMP TEST ;转至中断服务程序 ORG 0100H MAIN:MOV P1,#15H;P1.0、P1.2、P1.4作输入;P1.1、P1.3、P1.5输出0 SETB EX1 ;开中断 CLR IT1 ;为低电平触发 SETB EA ;CPU开中断 SJMP $ ;等待中断 TEST: JNB P1.0,LB ;A相正常,转测B相 SETB P1.1 ;A相掉电,点亮LEDA LB: JNB P1.2,LC ;B相正常,转测C相 SETB P1.3 ;B相掉电,点亮LEDB LC: JNB P1.4,LL ;C相正常,返回 SETB P1.5 ;C相掉电,点亮LEDC LL: RETI END

  36. 4.2.2 课题与实训7 中断控制流水灯 一.实训目的 学习外部中断的基本用法 掌握中断处理程序的编程方法 二.课题要求 在程序正常运行时P1口的8个LED灯作单灯左移8次而后单灯右移7次,如此循环;中断时(即按键按下)则P1口的8个LED闪烁3次(即全亮全灭3次)。 三.背景知识 1.中断程序的设计主要涉及开中断、设定优先级,外中断还 涉及触发方式的设定。 2.在软件设计中,首先要对主程序和中断服务程序所完成的 任务进行划分。根据该课题提出的要求,在主程序中应该 完成的任务是8个LED循环左移右移;在中断服务程序中 应该完成的功能是8个LED闪烁3次。

  37. 四.硬件电路 硬件结构如图,12引脚的按键点动表示有中断请求发出。 图4-7 实训7电路

  38. 五.参考程序 ORG 0000H LJMP START ORG 0003H LJMP INT0 ORG 0100H START:MOV SP,#60H MOV IE,#81H ;开INT0中断 SETB IT0 ;INT0下降沿触发 L1: MOV A,#0FFH ;设初值 MOV R0,#8  ;设定左移八次 CLR C  ;将CY清0 L2: RLC A ;带进位位循环左移一位 MOV P1,A  ;送P1口,P1.0灯亮

  39. ACALL DELAY   ;延时0.2秒 DJNZ R0,L2  ;判断是否左移8次 MOV R0,#7  ;移动7次 L3: RRC A   ;带进位位循环右移 MOV P1,A ;送P1口 ACALL DELAY DJNZ R0,L3 ;是否右移7次? AJMP L1 ;重新开始 DELAY:MOV R5,#4 ;延时0.2秒 D1: MOV R6,#200 D2: MOV R7,#123 NOP DJNZ R7,$

  40. DJNZ R6,D2 DJNZ R5,D1 RET INT0: PUSH PSW ;保护PSW,ACC值 PUSH ACC MOV A,#00H ;使8个LED全亮 MOV R2,#6 ;闪烁3次(全亮全灭各3次) L4:MOV P1,A ;A值送出 LCALL DELAY ;延时0.2秒 CPL A ;A值取反 DJNZ R2,L4 ;闪烁3次? POP ACC ;恢复保护的A值 POP PSW ;恢复保护的PSW值 RETI ;返回主程序 END

  41. 共同点:格式相近,执行过程大体相同 中断服务程序 子程序 执行时刻是确定的,CPU只要执行LCALL、ACALL等调用指令就会转去执行子程序 中断申请往往是随机发生的。中断服务程序的发生可能是在开中断后的任意时刻,也可能不发生, 六.总结与提高 1. 总结:中断服务程序与子程序对比

  42. 2.提高 编写一个由两个中断(外部中断0、外部中断1)控制的流水灯程序。 要求: 主程序不变,中断0可使P1.0~P1.3的LED闪烁5次,中断1可使P1.4~P1.7的LED闪烁5次,设定中断1的优先级比中断0高。

  43. 4.3定时/计数器 1. 日常生活中定时、计数的例子: 如闹钟、画“正”统计选票、家用水表对水量的计数。 2 . 单片机应用系统中定时计数的需求: 如用单片机控制的打铃器、空调的定时开关、啤酒自动生产线上对酒瓶的计数装置等。 3 . 80C51单片机片内的定时/计数器: 两个16位可编程的定时/计数器:T0和T1,都能定时和对外部事件进行计数。 此外,T1还可以作为串行接口的波特率发生器。

  44. 4.3.1定时/计数器的结构 1.定时和计数的原理 (1)计数定时/计数器的实质是加1计数器(16位),其原理类似于古代用来计时的水钟: 单片机是对脉冲个数计数,计数器每接收到一个脉冲,计数值加1, 当接收满65535个脉冲后,再来一个脉冲,计数值清0表明这一轮计数结束,同时将标志位TF0或TF1置1。 16位定时/计数器的计数容量是65536 假设计满一小时需要100,000,000 滴,这称为水钟的计数容量

  45. 计数器如何能作为定时器使用呢? 单片机中的定时器和计数器其实是一个器件:计数器:是对外部发生的事件进行计数, 定时器:是对单片机内部的标准时钟脉冲进行计数。 (2)定时 单片机内部的计数器用作定时器时,是对标准的时钟进行了计数,每来一个时钟脉冲,计数器加1,只要保证计数脉冲的间隔相等,则计数值就代表了时间的流逝。

  46. 单片机内部的标准时钟脉冲是如何获得的呢? 图4-9 定时/计数器T0的结构示意图 见图4-9 ,它是由单片机的晶振经过12分频后得到。由于晶振的频率很准,所以这个时钟脉冲的时间间隔也很准。不难算出,当单片机采用12MHz的晶振时,它提供给计数器的脉冲频率是12MHz/12=1MHz,脉冲周期就是1微秒。

  47. 图4-9 定时/计数器T0的结构示意图 2.定时/计数器的结构 • 单片机内部的16位定时/计数器由高8位和低8位两个寄存器组成: • T0由TH0和TL0组成, • T1由TH1和TL1组成, 定时/计数器的计数值就存放在这里面。定时/计数器T1的结构与T0相同。

  48. 3.定时/计数值的设置 再以水钟为例,当水不断落下,下面容器中的水不断变多,最终总有一滴水使得容器完全充满。这时如果再有一滴水落下,就会发生“溢出”。与此类似,16位定时/计数器计满65536个脉冲时,也会发生溢出。 定时/计数器溢出后标志位TF0(或TF1)由0变1,由此能够引发定时中断(在中断定时方式下),这就像定时的时间一到,闹钟就会响一样。 如果采用12MHz的晶振,对应的脉冲周期是1微秒,计满65536个脉冲所对应的时间就是65.536ms。

  49. 现实生活中,如何满足计数值少于65536的需要?如牛奶包装线上24盒装箱一次。现实生活中,如何满足计数值少于65536的需要?如牛奶包装线上24盒装箱一次。 计数器初值的设置 再回到水钟的例子上去: 刚才假设下面容器滴入100,000,000滴水才会满,现在我们在开始滴水之前先放入一勺水,这样问题就解决了。 计数器的道理是一样的,只要用预置数的方法先在计数容器内存入一个初值(通常称为时间常数),如我们要计100,那就存入65436,只要再来100个脉冲,就刚好会溢出,引发中断。

  50. 说明 1. 当定时/计数器用作计数器时,通过引脚P3.4(P3.5)对外部输入脉冲计数。 2 . 定时/计数器T0(T1)启动运行后,会按设定的工作方式独立进行计数,不再占用CPU时间。当计数器T0(T1)计满溢出时,TF0(TF1)置1,向CPU发出中断请求信号。 定时器初值的设置 在主频为12MHz的情况下,每个时钟脉冲是1微秒,则计满65536个脉冲需65.536毫秒,如要定时10毫秒则存入初值55536,(10毫秒是10000微秒,需计数10000个脉冲)。可见, 定时器的定时时间长短与系统时钟和定时器初值有关。

More Related