单片机教案(第5章输入输出中断)_第1页
单片机教案(第5章输入输出中断)_第2页
单片机教案(第5章输入输出中断)_第3页
单片机教案(第5章输入输出中断)_第4页
单片机教案(第5章输入输出中断)_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、第五章 输入/输出与中断5-1 输入/输出信息的传送方式一、输入/输出的概念: 输入/输出(I/O)是指计算机与外部设备(键盘、显示器、指示灯、打印机等)进行信息交换的过程。二、输入/输出信息的种类:1、数据信息:单片机与输入/输出设备之间进行数据交换的信息。2、状态信息:表示外部设备是否准备好的信息。(没准备好,不能输入/输出)3、控制信息:控制外部设备进行操作的信息。(读操作、写操作等)三、输入/输出设备与CPU的连接 CPU与外部设备不能直接相连,必须通过I/O接口电路才能实现信息的交换。1、连接框图: CPU与I/O口的连接: CPU与I/O口是通过系统总线连接的。系统总线由三总线构成

2、(数据总线、地址总线、控制总线)。 数据总线:实现CPU与外设之间的数据传送的双向总线。 地址总线:传送CPU发出的地址信息的单向总线。 控制总线:传送CPU发出的控制信息或外设发回的状态信息的双向总线。 I/O口与I/O设备的连接: I/O口通过数据线、状态线和控制线直接与I/O设备相连接。2、 I/O接口电路的功能: 锁存功能: 接口电路使用数据锁存器可以解决CPU与I/O设备的速度匹配问题。 隔离作用: 将I/O设备与数据总线隔离(不用时为高阻态,用时则直通),避免干扰,使CPU能高速利用数据总线。 转换作用: 电平大小转换:将I/O设备的信号电压与CPU的电压统一; 电能方式转换:将I

3、/O设备所需电能的形式转换成与CPU统一的形式; 串、并行转换:将I/O设备的串行方式转换成与CPU统一的并行方式。 联络作用: 在I/O设备准备就绪时,通过I/O口向CPU进行联络,CPU才能与外设交换信息,可避免CPU的空等,提高了CPU的工作效率。 单片机内部有并行接口(P0、P1、P2、P3)和串行接口。当系统需要扩充而接口不够用时,则要外接并行接口电路,外接的接口电路也要有上述功能。四、CPU对外设的两种编址方式 CPU与主存储器交换信息是按地址进行的,同样CPU与接口交换信息也要求接口有一个唯一的地址,我们称这个地址为端口地址。换句话说:是CPU与端口交换信息。给端口编址有两种方式

4、:1、端口与主存储器单元统一编址 把主存储器的一部分地址空间分给端口,则每一个端口就成了一个存储单元。端口占用了主存容量,但减少了新设置的访问端口指令。 MCS-51单片机就采取这种对端口的编址方式。2、端口单独编址 端口单独编址,不占主存地址空间,但必须设置专门的指令来访问端口。若对端口采用8位二进制数编码,可有256个端口地址,若采用16位二进制数编码,可有65536个端口地址。所以常用于比较大的计算机系统。五、CPU与外设之间的数据传送方式一共有三种方式:无条件、查询和中断传送方式。1、 无条件传送方式: 在此传送方式中,CPU始终认为外设时刻都处于“待命”状态,不需要与外设交换状态信息

5、,直接将信息传送给外设(如发光二极管、数码显示器等外设)。缺点是易出错,能应用的场合少。2、 查询传送方式:在此传送方式中,CPU首先要查询外设是否准备就绪?若准备好,CPU才可以访问外设进行数据交换。其过程见右框图:优点:通用性好,可靠性高。缺点:CPU的等待时间太长,(有的外设,工作速度极慢)效率低,且在等待的期间,CPU不能进行其它的工作。3、 中断传送方式:在此传送方式中,CPU不对外设进行查询,当外设需要进行数据传送且已准备就绪时才告知CPU。这时CPU接到请求后,中断原有的程序,转去与外设传送数据。数据传送完毕后,CPU再回到原有的程序执行。优点:可以避免查询等待时间,提高CPU的

6、利用率,应用价值极高。5-2 中断的概念中断概念(重点)MCS-51中断系统(重点)外部中断触发方式选择(重点)多外部中断源设计(了解、自学)1. 有关中断的概念 什么是中断,我们从一个生活中的例子引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。仔细研究一下生活中的中断,对于我们学习单片机的中断也很有好处。第一、什么可经引起中断,生活中很多事件可以引起中断:有人按了门铃了,电话铃响了,你的闹钟闹响了,你烧的水开了等等诸如此类的事件,我们把可以引起中断的称之为中断源,

7、单片机中也有一些可以引起中断的事件,8051中一共有5个:两个外部中断,两个计数/定时器中断,一个串行口中断。第二、中断的嵌套与优先级处理:设想一下,我们正在看书,电话铃响了,同时又有人按了门铃,你该先做那样呢?如果你正是在等一个很重要的电话,你一般不会去理会门铃的,而反之,你正在等一个重要的客人,则可能就不会去理会电话了。如果不是这两者(即不等电话,也不是等人上门),你可能会按你通常的习惯去处理。总之这里存在一个优先级的问题,单片机中也是如此,也有优先级的问题。优先级的问题不仅仅发生在两个中断同时产生的情况,也发生在一个中断已产生,又有一个中断产生的情况,比如你正接电话,有人按门铃的情况,或

8、你正开门与人交谈,又有电话响了情况。考虑一下我们会怎么办吧。第三、中断的响应过程:当有事件产生,进入中断之前我们必须先记住现在看书的第几页了,或拿一个书签放在当前页的位置,然后去处理不同的事情(因为处理完了,我们还要回来继续看书):电话铃响我们要到放电话的地方去,门铃响我们要到门那边去,也说是不同的中断,我们要在不同的地点处理,而这个地点通常还是固定的。计算机中也是采用的这种方法,五个中断源,每个中断产生后都到一个固定的地方去找处理这个中断的程序,当然在去之前首先要保存下面将执行的指令的地址,以便处理完中断后回到原来的地方继续往下执行程序。具体地说,中断响应可以分为以下几个步骤:1、保护断点,

9、即保存下一将要执行的指令的地址,就是把这个地址送入堆栈。2、寻找中断入口,根据5个不同的中断源所产生的中断,查找5个不同的入口地址。以上工作是由计算机自动完成的,与编程者无关。在这5个入口地址处存放有中断处理程序(这是程序编写时放在那儿的,如果没把中断程序放在那儿,就错了,中断程序就不能被执行到)。3、执行中断处理程序。4、中断返回:执行完中断指令后,就从中断处返回到主程序,继续执行。究竟单片机是怎么样找到中断程序所在位置,又怎么返回的呢?我们稍后再谈。了解了上述中断的过程,就不难解中断响应的条件了。在下列三种情况之一时,CPU将封锁对中断的响应:1CPU正在处理一个同级或更高级别的中断请求。

10、 2现行的机器周期不是当前正执行指令的最后一个周期。我们知道,单片机有单周期、双周期、三周期指令,当前执行指令是单字节没有关系,如果是双字节或四字节的,就要等整条指令都执行完了,才能响应中断(因为中断查询是在每个机器周期都可能查到的)。 3当前正执行的指令是返回批令(RETI)或访问IP、IE寄存器的指令,则CPU至少再执行一条指令才应中断。这些都是与中断有关的,如果正访问IP、IE则可能会开、关中断或改变中断的优先级,而中断返回指令则说明本次中断还没有处理完,所以都要等本指令处理结束,再执行一条指令才可以响应中断。 2、中断响应过程CPU响应中断时,首先把当前指令的下一条指令(就是中断返回后

11、将要执行的指令)的地址送入堆栈,然后根据中断标记,将相应的中断入口地址送入PC、PC是程序指针,CPU取指令就根据PC中的值,PC中是什么值,就会到什么地方去取指令,所以程序就会转到中断入口处继续执行。这些工作都是由硬件来完成的,不必我们去考虑。这里还有个问题,大家是否注意到,每个中断向量地址只间隔了8个单元,如00300B,在如此少的空间中如何完成中断程序呢?很简单,你在中断处安排一个LJMP指令,不就可以把中断程序跳转到任何地方了吗?中断程序完成后,一定要执行一条指令RETI,执行这条指令后,CPU将会把堆栈中保存着的地址取出,送回PC,那么程序就会从主程序的中断处继续往下执行了。注意:C

12、PU所做的保护工作是很有限的,只保护了一个地址,而其它的所有东西都不保护,所以如果你在主程序中用到了如A、PSW等,在中断程序中又要用它们,还要保证回到主程序后这里面的数据还是没执行中断以前的数据,就得自己保护起来。一、 中断的定义1、中断: 指计算机在执行程序的过程中, 由于系统内、外的某种原因使其暂时中止原程序的执行转而为突发事件服务,在处理完成后再返回原程序继续执行。这个过程叫中断。2、中断系统:能实现中断功能的系统叫中断系统。3、中断源: 申请中断请求的来源叫中断源。4、断点: 中断处的地址。二、引起中断的原因 即中断源来自何处。一般有:外部I/O设备(如打印机)、定时时钟、系统故障(

13、如掉电)、程序执行错误(如除数为0)、多机通讯等。三、为什么要使用中断1、提高工作效率2、便于各种环境下的实时管理(可以实时现场测控各种参数、信息)3、便于故障的发现和处理(可以随时监测系统内部的运行情况,还可自行诊断故障)。四、中断系统的功能1、 能实现中断响应当某个中断源申请中断时,CPU应能决定是否响应该中断,如果可以响应,则应能够保护现场(断点地址),程序转到中断服务程序的入口地址去。2、 能实现中断返回当中断系统执行完中断服务程序并遇到RETI指令时,自动取出保存在堆栈中的断点地址,返回到原程序断点处执行原程序。3、 中断优先级的排队一台计算机可能有多个中断源同时要求中断,则:CPU

14、应能够找到优先级别最高的中断源,并响应它的中断请求。中断结束后再响应级别稍低的中断请求。4、 实现中断嵌套中断嵌套是指计算机在响应并执行某一中断源的中断请求并为其服务时,再去响应更高级别的中断源的中断请求,而暂时中止原中断服务程序的执行。等到处理完更高级别的中断服务程序后,再接着为本中断源服务。5-3 MCS-51单片机的中断系统 MCS-51单片机有5个中断源,两个优先级(实现两级中断嵌套)一、中断系统的内部结构(硬件部分)1、 中断源与中断请求信号MCS-51系列单片机有5个中断源,这5个中断源中又可以分为2个外部中断源、2个定时/计数中断源和1个串行口中断源。 外部中断源: 外部中断0(

15、):输入的中断信号引入CPU的脚(P3.2)。 外部中断1():输入的中断信号引入CPU的脚(P3.3)。 它们的中断请求有两种信号触发方式:(A)低电平触发方式:(静态方式)CPU在每个机器周期的S5P2时刻都要对(P3.2)/(P3.3)这两个引脚的电平采样,若采得为低电平,则表示为有效的中断信号。(B)下降沿触发方式:(动态方式) CPU在每个机器周期的S5P2时刻都要对(P3.2)/ (P3.3)这两个引脚的电平采样,若相继的两次采样中为前高后低,则表示中断信号有效。 定时器/计数器中断:(内部中断) 定时器/计数器中断0(T0):(A) 作定时器使用时,其中断信号来自于CPU内部的定

16、时脉冲;(B) 作计数器使用时,其中断信号来自于CPU的T0(P3.4)引脚。启动T0后,每来一个机器周期或在T0引脚上每检测到一个脉冲信号时,计数器就加1一次,当计数器的值从全1变为全0时,就向CPU申请中断。 定时器/计数器中断1(T1):原理同上,唯一区别是作计数器使用时,其信号取自T1。 串行口中断:(内部中断) 串行发送中断TX:每当串行口发送完一组串行数据时,就产生一个中断请求。 串行接收中断RX:每当串行口接收完一组串行数据时,就产生一个中断请求。2、 中断控制 在MCS-51型单片机中,有一些特殊功能寄存器专门用来对中断信号进行锁存、屏蔽、优先级控制。 定时控制寄存器(TCON

17、):寄存器地址为88H,是可以位寻址的特殊功能寄存器,其位地址为88H8FH。 与中断有关的共有6位标志。D7D6D5D4D3D2D1D08FH8EH8DH8CH8BH8AH89H88HTCON(88H)TF1TF0IE1IT1IE0IT0(寄存器地址及位地址见下表)定时控制寄存器TCON既是T0/T1的开启和关闭的寄存器,同时也锁存T0/T1及外部中断0()/外部中断1()的中断标志。 IE0/IE1外部中断请求标志位:当CPU在/引脚上采样到有效中断请求信号时,由硬件电路将对应位置1。 IT0/IT1外部中断信号请求方式位:若为1,则表示对应的外部中断信号为脉冲下降沿触发方式,反之为低电平

18、触发方式。 TF0/TF1定时器/计数器溢出中断请求标志位:若为1,则表示对应的定时/计数器的值已由全1变为全0,正在向CPU申请中断。反之则没有。 串行口控制寄存器(SCON)寄存器地址为98H,是可位寻址的特殊功能寄存器,其位地址为98H9FH。(寄存器地址及位地址见下表) 与中断有关的标志只有2位。D7D6D5D4D3D2D1D09FH9EH9DH9CH9BH9AH99H98HSCON(98H)TIRI TI串行口发送中断请求标志位: 每当串行口发送完一个字符后,由硬件将该位置1。在转向中断服务程序后由软件将该位清0。 RI串行口接收中断请求标志位: 每当串行口接收完一个字符后,由硬件将

19、该位置1。在转向中断服务程序后由软件将该位清0。 由于发送中断和接收中断共用一个中断源,所以它们通过“或门”后进入串行口控制寄存器(SCON)。 中断允许控制寄存器(IE):寄存器地址为0A8H,是可位寻址的特殊功能寄存器,其位地址为0A8H0AFH。对中断源的开启或禁止均由下面某一位控制。(寄存器地址及位地址见下表) 与中断有关的标志有6位。D7D6D5D4D3D2D1D00AFH0AEH0ADH0ACH0ABH0AAH0A9H0A8HIE(0A8H)EAESET1EX1ET0EX0 EA中断总允许控制位:若EA=1,所有中断允许全都开放,至于是否中断则由各中断控制位来决定;若EA=0,所有

20、中断允许请求被禁止。 ES串行中断允许位: 若ES=1。允许串行口中断;若ES=0,禁止串行口中断。 EX0/EX1外部中断0()/外部中断1()中断允许位: 若EX0/EX1=1,则各自对应的外部中断源允许申请中断;若EX0/EX1=0,则各自对应的外部中断申请被禁止。 ET0/ET1定时/计数器(T0/T1)中断允许控制位: 若ET0/ET1=1,则各自对应的定时/计数器允许申请中断;若ET0/ET1=0,则各自对应的定时/计数器不能申请中断。 中断优先级控制寄存器(IP)寄存器地址为0B8H,是可位寻址的特殊功能寄存器,其位地址为0B8H0BFH。(寄存器地址及位地址见下表) 与中断优先

21、级有关的标志有5位。D7D6D5D4D3D2D1D00BFH0BEH0BDH0BCH0BBH0BAH0B9H0B8HIP(0B8H)PSPT1PX1PT0PX0MCS-51单片机有两个中断优先级,它们对于每一个中断源都可以编程为 高优先级和低优先级,以实现中断嵌套。 PX0中断优先级设定控制位: 若PX0=1,则外部中断0被设定为高优先级中断;反之就是低优先级中断。 PT0T0中断优先级设定控制位: 若PT0=1,则定时器/计数器中断0被设定为高优先级中断;反之就是低优先级中断。 PX1中断优先级设定控制位: 若PX1=1,则外部中断1被设定为高优先级中断;反之就是低优先级中断。 PT1T1中

22、断优先级设定控制位: 若PT1=1,则定时器/计数器中断1被设定为高优先级中断;反之就是低优先级中断。 PS串行口中断优先级设定控制位: 若PS=1,则串行口被设定为高优先级中断;反之就是低优先级中断。 MCS-51单片机复位后,IP被全部清0,即全部设置为低优先级中断。 MCS-51单片机对中断优先级的控制原则 低优先级中断请求不得打断高优先级的中断服务;但高优先级中断请求可以打断低优先级的中断服务。 同级中断请求不得打断同级的中断服务。 若有多个同级中断源同时申请中断,则CPU按下列顺序由高向低响应:二、中断响应与中断返回1、 中断响应条件 MCS-51单片机必须满足下面四个条件才能响应中

23、断: 首先必须要有中断源的中断请求; 没有同级或高级的中断在服务; 中断允许控制寄存器IE的总控制位EA=1,且后面相应的各中断允许位也为1; 现行指令执行完的最后一个机器周期。2、 中断响应与中断返回过程(CPU在响应中断时,一般要做四项工作:) 保存断点: CPU响应中断后的第一步,就是由硬件将程序计数器PC当前的内容(断点地址)压入堆栈保护起来。 取中断矢量:MCS-51单片机有5个中断源,分别对应5个中断矢量地址(中断子程序的入口地址)。如下所示:中断源外部中断0()定时/计数器T0中断外部中断1()定时/计数器T1中断串行口中断中断矢量地址0003H000BH0013H001BH00

24、23H取中断矢量就是CPU将对应的中断矢量地址送入PC,使程序转到这些中断矢量对应的单元去。而这些对应的单元里存放的是无条件转移指令LJMP或AJMP,然后执行中断服务程序。(其过程类似转子程序) 我们可以将中断服务程序安排到程序存储器的任何位置。 执行中断服务程序及中断返回(其过程又分为四步:) 保护现场: 把中断服务程序中将要使用的有关寄存器内容(主程序的内容)全部进栈保存,因为在执行中断服务程序时有可能会改变这些寄存器中的内容。 进行中断处理: 根据中断源的要求,进行具体的服务操作(执行中断服务程序)。 恢复现场:将压栈的内容再反弹回给原来的寄存器,恢复断点时各寄存器的内容。 中断返回:

25、 由中断返回指令RETI来完成。将堆栈中保存的断点地址反弹回给PC,使程序回到原断点处,继续执行原来的程序。(原程序称主程序,中断服务程序也称为中断服务子程序) 中断结束后各中断请求标志位的清除: 能自动清除的标志位:(TCON中的标志位)定时/计数器溢出中断请求标志位TF0和TF1;下降沿触发下的外部中断请求标志位IE0/IE1。 用户用软件清除的标志位:(SCON中的标志位) 串行口的发送、接收中断请求标志位TI和RI。(用指令CLR TI或CLR RI来完成) 用户用外加硬件电路清除的标志位: 低电平触发下的外部中断请求标志位IE0和IE1。因为CPU无法直接干预外电路(会造成一次申请多

26、次响应的情况),所以在引脚处用硬件电路(再配合相应的软件)来撤消外电路过期的中断请求。低电平触发后的中断标志位恢复电路 在中断服务程序中加两条指令:ORL P1,#01H ;ANL P1,#0FEH 1信号输出给D触发器的S端。将Q端直接置1;(清除了标志位)为0,D触发器的Q端又由D来控制。5-4 MCS-51单片机的中断应用实例将MCS-51型单片机中断系统初始化。 所谓中断系统初始化,就是指用户对中断控制的相关特殊功能寄存器中各有关控制位进行赋值。其步骤为: 对于外部中断应设定中断请求信号形式(低电平/下降沿触发); 设定所允许中断的中断源; 设定所用中断源的中断优先级; 将总中断允许标

27、志EA置位; 对于定时/计数器中断应设定工作方式(定时或计数方式)。后面介绍例1 试编程设定:外部中断源为低电平触发的高优先级中断源。方法一 采用位操作指令来对中断系统进行初始化。CLR IT1 ;将TCON中“外部中断信号请求方式位IT1”(8AH)置0,即:设为低电平触发方式。SETB EX1;将IE中“外部中断1中断允许位EX1”(0AAH)置1,即:设外部中断源为允许中断。SETB PX1;将IP“外部中断1优先级设定位PX1”(0BAH)置1,即:设外部中断源为高优先级中断源。SETB EA ;将IE“中断允许总控制位EA”(0AFH)置1, 即:将中断允许总控制位开启,让上面的设置

28、全部生效。方法二 采用字节传送指令来对中断系统进行初始化MOV TCON,#0FBH;将1111 1011B送入TCON定时控制寄存器 即:设为低电平触发方式MOV IP,#04H ;将0000 0100B送入IP中断优先级控制寄存器, 即:设外部中断源为高优先级中断源MOV IE,#84H ;将1000 0100B送入IE中断允许控制寄存器 即:设外部中断源为允许中断,并将中断允许总控制位开启,让上面的设置全部生效例2 试编程实现MCS-51型单片机单步工作。其硬件电路如下图所示。设计要求 利用外部中断来实现:每按一次按键执行一条指令主程序 (中断系统初始化)CLR IT0 ;设为低电平触发方式SETB EX0;设外部中断源为允许中断SETB PXO;设外部中断源为高优先级中断源SETB EA ;将中断允许总控制位开启,让上面。的各项设置生效

温馨提示

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

评论

0/150

提交评论