1、第5章 I/O接口传输方式及其中断技术,本章学习目标,了解I/O的基本概念,掌握I/O端口的编址 掌握输入输出的基本方法:无条件、查询、中断、DMA MCS-51单片机中断源的种类及工作方式 中断控制寄存器IE、中断优先级寄存器IP及定时器/计数器及外部中断控制寄存器TCON的使用方法 MCS-51型单片机中断响应过程 外部中断的结构及原理,什么是I/O接口(电路) I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路,I/O接口就是CPU与外设的连接部件。 PC机系统板的可编程接口芯片、I/O总线槽的电路板(适配器)都是I/O接口电路,接口在CPU与外设之间,5.1 I/O
2、接口电路,I/O接口的定义把外设连接到总线上的一组逻辑电路的总称。实现外设与主机之间的信息交换。 I/O接口要解决的问题 速度匹配(Buffer) 信号电平和驱动能力(电平转换器、驱动器) 信号形式匹配(A/D、D/A) 信息格式(字节流、块、数据包、帧) 时序匹配(定时关系) 总线隔离(三态门),1. I/O地址译码与设备选择把选中的与总线相接,未选中的与总线隔离(高阻态)。 2. 数据的缓冲与暂存 缓解接口与CPU工作速度的差异输出接口有锁存环节 输入接口有缓冲环节 3. 对外设进行监测、控制与管理,中断处理 信号电平与类型的转换 形式、格式、电平、功率、码制等,I/O接口的功能,I/O端
3、口:I/O信息的三种类型:数据、命令、状态。传送这三类信息的通道分别称为:数据端口(I、O)、命令端口(O)、状态端口(I)。 不同外设具有的端口数各不相同,计算机中为每一个端口都赋予一个惟一编号称为端口地址(或端口号)。 端口有两种编址方式:统一编址和独立编址。,I/O接口的编址方式,I/O接口电路的基本结构,定义把外设接口与内存统一进行编址。各占据统一地址空间的不同部分。 优点 指令统一,灵活; 访问控制信号统一,使用同一组的地址/控制信号。 缺点 内存可用地址空间减小,0,地址空间(共1MB),内存地址 (960KB),I/O地址 (64KB),FFFFFH,EFFFFH F0000H,
4、1. 统一编址(例如: MCS-51单片机),定义: 外设地址空间和内存地址空间相互独立。 优点:内存地址空间不受I/O编址的影响 缺点:I/O指令功能较弱,使用不同的读写控制信号。,00000H,内存地址空间,内存空间 (1MB),I/O空间 (64KB),FFFFH,FFFFFH,I/O地址空间,0000H,2. 独立编址(例如: 8088/8086 微机系统),MCS-51单片机,8088/8086,5.2 I/O接口数据传送的控制方式,主机与外设之间数据传送的控制方式 有以下四种: 无条件传送 查询(条件)方式传送 中断方式传送 直接存储器存取(DMA, Direct Memory A
5、ccess),无条件传送方式,适用场合:适用于总是处于准备好状态(定时固定或已知)的外设 以下简单外设可采用无条件传送方式: 开关 发光器件(如发光二极管、7段数码管、灯泡等) 继电器 步进电机 优点:软件及接口硬件简单 缺点:只适用于简单外设,适应范围较窄,查询(条件)方式传送,适用场合:适用于外设并不总是准备好,而且对传送速率、传送效率要求不高的场合。 CPU在与外设交换数据前必须询问外设状态“你准备好没有?” 对外设的要求:应提供设备状态信息 对接口的要求:需要提供状态端口 优点:软件比较简单 缺点:CPU效率低,数据传送的实时性差,速度较慢,查询方式的流程图,超时?,READY?,与外
6、设进 行数据交换,超时错,读入并测试外设状态,Y,N,Y,N,传送完?,防止死循环,复位计时器,N,Y,例如:用查询方式进行输出,外设状态端口地址为3FBH,第5位(D5)为状态标志(=1忙,=0准备好)外设数据端口地址为3F8H,写入数据会使状态标志置1 ;外设把数据读走后又把它置0。试画出其电路图。(电路图见下页),D5,D7-D0,A9 | A3,1,&,A15| A10,1,IOW,D7-D0,3F8H,外设,D7 D6 D5 D4 D3 D2 D1 D0,BUSY,CP,Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0,状态端口,GG2A G2BC B A,A2 A1 A0,74LS1
7、38,Y0,1,IOR,Y3,OE,74LS374,CP,Q,Q,D,S,STROBE,3FBH,思考: 程序段?,打印机,(1忙/0闲),中断方式传送,概念: CPU无需循环查询外设状态,而是外部设备在需要进行数据传送时才中断CPU正在进行的工作,让CPU来为其服务。即CPU在没有外设请求时可以去做更重要的事情,有请求时才去传输数据,从而大大提高了CPU的利用率。 优点:CPU效率高,实时性好,速度快。 缺点:程序编制较为复杂。,DMA传输,前面三种I/O方式共性: 都需要CPU作为中介:外设 CPU 内存两个含义:1)软件:外设与内存之间的数据传送是通过CPU执行程序来完成的(PIO方式)
8、;2)硬件:I/O接口和存储器的读写控制信号、地址信号都是由CPU发出的(总线由CPU控制)。缺点:程序的执行速度限定了传送的最大速度(约为几十KB/秒) 解决办法:DMA传输,DMA传输:外设 内存 外设直接与存储器进行数据交换 ,CPU不再担当数据传输的中介者; 总线由DMA控制器(DMAC)进行控制(CPU要放弃总线控制权),内存/外设的地址和读写控制信号均由DMAC提供。 优点:数据传输由DMA硬件来控制,数据直接在内存和外设之间交换,可以达到很高的传输速率(可达几MB/秒),中断的概念,执行主程序,主程序,继续执行主程序,断点,中断请求,中断响应,执行中断处理程序,中断返回,5.3
9、MCS-51单片机的中断系统,中断系统的结构框图,中断源入口地址,具体入口如下:中断源 入口地址INT0 0003HT0 000BHINT1 0013HT1 001BHRI/TI 0023H在这些单元中往往是一些跳转指令,跳到真正的中断服务程序,这是因为给每个中断源安排的空间只有8个单元。,1. 优点,(1)分时操作 (2)实现实时处理 (3)故障处理,2. 中断的功能,(1) 实现中断及返回 (2) 能实现优先权排队 (3) 能实现中断嵌套,1.中断源 共有5个中断源,分别是外部中断2个、定时中断2个和串行中断1个,它们是: 外部中断0INT0,由P3.2提供 外部中断1INT1,由P3.3
10、提供,外部中断有两种信号方式,即电平方式和脉冲方式。 T0溢出中断 由片内定时/计数器0提供 T1溢出中断 由片内定时/计数器1提供 串行口中断RI/TI 由片内串行口提供,中断请求,2中断请求标志,在中断请求被响应前,中断请求是由CPU锁存在特殊功能寄存器TCON和SCON的相应中断标志位中。 与中断控制有关的控制寄存器有4个: TCON-定时控制寄存器 IE-中断允许控制寄存器 IP-中断优先级控制寄存器 SCON-及串行口控制寄存器,(1)定时控制寄存器TCON,中断请求标志,触发方式选择,0 低电平1 下降沿,1)TCON.7 TF1:T1溢出中断标志。T1被启动计数后,从初值开始加1
11、计数,直至计满溢出由硬件使TF1=l,向CPU请求中断,此标志一直保持到CPU响应中断后,才由硬件自动清“0”。也可用软件查询该标志,并由软件清“0”。 2)TCON.5 TF0:T0溢出中断标志。其操作功能类似于TF1。 3)TCON.3 IE1:外部中断1标志。IE1=1表明外部中断1向CPU申请中断。 4)TCON.1 IE0:外部中断0标志。其操作功能与IE1类似。,(2)串行口控制寄存器SCON,串行中断请求标志,1)SCON.1 TI:串行发送中断标志。CPU将一个字节数据写入发送缓冲器SBUF后启动发送,每发送完一个串行帧,硬件置位TI。但CPU响应中断后,并不能自动清除TI标志
12、,必须由软件清除。 2)SCON.0 RI:串行接收中断标志。在串行口允许接收时,每接收完一个串行帧,硬件置位RI。同样,CPU响应中断后不会自动清除RI标志,必须由软件清除。,(3)中断允许控制寄存器IE,0 禁止,1允许,1)IE.7 EA:CPU中断总允许位。EA=1,CPU开放中断,每个中断源是被允许还是被禁止,分别由各自的允许位确定;EA=0,CPU屏蔽所有的中断要求,称关中断。 2)IE.4 ES:串行口中断允许位。ES=1,允许串行口中断;ES=0,禁止串行口中断。,3)IE.3 ET1:T1中断允许位。ET1=1,允许T1中断;ET1=0,禁止T1中断。 4)IE.2 EX1:
13、外部中断1允许位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。 5)IE.1 ET0:T0中断允许位。ET0=1,允许T0中断;ET0=0,禁止T0中断。 6)IE.0 EX0:外部中断0允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。,1)PS:串行口中断优先级控制位。 2)PT1:定时计数器T1中断优先级控制位。 3)PX1:外部中断1中断优先级控制位。 4)PT0:定时计数器T0中断优先级控制位。 5)PX0:外部中断0中断优先级控制位。单片机复位后,IP寄存器被清0,所有中断源为低级中断。,(4)中断优先级控制寄存器(IP),0 低级别,1高
14、级别,中断优先级的设定,基本原则是: (1)高优先级不能被低优先级中断; (2)低优先级可被高优先级中断。 (3)任何一种中断(不管是高级还是低级),一旦得到响应,不会再被它的同级中断所中断。,(4)两个同一级的中断源同时向CPU发出中断申请,CPU通过内部硬件查询,按自然优先级确定优先响应哪一个中断要求,中断响应,1CPU的中断响应条件 无同级或高级中断正在服务; 当前指令周期结束,如果查询中断请求的机器 周期不是当前指令的最后一个周期,则不行; 若现行指令是RETI、RET或访问IE、IP指令,则需要执行到当前指令及下一条指令方可响应。,2.响应过程 置位中断优先级有效触发器,即关闭同级和
15、低级中断: 调用入口地址,断点入栈,相当于LCALL指令; 进入中断服务程序。,3.响应时间从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。 (1)最快响应时间 以外部中断的电平触发为最快。 从查询中断请求信号到中断服务程序需要3个机器周期:1个周期(查询)2个周期(长调用LCALL) (2)最长时间 若当前指令是RET、RETI和IP、IE指令,紧接着下一条是乘除指令发生,则最长为8个周期: 2个周期执行当前指令(其中含有1个周期查询)4个周期乘除指令2个周期长调用8个周期。,中断处理,中断处理(又称中断服务)程序从入口地址开始执行,直到返回指令“RETI”为止,这个过程称为中断
16、处理。此过程一般包括两部分内容,一是保护现场,二是处理中断源的请求。,中断返回中断处理程序的最后一条指令是RETI,它使CPU结束中断处理程序的执行,返回到断点处,继续执行主程序。,外部中断,1.外部中断的方式选择外部中断的方式选择是通过定时/计数器及外部中断控制寄存器TCON中的标志位选择的。 1)TCON.2 IT1:外部中断1触发方式控制位。当 IT1=0,外部中断l为电平触发方式。 若IT1=1,外部中断1控制为边沿触发方式。 2)TCON.0 IT0:外部中断0触发方式控制位。,2.外部中断的系统设计应用,外设数据经P1口输入单片机,每准备好一个数据,外设发出选通信号,经触发器和非门
17、至INT0。,数据传送过程: 外设每准备好一个数据后,发出选通信号,使触发器输出1再经非门得0至INT0,向CPU发出中断请求, CPU 响应这个中断请求后,在中断处理程序中先撤除中断请求信号,(通过P3.0=0,使INT0=1)再由P1口输入 数据到单片机内部。,程序清单:,ORG 0000H,START:LJMP MAINORG 0003HLJMP IINT0ORG 0030H ;主程序 MAIN: CLR IT0 ;低电平触发SETB EASETB EX0 ;开中断MOV DPTR,#1000H.ORG 0100H IINT0:PUSH PSW ;中断处理程序PUSH ACCCLR P3
18、.0,NOP NOP SETB P3.0 ;撤除INT0 MOV A,P1 ;输入数据 MOVX DPTR,A ;保存数据 INC DPTR . POP ACC ;恢复现场 POP PSW RETI ;返回主程序,3. 多级外部中断的扩展应用,利用单片机扩展5个外部中断源,中断的优先次序为X0X4,其中X0接到外部中断上,X1X4接到外部中断上;单片机的P1.4P1.7接4个发光二极管用来作输出指示;当有X1X4其中一个外部中断发生时,相应的发光二极管D1D4点亮;当X0外部中断发生时,4个发光二极管全亮。,ORG 0000HAJMP MAINORG 0003H ;中断服务程序入口地址AJMP
19、 ZHD0ORG 0013H ;中断服务程序入口地址AJMP ZHD1ORG 0030H MAIN:MOV SP,#70H ;设置堆栈指针SETB IT0 ;设置外部中断0为边沿触发方式SETB IT1 ;设置外部中断1为边沿触发方式 MOV IP,#00000001B ;设置外部中断0为最高优先级 MOV IE,#10000101B ;开放外部中断0及外部中断1 MOV A,#0FFH ;关闭发光二极管,MOV P1,A LOOP:AJMP LOOP ZHD0:PUSH PSW ;保护现场PUSH AMOV A,#0FH ;4个发光二极管全亮MOV P1,APOP A ;恢复现场POP PS
20、WRETI ;中断返回 ZHD1:PUSH PSW ;保护现场PUSH AORL P1,#0FH ;读取P1口的低4位JNB P1.0,IN1 ;中断源查询,并转向相应的;中断服务程序,JNB P1.1,IN2JNB P1.2,IN3JNB P1.3,IN4 FH1: POP A ;恢复现场POP PSWRETI IN1: MOV A,#11101111B ;中断服务程序1MOV P1,A ;D1发光二极管亮AJMP FH1 IN2: MOV A,#11011111B ;中断服务程序2MOV P1,A ;D2发光二极管亮AJMP FH1 IN3: MOV A,#10111111B ;中断服务程序3MOV P1,A ;D3发光二极管亮,AJMP FH1 IN4: MOV A,#01111111B ;中断服务程序4MOV P1,A ;D4发光二极管亮 AJMP FH1END,