微机系统与接口课件:Ch5_2第五章 数字量输入输出(2)_第1页
微机系统与接口课件:Ch5_2第五章 数字量输入输出(2)_第2页
微机系统与接口课件:Ch5_2第五章 数字量输入输出(2)_第3页
微机系统与接口课件:Ch5_2第五章 数字量输入输出(2)_第4页
微机系统与接口课件:Ch5_2第五章 数字量输入输出(2)_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

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

文档简介

1、第五章 数字量输入输出(2)*概念:总线、接口电路、接口芯片、端口地址 *中断及其处理 中断控制器8259*定时器/计数器*并行/串行 DMA电路与应用1CPU与外设间的数据传送方式I/O接口电路基础:三态缓冲器/锁存器问题:CPU与外设的工作速度不一致,尤其是当外设由其他CPU或时序电路控制时更加明显,应如何解决效率和可靠性。数据传送控制:使两者高效、可靠地进行数据传送一、 无条件传送方式二、 条件传送方式 ( 查询方式 )三、 中断传送方式四、 DMA传送方式 ( Direct Memory Access )四种传送方式2典型无条件传送方式接口电路(输入)该电路在CPU执行指令 MOV D

2、X, 284H IN AL, DX将输入设备的数据(开关状态)读入CPU内AL中图中译码电路的作用:只当A15A0上出现284H时,(即0000 0010 1000 0100B)输出0,其他输出1。三 态缓冲器开关状态 DBIOR地址译码 AB284H000D7 D0A15A0与非IO总线P247图5.10 74LS244G1/G2流程3典型无条件传送方式接口电路(输出)图中译码电路的作用:只当A15A0上出现288H时,(即0000 0011 1000 1000B)输出0,其他输出1。该电路在CPU执行指令 MOV AL, 81H MOV DX, 288H OUT DX, AL CPU内AL

3、中的数据81H送至输出设备IO总线锁存器输出设备数据线IOW地址译码地址线288H000D7 D0A15A0与非例:LED指示灯74LS2734无条件传送:输入输出接口K7K1K0+5VD0D7A0A15CLKLS06反相驱动器LS2738D锁存器LS244三态缓冲器8000H译码+5VLED0LED7GIOWIORnext:mov dx,8000h;DX指向数据端口in al,dx;从输入端口读开关状态not al;反相out dx,al;送输出端口显示call delay;调子程序延时jmp next;重复5无条件传送方式 (同步传送方式)实现方法 1、CPU不查询外设工作状态, 与外设速

4、度的匹配通过在软件上延时完成, 2、在程序中直接用I/O指令,完成与外设的数据传送特点 1. 适用于外设动作时间已知,前提:CPU与外设进行数据传送时,外设保证已准备好。 2. 软硬件十分简单。6条件传送方式(查询传送方式)实现方法: 在与外设进行传送数据前,CPU先查询外设状态, 当外设准备好后,才执行I/O指令,实现数据传送特点:1. CPU通过不断查询外设状态,实现与外设的速度匹配2. CPU的工作效率低(程序方式)NY从状态端口读入状态信息从数据端口传送一个数据外设准备好否?编程流程流程7查询方式输入例 假设 外设的状态端口为28C H, 其中D7=1时,表示外设数据准备好 外设的数据

5、端口为288 H。 实现从外设读入50H个字节到内存缓冲区buffer中。28CH端口状态端口288H端口数据端口地址译码数据缓冲控制电路输入外备CPU地址线数据线控制线8查询方式输入接口电路状态端口 D7=1 表示外设准备好输入装置+5vSTB三 态缓冲器数 据 线288H数据端口地址译码地址线状态端口地址译码锁存器IOR R Q D三 态缓冲器D728CHPC总线IORA15A0D7D0&MOV DX, 288HIN AL, DXMOV DX, 28CHIN AL, DXBUSYD0:D7GNDREADY9条件查询输入流程图从28CH状态端口读入外设状态信息从288H数据端口读入一个字节数

6、据YND7=1, 外设准备好否?N50H个数据传送结束?Y编程从外设读入50H个字节到内存缓冲区buffer中10查询方式输入程序片段STATUS EQU 28CH MOV AX, SEG buffer ;取缓冲区首地址 MOV DS, AX LEA DI, buffer MOV CX, 50H ;传送个数 next: MOV DX, STATUS ask: IN AL, DX ;从状态端口读入状态信息 TEST AL, 1000 0000B ;80H, 检测D7位 JZ ask ;D7=0,继续查询MOV DX, 288H IN AL, DX ;从数据端口读入数据MOV DI, AL ;送缓

7、冲区 INC DI ;修改缓冲区指针 LOOP next ;传送下一个.11查询方式输出 假设 外设的状态端口为28C H, 其中D0 = 0时,表示外设准备好 外设的数据端口为288 H。 编程将缓冲区buffer的80H个字节输出到外设。28CH端口状态端口288H端口数据端口地址译码数据缓冲控制电路输出外备CPU地址线数据线控制线12查询方式输出接口状态端口 D0 = 0 表示外设准备好输出设备数 据 线288H数据端口地址译码地址线锁存器 RD Q 三 态缓冲器+5vACKPC总线IORA15A0D7D0IOW状态端口地址译码D028CH&MOV DX, 288HOUT DX, ALM

8、OV DX, 28CHIN AL, DXREADY (BUSY)13条件查询输出流程图从28CH状态端口读入外设状态信息将一字节数据送至288H数据端口YND0=0, 外设准备好否?N80H个数据传送结束?Y编程将缓冲区buffer的80H个字节输出到外设14STATUS_PORT EQU 28CHDATA_PORT EQU 288H MOV AX, SEG buffer ;取缓冲区首地址 MOV DS, AX LEA SI, buffer MOV CX, 80H ;传送个数 next: MOV DX, STATUS_PORT ask: IN AL, DX ;从状态端口读入状态信息 TEST

9、AL, 0000 0001B ;检测D0位 JNZ ask ;D00,继续查询 MOV AL, SI ;从缓冲区取数 MOV DX, DATA_PORT OUT DX, AL ;从数据端口输出数据 INC SI ;修改缓冲区指针 LOOP next ;输出下一个 .查询方式输出程序片断15条件传送方式(查询传送方式)严重缺点: CPU不断查询外设状态,工作效率低无条件传送方式(同步传送方式)严重缺点 CPU与外设必须同步,否则出错!16DMA 传送方式(直接存储器存取方式)实现方法1. 由专用接口芯片DMA控制器(称DMAC) 控制传送过程;4. DMAC接管总线,控制外设、内存之间直 接数据

10、传送3 . CPU发出总线响应信号,释放总线; 由CPU控制总线变为DMAC控制2. 当外设需传送数据时,通过DMAC向CPU 发出总线请求;17DMA 传送方式过程18DMA传送流程HLDA发存储器地址传送数据传送结束?DMA结束修改地址指针流程19DMA传送方式的特点1. 外设和内存之间,直接进行数据传送, 不通过CPU, 传送效率高。 适用于在内存与高速外设、 或两个高速外设之间进行大批量数据传送。2. 电路结构复杂,硬件开销较大。本章后面详细介绍20中断传送方式解决方法之一:中断传输 1. 当外设准备好,向CPU发出中断请求 2. CPU在满足响应中断的条件下,发出中断响应信号; 3.

11、 CPU暂停当前的程序,转 去执行中断服务程序, 完成与外设的数据传送; 4. CPU从中断服务程序返回,继续执行被中断的程序 程序(查询)方式 =效率问题(空耗时间) 如何解决?21中断方式下CPU执行程序流程中断服务程序发申请中断服务程序发申请外设主程序(Routine)流 (正常)中断概念: CPU与外设交换信息的一种方式=硬件手段,改变CPU执行程序的顺序(程序流)流程22中断传送方式的特点1. CPU和外设大部分时间处在并行工作状态, 只在CPU响应外设的中断申请后, 进入数据传送的过程3. 不适用于大量、高速频繁数据交换DMA2. 中断传送方式提高了CPU的效率238088中断结构

12、IRQ0IRQ7中断逻辑INT nINTO除法错单步8259INTRNMI2n401直接执行软件中断/指令执行结果除零(INT 00H)单步(INT 1) IF=1 TF=1溢出(INTO INT 04H)软件中断调用 (INT xxH) 非屏蔽中断NMI(Non-Maskable Interrupt) 可屏蔽中断INTR(IF=1)内部中断外部中断中断控制中断请求触发信号24中断响应和处理流程当前指令结束?软中断?NMI?INTR?TF=1?执行下一条指令IF=1? 取类型码 PSW入栈、清IF、TFCS、IP入栈调中断处理程序(进入)又有NMI?执行中断子程序IP、CS、PSW出栈返回主程

13、序硬件监测处理YYYYYYYNIRET25中断指令InterruptINT n ; 软中断, n为中断类型号形成中断向量(SP) (SP)-2,(SP)+1,(SP) (FLAGS);(IF) 0 (TF) 0(SP) (SP)-2,(SP)+1,(SP) (CS); (CS) 0:n*4+2(SP) (SP)-2,(SP)+1,(SP) (IP); (IP) 0:n*4IRET(Interrupt Return) ; 中断服务程序中最后一语句(IP) (SP)+1,(SP), (SP) (SP)2(CS) (SP)+1,(SP), (SP) (SP)2(FALGS) (SP)+1,(SP)

14、(IP), (SP) (SP)226中断响应和处理 INTR中断源请求-事件CPU中断响应/INTA 外设:中断类型号n INT n CPU读n 0000:4*n0000:4*n+3中断矢量保护断点: (返回现场): PSW入栈、清IF、TF, CS、IP入栈转入中断服务程序:保护现场-中断服务-恢复现场返回断点(继续运行): IP、CS、PSW出栈返回主程序27中断向量(矢量)与8088中断响应中断向量表(0:0-0:3FFH)INT 00H0FFH(4 byte each: CS:IP) PC:INT 080F外部硬件中断。INT 0A保留给用户扩展硬件中断使用IRQ2中断号n第2个INT

15、A脉冲28中断响应时序(1)中断响应周期:INTR=1,CPU发第二个/INTA时类型号n(1BYTE)DB给CPU;(2)总线写:F入栈 (3)IF=TF=0(EU)(4)总线写:CS入栈 (5)总线写:IP入栈(6)总线读:n*4为指针读字IP (7)总线读:n*4为指针+2读字CS29中断响应操作 响应条件:CPU的INTR引脚高电平,IF=1。CPU发出ALE信号,作为地址锁存信号第一个总线周期第二个总线周期空闲状态(8088无)低电平,通知外设CPU已接受其中断请求,同时使数据总线、地址总线浮空被响应的外设向数据总线发送一个字节的中断类型号,CPU读入后查中断向量表,找到中断服务程序

16、入口地址,转去执行中断服务程序。30CPU中断控制中断源-中断请求-中断响应-中断服务(1)中断源及其识别判断:(电平/时钟等)(2)优先权及其队列 8086内部:优先级(H)除法错、INTn、INTO、NMI、INTR(IF=1)、单步中断(IF=1)(3)强占式/中断嵌套,可屏蔽中断(INTR,单步IF=1才响应)(4)中断请求触发信号(脉冲/电平)(INTR:电平,每个指令最后一个时钟周期结束时取样)318086/8088中断问题:多中断源申请中断,优先级?屏蔽?自动?中断控制逻辑专用IC i8259 -可编程接口芯片32i8259A可编程中断控制器重点:* 了解功能 *熟悉管脚 *编程

17、(中断软件初始化与EOI)功能:INTR:可编程模式优先级判断提供中断向量单独屏蔽中断输入(可编程选择)每片直接管理8级外部中断, 级联扩展:64级TTL全兼容82C59 CMOS 低功耗PIC - Priority Interrupt Controller33i8259A可编程中断控制器PICTop View 28PDIP +5VFunction DiagramMPU接口:D0D7,/RD、/WR、/CS,A0(2口地址) INT申请/INTA应答(允许)PC:20/21HIR0IR7:外部级中断源信号SP=1 Master34中断控制中断请求寄存器IRR保存8条外界中断请求信号IR0IR7

18、的请求状态Di位为1表示IRi引脚有中断请求;为0表示无请求中断服务寄存器ISR保存正在被8259A服务着的中断状态Di位为1表示IRi中断正在服务中;为0表示没有被服务中断屏蔽寄存器IMR保存对中断请求信号IR的屏蔽状态Di位为1表示IRi中断被屏蔽(禁止);为0表示允许35SP/EN和CAS0CAS2(级联)通常模式下确定( MASTER: SP/EN=1 ,IR07接各从片INT, CAS02输出编码选择从片-8片)/(Slave: SP/EN=0, CAS为输入端,接主片的CAS0CAS2,接收主片发出的从片选择编码);| 特殊Enable buffer-Buffer MODE下控制B

19、uffer收发(EN)-与系统总线间加BUFFER由SP/EN控制,发送时/EN=0)。(硬件简单,软件难用-动态优先级)9片-64级8259级联扩展MASTER 825936中断级连一个系统中,8259A可以级连,有一个主8259A,若干个(最多8个)从8259A级连时,主8259A的三条级连线CAS0CAS2作为输出线,连至每个从8259A的CAS0CAS2每个从8259A的中断请求信号INT,连至主8259A的一个中断请求输入端IR主8259A的INT线连至CPU的中断请求输入端SP*/EN*在非缓冲方式下,规定该8259A是主片(SP*1)还是从片(SP*0)动画37I8259寄存器的

20、读写 A0 RD# WR# CS#功能 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 1 1 0 1写入ICW1、OCW2和OCW3写入ICW2ICW4和OCW1读出IRR、ISR和查询字读出IMR数据总线高阻状态数据总线高阻状态初始化编程:ICW(初始化命令字14)P255工作编程: OCW(工作命令字13)初始化顺序见P255图5.19388259A编程两步:1、初始化编程一次写入(编程) 初始化命令字ICW14,P2552、工作编程可多次写入(编程) 工作命令字OCW13 ,P258初始化编程顺序:ICW1 ICW2 多片时写ICW3 需要时写ICW4398259A编程

21、ICW1(主初始化命令字)ICW1:A0=0 D4=1工作方式(ICW标志初始化开始:结果清中断屏蔽寄存器OCW1=0;恢复优先级IR0(H)-IR7(L)D7D5、D2仅对8080/85有意义-可忽略中断控制标志位D0:D0=1 要送ICW4(不送时ICW4各位=0);级联扩展:D1(SNGL)=1单片=0级联,要送ICW3(=1 单片,不送ICW3) 触发电平: D3(LTIM)=1 高电平触发 =0 上升沿触发初始化编程1LTIMSNGLIC4D7D6D5D4D3D2D1D0例:MOV AL, 00010011B ;沿触发,单片工作,后跟ICW4OUT 20H,AL408259A-ICW

22、2中断类型号寄存器ICW2:A0=1,中断类型号高5位中断类型号的高五位:编程时写入D7D3 ( T7T3)中断类型号的低三位:编程时不写D2D0,响应时由外设自动填 入,产生8个不同的中断类型号 总的中断类型号: D7D0 0 0 0B 1 1 1B8个中断矢量的地址是连续的!如8-向量080FH例:PC机:MOV AL, 00001000B;中断类型号从8开始OUT 21H,AL初始化编程T7T6T5T4T3D7D6D5D4D3D2D1D041ICW1 ICW2 ICW3(此时: ICW1的D1=0级联,要送ICW3)ICW3: A0=1,级联命令字,有主从片之分: 对MASTER主片:

23、(S7S0)D7D0对应8根中断请求线IR7IR0 某根中断请求线IR接SALVE从片,则ICW3相应位=1; 对SLAVE从片: 从片标识码(ID2ID0)仅D2D0有意义(高5位固定为0)对应8片从片 (中断响应时与主片送出的CAS码比较,相同为当前中断源)8259A初始化编程(续)- ICW3级联命令字S7S6S5S4S3S2/ID2S1/ID1S0/ID0D7D6D5D4D3D2D1D042注意:每片(主从片)均应顺序写入ICW1 ICW2 ICW3mov al,00000100B;04h;写入ICW3out 21h,al8259A初始化编程(续)- ICW3级联命令字43ICW4:

24、A0=1,优先级控制(D7D5=0)D4(SFMN)=0 一般嵌套(单片没有问题;多片时,已服务SALVE片所有中断源被屏蔽、高优先不能嵌套)D4=1特殊嵌套(仅仅屏蔽比当前中断源低级的中断,上述情况可中断嵌套)。D3(BUF)数据缓冲选择(=0 无BUFFER;=1有三态BUFF,8259A的DB系统总线间加BUFFER由/SP/EN控制接通, /SP/EN引脚变成输出线,以控制缓冲器的接通,当8259的数据送往系统总线时/EN=0,多用于多片级联;此时主从片区分:D2=0 SLAVE/=1 MASTER;D1(AEOI)=1 自动EOI,中断响应时在送出中断类型号后自动将ISR复位; =0

25、正常EOI-中断服务结束时向8259写EOI命令字OCW2。 D0表示系统中所用CPU的系列 =0 8080/85系列 =1 8086/88系列例:PC00001001B 88/86, 非自动EOI8259A初始化编程(续)-ICW4000SFNMBUFM/SAEOIPMD7D6D5D4D3D2D1D0448259A工作编程-OCW.8259A工作期间,可以随时接受操作命令字OCW.OCW共有3个:OCW1OCW3.写入时无顺序限制,根据需要写入OCWA0=1,写ICW2-ICW3-ICW4-OCW1;读总为IMR458259A工作编程OCWOCW1:中断屏蔽字, A0=1,屏蔽命令字内容写入

26、中断屏蔽寄存器IMR,每位对应1根中断请求线DiMi对应IRi,=1禁止IRi中断;=0允许IRi中断。各位互相独立。M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D0IN AL, 21HAND AL,0FEHOUT 21H,AL; 468259A工作编程OCWOCW2:(特征A0=0,D3=D4=0)R、SL和EOI编码配合使用产生中断结束EOI命令和改变优先权顺序中断优先权的旋转。RSLEOI00L2L1L0D7D6D5D4D3D2D1D0D5中断结束位:=1表示中断结束(EOI命令),当用8259实现中断管理时,IRET前必须给8259写一条EOI命令(即D5=1的OCW2

27、),8259收到后将ISR相应位清除。若D6D5=11,特殊的中断结束,它将复位ISR中由OCW2的D2D0指定的位。D6特殊旋转:=1,D0D2指定了外部请求线IRi,若D7=1,优先权的旋转移位一直到最低优先权对准IRi为止,最高为IRi+1; =0,最低优先权旋转到当前服务的中断请求线, D0D2无意义。D7中断优先权旋转: =0优先级固定不变IR0最高。=1优先权可旋转,移到什么情况停止与其他位有关。478259A工作编程OCW3 查询支持 OCW3:辅助操作(不常用)(特征A0=0 D4D3=01)ESMM、SMM设置特殊中断屏蔽方式。10清除特殊屏蔽/11设置特殊屏蔽P( D2 )

28、=1 表示查询,8259工作在查询方式(读状态字) 非查询。 写入D2=1的OCW3后再对同一地址(A0=0)作输入,就得到8259的状态字节 P259D1D010再用同一个的地址(A0=0)再做输入指令,读中断请求寄存器IRR;D1D0=11用同一个的地址(A0=0)再做输入,读ISR的状态(中断服务服务时相应位) 随时可读IMR(A0=1)不必送OCW3。 ESMMSMM01PRRRISD7D6D5D4D3D2D1D0488259A程序控制应用PC/XT的中断管理系统用一片8259A:IRQ0:T0;IRQ1:KB;IRQ2 空; IRQ3/4:COM2/1;IRQ5/6 HD/FD;IR

29、Q7: LPT1写:20H:ICW1、OCW2、OCW3; 21H:ICW2、ICW3,ICW4、OCW1读:20H:中断请求寄存器IRR、 中断服务寄存器ISR、 中断级编码(查询方式时) 注: 由写OCW3决定读何寄存器; D1D0=10随后读IRR; D1D0=11随后读ISR。 21H:中断屏蔽寄存器IMR49PC/XT 中的8259A应用(BIOS)初始化编程( P261)MOV AL,13H;上升沿有效、单片8259OUT 20H,AL; (ICW1)MOV AL,8; 8个中断源填入D2-D0,形成8个矢量08-0FHOUT 21,AL; (ICW2)MOV AL, 9; 808

30、6系统,中断不自动结束,服务程序写含EOI的OCW2,数据线上有缓冲器,一般中断嵌套方式OUT 21H, AL; (ICW4)MOV AL, 0FFH; 系统未初始化,屏蔽所有硬中断,初始化完成后再重写OCW1开发部分中断OUT 21H, AL ; (OCW1)50可屏蔽中断应用1-硬件连线/信号线路连接 数据通路 中断控制信号输入CPU中断允许外设三态缓冲器地址译码器锁存器 QD三态缓冲器INTRIORDBABDB+5V中断类型号INTA51中断处理2-编写主程序为中断准备: 保存系统中断向量、设置用户中断向量 设置设备中断屏蔽位 屏蔽R(IMR)地址 21H(在8259中) Di=1 屏蔽

31、;Di=0 允许 设置CPU中断允许位 STI 恢复系统中断向量设置引脚IRQ0IRQ1IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7用途定时器键盘保留通信网保留硬盘软盘打印机中断类型890AH0BH0CH0DH0EH0FH8259中断请求输入连接 52中断处理3-编中断服务子程序 步骤: 保存现场,R内容 如允许中断嵌套,开中断(STI) 处理中断 关中断 送中断结束命令EOI给8259中断命令R MOV AL,20H;(OCW2) OUT 20H,AL 恢复现场,R内容 中断结束返回IRET53中断服务程序关键:保护现场MYINT PROC FAR PUSH AX; PUSH BX;其他

32、寄存器 . . POP BX MOV AL,20H;EOI OUT 20H,AL; POP AX; IRET (注意结尾)MYINT ENDP54可屏蔽中断应用4-中断程序调试 检查中断向量及对应中断服务程序 检查中断屏蔽字 在中断服务程序入口设置断点 中断响应后单步调试,中断返回前检查堆栈平衡情况55 中断程序初始化例程矢量表修改:DOS功能调用(AH=25H,DS,DX) /直接修改(CLI后送CS,IP STOSW0:4*n=ES:DI, CLD)保存恢复Tvectorl DW 0Tvectorh DW 0intini PROC ;interrupt initializing CLI X

33、OR AX,AX MOV ES,AX ;0 MOV DS,AX MOV SI,20H MOV AX,SI MOV CS:Tvectorl,AX ;int 8 - timer56 MOV AX,SI+2 MOV CS:Tvectorh,AX CLD MOV DI, 20H ;INT 08h MOV AX,OFFSET MYINT STOSW ;AX DI MOV AX, CS STOSW MOV AL,0;IN AL,21H,OR AL,01H OUT 21H,AL ;中断屏蔽字mask,开中断 OCW1 MOV AL,20H OUT 20H,AL;EOI OCW2 STI RETintini ENDP 中断程序初始化例程57 中断向量恢复;INT 8 restor 恢复 INT 8

温馨提示

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

评论

0/150

提交评论