《输入与输出接口PPT课件》由会员分享,可在线阅读,更多相关《输入与输出接口PPT课件(50页珍藏版)》请在金锄头文库上搜索。
1、第五章第五章 微机与外设的数据交换微机与外设的数据交换5.1微机与外设的数据交换方式微机与外设的数据交换方式5.28259中断控制器中断控制器5.38237DMA控制器控制器5.4多功能多功能I/O接口芯片接口芯片82380本章学习目标8259的工作原理及组成结构。的工作原理及组成结构。8237的工作原理及组成结构。的工作原理及组成结构。根据具体的芯片编写出可执行的汇编语根据具体的芯片编写出可执行的汇编语言程序。言程序。5.1 微机与外设的数据交换方式微机与外设的数据交换方式请求方式请求方式数据交换数据交换硬件支持硬件支持性能特点性能特点查询方式查询方式软件查询软件查询外设状态外设状态软件进行
2、软件进行数据传送数据传送独占独占CPU无其他硬件无其他硬件定时协调好定时协调好CPU效率低效率低中断方式中断方式硬件发生硬件发生中断请求中断请求中断程序中断程序传送数据传送数据中断控制器中断控制器8259等等CPU分分时时操操作作、中断处理费时中断处理费时DMA方式方式DMAC转发转发总线请求总线请求DMAC控制控制数据传送数据传送DMA控制器控制器8237等等DMA硬硬件件控控制制需需CPU参与参与通道方式通道方式CPU建建 立立I/O操操 作作 信信息表息表IOP读信息表读信息表控制控制I/O操作操作IO协处理器协处理器8089等等IOP控制传数控制传数CPU其它操作其它操作查询、中断、查
3、询、中断、DMA是是CPU控制控制I/O方式方式5.2 8259 PIC(可编程中断控制器)可编程中断控制器)静态静态NMOS工艺,单电源工艺,单电源5V,28脚脚DIP与与8080/8085、8086/8088兼容:边缘触发兼容:边缘触发/电平触发、电平触发、有有/无缓冲无缓冲可编程的中断方式:全嵌套、循环优先级、特殊屏蔽、可编程的中断方式:全嵌套、循环优先级、特殊屏蔽、查询方式查询方式8级优先控制,可级联(级优先控制,可级联(81)片扩充到)片扩充到64级硬件中级硬件中断断可分别屏蔽中断请求(可分别屏蔽中断请求(IMR)中断响应时送出用户编程的中断类型码中断响应时送出用户编程的中断类型码内
4、部寄存器状态可读(内部寄存器状态可读(IRR、ISR、IMR)5.2.1 8259 PIC结构结构8259的读写逻辑的读写逻辑读写逻辑读写逻辑A0D4D3操作001x10DBICW1000010DBOCW2000110DBOCW301xx10DBICW2、ICW3、ICW4或OCW10001查询中断码、ISR、IRRDB0101IMRDB5.2.15.2.2 8259的编程的编程1.ICWA0D7D6D5D4D3D2D1D00A7A6A51LTIMADISNGLIC41A15T7A14T6A13T5A12T4A11T3A10A9A8芯片控制芯片控制1:电平触发电平触发0:边缘触发边缘触发调用间
5、隔调用间隔1:间隔为间隔为40:间隔为间隔为81:单片单片0:级联方式级联方式1:需要需要ICW40:不需不需ICW4(1)初始化命令字初始化命令字ICW1(2)初始化命令字初始化命令字ICW28080/8085中断程序入口中断程序入口8086/8088中断类型码中断类型码1.ICW中断向量(号):中断向量(号): 8085:ICW1.ADI=1 A15 A8 A7 A6 A5 A4 A3 A2 A1 A0 间隔间隔4B ICW1.ADI=0 A15 A8 A7 A6 A5 A4 A3 A2 A1 A0 CALL A15A0 8086: ICW2:T7 T6 T5 T4 T3 T2 T1 T0
6、 CPU处理:处理:000000T7 T6 T5 T4 T3 T2 T1 T000 硬中断硬中断08H 000000 0 0 0 0 1 0 0 0 00表入口:表入口:0020HIR编码 0 0CPU设置中断源IR编码,设置时可为000111IR编码 0 0 05.2.21S7S6S5S4S3S2S1S0ID2ID1ID01000SFNMBUFM/SAEOIPM1:特殊全嵌套特殊全嵌套0:一般全嵌套一般全嵌套0x:非缓冲方式非缓冲方式11:缓冲方式缓冲方式(主主)10:缓冲方式缓冲方式(从从)1:自动自动EOI0:正常正常EOI1:8086/80880:8080/8085(3)初始化命令字初
7、始化命令字ICW3(主从控制)主从控制)主主:从从:(4)初始化命令字初始化命令字ICW4(工作方式)工作方式)1.ICWA01:有从片有从片0:无从片无从片从片标志代码从片标志代码主从控制:主从控制: 主主ICW3: Si=1IRi上有从片的标记。上有从片的标记。 从从ICW3: ID2ID1ID0这最低这最低3位为联向主位为联向主IRi的从片标志代码。的从片标志代码。 主从片都存在自己的级联缓冲主从片都存在自己的级联缓冲/比较器。比较器。 级联响应时:级联响应时: :主片输出响应从片的标记对应的标志代码,:主片输出响应从片的标记对应的标志代码, 从片都把从片都把CAS2CAS0上代码与自己
8、标志代码比较。上代码与自己标志代码比较。 :确认被响应的从片输出中断向量号。:确认被响应的从片输出中断向量号。1. ICW 全嵌套:全嵌套: (1)一般全嵌套:)一般全嵌套:IRi响应响应ISRi=1,屏蔽屏蔽IRiIR7。 IRi接从接从8259,主,主ISRi=1时,时, IRi上来自从上来自从8259上更高的中断请求不能响应。上更高的中断请求不能响应。 (2)特殊全嵌套:特殊全嵌套: IRi响应响应ISRi=1,屏蔽屏蔽IRi+1IR7,允许同级和高级请允许同级和高级请求中断。求中断。 结束中断:结束中断:EOI送从片清送从片清ISR位位读从片读从片ISR为全为全0时时EOI送主片清送主
9、片清ISR位。位。5.2.2(5)初始化命令字的编程顺序初始化命令字的编程顺序5.2.2开始开始ICW1(A0=0,D4=1)ICW2(A0=1)SNGL=0?(级联方式)级联方式)ICW3(A0=1)IC4=1?ICW4(A0=1)准备接受中断准备接受中断YYNN开始开始ICW1(A0=0,D4=1)ICW2(A0=1)SNGL=0?(级联方式)级联方式)ICW3(A0=1)IC4=1?ICW4(A0=1)准备接受中断准备接受中断A0D7D6D5D4D3D2D1D01M7M6M5M4M3M2M1M0中断屏蔽:中断屏蔽:2.OCWMi1IRi被屏蔽,被屏蔽,Mi0允许允许IRi产生产生INT;
10、屏蔽屏蔽IRi,不影响其它不影响其它IR。5.2.2OCW1:2.OCW0RSLEOI00L2L1L0设置设置L2L1L0指定的指定的IRL2L1L0 :IR的优先的优先级码(级码(BCD)1:循环优选级循环优选级0:固定优选级固定优选级0:自动中断结束。自动中断结束。EOIA01:中断完成之后需要发送中断结束命令。中断完成之后需要发送中断结束命令。5.2.2OCW2:2. OCWICW1AEOI1: ISRi00:OCW2SL和EOI01:EOI命令:清最高级ISRi11:SEOI命令:清L2L1L0指定ISRi(2) 优先级优先级(a)固定优先级:)固定优先级:IR0IR7(最低)最低)(
11、1) 中断结束中断结束5.2.2OCW2的编程的编程:2. OCW(2) 优先级(续)优先级(续)(b)循环优先级:循环优先级:RSLEOIL2L1L0101EOI时,优先级循环至刚服务的时,优先级循环至刚服务的IR最低最低111SEOI时,优先级循环至时,优先级循环至L2L1L0指定的指定的IR最低最低100AEOI时,置优先级循环时,置优先级循环000AEOI时,清优先级循环时,清优先级循环110置置L2L1L0指定的指定的IR优先级最低优先级最低5.2.2置1:允许SMM00ESMMSMM01PRRRIS置1:特屏置置1:查询命令查询命令00110101无操作读IRR读ISRRR:RIS
12、:2.OCW5.2.2A0OCW3:3. OCW的编程的编程(1) 特殊屏蔽特殊屏蔽(a)一般屏蔽)一般屏蔽 通过通过OCW1,使使8259A中的屏蔽寄存器中的屏蔽寄存器IMR中的一位或若中的一位或若干位置干位置1来屏蔽来屏蔽IRR对应位的中断源。一个中断源的屏蔽不影对应位的中断源。一个中断源的屏蔽不影响其他中断源的请求。当某一中断请求被响应时,响其他中断源的请求。当某一中断请求被响应时,ISR中相中相应位置应位置1,屏蔽了同级(一般全嵌套方式)和较低级中断请求。,屏蔽了同级(一般全嵌套方式)和较低级中断请求。 IMRi=1IRi被屏蔽,不影响被屏蔽,不影响IR上操作上操作 ISRi=1IRi
13、IR7被屏蔽(被屏蔽(FUM)/ IRi+1IR7被屏蔽(被屏蔽(SFUM)5.2.23. OCW的编程的编程(1) 特殊屏蔽(续)特殊屏蔽(续)(b)特殊屏蔽方式)特殊屏蔽方式 在某些希望一个中断服务程序能动态改变系统优先级结构的场合,常在某些希望一个中断服务程序能动态改变系统优先级结构的场合,常采用特殊屏蔽方式。即在此中断服务程序中,用采用特殊屏蔽方式。即在此中断服务程序中,用OCW1将屏蔽寄存器中本将屏蔽寄存器中本级中断的对应位置级中断的对应位置1,即将本级中断屏蔽;然后写入,即将本级中断屏蔽;然后写入OCW3,使使ESMM=1、SMM1,这样使中断服务寄存器中当前对应位自动清这样使中断
14、服务寄存器中当前对应位自动清0,为开放较低级,为开放较低级中断请求提供可能。特殊屏蔽方式总是在中断处理程序中使用的。采用中断请求提供可能。特殊屏蔽方式总是在中断处理程序中使用的。采用这种方式后,由于本级中断在中断服务程序中被屏蔽,对外界来说,好这种方式后,由于本级中断在中断服务程序中被屏蔽,对外界来说,好像像CPU未处理任何中断。这样即使是最低级中断请求,也会得到响应。未处理任何中断。这样即使是最低级中断请求,也会得到响应。需要特殊屏蔽方式复位时,给需要特殊屏蔽方式复位时,给8259A送送OCW3,使使ESMM=1、SMM0;然后送然后送OCW1,使本级中断的屏蔽位清除,最后向使本级中断的屏蔽
15、位清除,最后向8259A送中断结束命令送中断结束命令结束服务。结束服务。 OCW3ESMM,SMM=11 IMRi=1 IRi被屏蔽,允许未被被屏蔽,允许未被IMR屏蔽屏蔽 ISRi=1 的中断请求的中断请求 5.2.23. OCW的编程的编程(2) 查询中断查询中断 IF=0 随后的随后的 (当(当 =0)作为)作为 ISR位置位置1 OCW3 P=1 IN的的IRR中最高级中最高级IR二进制代码二进制代码DB(A0=0) I x x x x W2 W1 W0 0:无中断无中断 1: 有中断有中断 二进制码二进制码转入相应中断服务程序转入相应中断服务程序 用途:用途:1.无需中断响应,节省存
16、储空间无需中断响应,节省存储空间 2.把中断扩大到把中断扩大到64级以上级以上 一种用软件确定中断请求位的方式,一般在一个中断服务程序可为几一种用软件确定中断请求位的方式,一般在一个中断服务程序可为几个中断设备服务的场合使用。其特点是外设仍通过个中断设备服务的场合使用。其特点是外设仍通过8259A申请中断(可为申请中断(可为边沿触发或电平触发,由边沿触发或电平触发,由ICW1设置)。但设置)。但8259A却不使用却不使用INT信号向信号向CPU申请中断;申请中断;CPU内部将内部将IF复位,禁止复位,禁止CPU用硬件响应中断请求;用硬件响应中断请求;CPU用软件查询确定中断源,从而实现对设备的
17、中断服务。用软件查询确定中断源,从而实现对设备的中断服务。CPU的查询的查询命令是通过命令是通过OCW3的的P=1设置来实现的,设置来实现的,CPU随后的随后的IN指令作为中断响应。指令作为中断响应。若有中断请求,便识别出最高级的中断请求,使若有中断请求,便识别出最高级的中断请求,使ISR中相应位置位,转入中相应位置位,转入相应的中断服务程序。相应的中断服务程序。5.2.21.连接连接w1个主片,至多个主片,至多8个从片(个从片(7n+1级中断),从片级中断),从片INT主片主片IRi上,上, 主片主片INTCPU INTR上上w非缓冲方式:主片非缓冲方式:主片 Vcc, 从片从片 GNDw主
18、从片都有各自独立的主从片都有各自独立的I/O空间空间w 都接都接CPU系统的系统的 ,主从,主从CAS2CAS0互连,主片输出,从互连,主片输出,从片输入。片输入。w从片的从片的IRi上可带下级上可带下级8259的的INT,但不能用向量中断,只能查询中断但不能用向量中断,只能查询中断地址空间另设,地址空间另设, 、 CAS2CAS0不用,不用, 作响应输入作响应输入 5.2.3 8259的级联的级联8259的级联图的级联图5.2.3 8259的级联的级联2.初始化初始化主、从主、从8259都要分别设置都要分别设置ICW1SNGL0ICW2:各自分别设置各自分别设置ICW3:主片设置连从片的主片
19、设置连从片的IRi的标记的标记 从片设置连主片的从片设置连主片的IRi的标志代码的标志代码ICW4:主片主片SFUM 1,从片从片SFUM 0 BUF和和M/S根据情况设置根据情况设置其它各自按情况设置其它各自按情况设置3.中断过程中断过程(1)IR0IR7中中1或几条请求有效,或几条请求有效,IRRi1(2)优先级判优电路根据优先级判优电路根据IRR、IMR、ISR的状态选出未屏蔽的最高的状态选出未屏蔽的最高优先级的优先级的IRRi作为作为INTCPU INTR(3)当当IF1,在指令结束时,在指令结束时,CPU响应中断。响应中断。5.2.3 8259的级联的级联(4)CPU处理中断向量号,
20、保护现场,转入中断服务程序。处理中断向量号,保护现场,转入中断服务程序。(5)中断嵌套)中断嵌套中断服务程序中中断服务程序中IF1,允许嵌套。允许嵌套。优先级高的中断请求可以中断优先级低的中断服务。优先级高的中断请求可以中断优先级低的中断服务。主片主片SPUM方式下允许同一从片实行中断嵌套。方式下允许同一从片实行中断嵌套。(6)中断服务)中断服务(7)中断结束)中断结束非非AEOI要发要发EOI命令,清除命令,清除ISRi位,恢复标志和断点返回主程序位,恢复标志和断点返回主程序在在SPUM要发送两次要发送两次EOI EOI从从8259,测试从,测试从8259的的ISR 为全为全0,EOI 主主
21、8259 不为不为0,不向主,不向主8259发发EOI实模式下中断编程实模式下中断编程 中断编程注意点中断编程注意点中断编程注意点中断编程注意点1. 1.使用正确的中断号使用正确的中断号使用正确的中断号使用正确的中断号2. 2.中断服务程序入口的正确设置中断服务程序入口的正确设置中断服务程序入口的正确设置中断服务程序入口的正确设置3. 3.避免中断程序中避免中断程序中避免中断程序中避免中断程序中DOSDOS重入重入重入重入4. 4.中断程序执行时间的正确估计中断程序执行时间的正确估计中断程序执行时间的正确估计中断程序执行时间的正确估计5. 5.中断的打开与关闭中断的打开与关闭中断的打开与关闭中
22、断的打开与关闭6. 6.中断结束处理及返回中断结束处理及返回中断结束处理及返回中断结束处理及返回中断处理程序举例中断处理程序举例中断处理程序举例中断处理程序举例OLD0CDD?CODESEGMENTMOVAX,350CH;保存原来的保存原来的0CH中断向量中断向量INT21HMOVWORDPTROLD0C,BXMOVWORDPTROLD0C+2,ESMOVAX,CODE;写入新的写入新的0CH中断向量中断向量MOVDS,AXMOVDX,OFFSETSERVICEMOVAX,250CHINT21H;其它程序段其它程序段;中断处理子程序中断处理子程序;中断处理子程序中断处理子程序SERVICE P
23、ROCPUSHA;保护现场保护现场PUSH DSSTI;打开中断打开中断;串口数据处理程序串口数据处理程序CLI;关闭中断关闭中断POPDS;恢复现场恢复现场POPAIRETSERVICE ENDP接口芯片接口芯片/管理器件,总线主控设备管理器件,总线主控设备8237DMAC有有4个个独独立立的的DMA通通道道:每每个个通通道道可可独独立立编编程程、自自动动预预置置;每每个个通通道道有有64K的的地地址址和和计计数数功功能能,在在超超过过64K地地址址空空间间的的系系统统中中进进行行DMA传传送送时时,需需要要将将超超过过的的地地址址位位通通过过I/O端端口口或或页页面面寄寄存存器器实实现现;
24、DMA请请求求可可允允许许/禁禁止止;软软件件可可设设置置DMA请请求求。8237的的DMA通通道道可可以以通通过过级级联联扩扩充充:使使用用下下级级HRQ连连上上级级DREQ传传递递DMA请请求求,使使用用上上级级DACK连连下下级级HLDA传传递递DMA响响应。应。 存储器存储器存储器存储器三种操作类型:读、写、检验三种操作类型:读、写、检验四种传送方式:单个、成组、请求、级联传送四种传送方式:单个、成组、请求、级联传送DMA结束时产生结束时产生 输出,输入输出,输入 使使DMA传送结束传送结束5.3 8237 DMAC5.3.1 8237 DMAC结构结构读读(IOR)表表8237A寄存
25、器口地址寄存器口地址写写(IOW)I/O口地址口地址寄寄存存器器00读通道读通道0当前地址寄存器当前地址寄存器写通道写通道0基地址与当前地址寄存器基地址与当前地址寄存器01读通道读通道0当前字节计数寄存器当前字节计数寄存器写通道写通道0基字节计数与当前字节计数寄存器基字节计数与当前字节计数寄存器02读通道读通道1当前地址寄存器当前地址寄存器写通道写通道1基地址与当前地址寄存器基地址与当前地址寄存器03读通道读通道1当前字节计数寄存器当前字节计数寄存器写通道写通道1基字节计数与当前字节计数寄存器基字节计数与当前字节计数寄存器04读通道读通道2当前地址寄存器当前地址寄存器写通道写通道2基地址与当前
26、地址寄存器基地址与当前地址寄存器05读通道读通道2当前字节计数寄存器当前字节计数寄存器写通道写通道2基字节计数与当前字节计数寄存器基字节计数与当前字节计数寄存器06读通道读通道3当前地址寄存器当前地址寄存器写通道写通道3基地址与当前地址寄存器基地址与当前地址寄存器07读通道读通道3当前字节计数寄存器当前字节计数寄存器写通道写通道3基字节计数与当前字节计数寄存器基字节计数与当前字节计数寄存器08读状态寄存器读状态寄存器写命令寄存器写命令寄存器09-写请求寄存器写请求寄存器0A-写单个屏蔽位的屏蔽位寄存器写单个屏蔽位的屏蔽位寄存器0B-写工作方式寄存器写工作方式寄存器0C-写清除先写清除先/后触发
27、器命令后触发器命令0D读暂存寄存器读暂存寄存器写清除命令写清除命令(总清总清)0E-写清写清4个屏蔽位的屏蔽寄存器个屏蔽位的屏蔽寄存器0F-写写4个屏蔽位的屏蔽寄存器个屏蔽位的屏蔽寄存器8237A寄存器口地址寄存器口地址5.3.2 8237 内部寄存器和编程内部寄存器和编程1.内部寄存器及软件命令内部寄存器及软件命令(1)地址地址R(2)字计数字计数R基地址基地址R 当前寄存器的初值,自动预置时重送给当前当前寄存器的初值,自动预置时重送给当前R; 基字计数基字计数R 与当前与当前R同时装入,不能读出同时装入,不能读出当前地址当前地址R:DMA传送的传送的MEM地址,自动地址,自动1,自动预置时
28、,自动预置时,产生产生 , 重装重装当前字计数当前字计数R:DMA未传送的字节数,自动减未传送的字节数,自动减1 减过减过0(01=FFFFH)时,置时,置TC位位 初始化为比要传输的字节数少初始化为比要传输的字节数少1的值的值5.3.2 8237 内部寄存器和编程内部寄存器和编程(3)工作方式R(写,0BH)(每个通道都有一个)D7D6D5D4D3D2D1D0传送方式地址增减自动预置操作类型CH选择01:单次传送,1次1字节,两单次传送总线释放至少1周期10:成组传送连续,TC/为止00:请求传送连续,TC/DREQ无效为止11:级联传送:上级DREQ下级HRQ上级DACK下级HLDA0:地
29、址增1:地址减1:允许自动预置0:禁止自动预置00:检验,不传送01:写I/OM10:读MI/O11:无效00:CH001:CH110:CH211:CH3DATADATAD7D6D5D4D3D2D1D00:禁止存储器到存储器之间的数据传送禁止存储器到存储器之间的数据传送1:允许存储器到存储器之间的数据传送允许存储器到存储器之间的数据传送 0:禁止保持通道禁止保持通道0地址(当前)地址(当前) 1:允许保持通道允许保持通道0地址(当前)地址(当前) 0:正常时序正常时序 1:压缩时序压缩时序 0:固定优先级固定优先级 1:循环优先级循环优先级0:DACK低电平有效低电平有效1: DACK高电平有
30、效高电平有效0:DREQ高电平有效高电平有效1: DREQ低电平有效低电平有效 0:选择滞后写选择滞后写 1:选择扩展写选择扩展写(4)命令寄存器命令寄存器(写,写,08H)0:允许:允许DMAC工作工作1:禁止:禁止DMAC工作工作(5)请求寄存器请求寄存器(写写09H,写请求写请求R单个位)单个位)D7D6D5 D4 D3 D2 D1 D0不用不用 0 0:CH0 0 1:CH11 0:CH21 1:CH3 0:清请求位清请求位 1:置请求位置请求位 DMA请求可以通过请求可以通过DREQ硬件输入和编程软件请求硬件输入和编程软件请求请求请求标志位标志位 请求位不能屏蔽,有规定的优先级请求位
31、不能屏蔽,有规定的优先级 M M用写用写CH0的请求位启动的请求位启动 清请求清请求R中相应位,中相应位,RESET信号和主清命令总清请求信号和主清命令总清请求R 软件请求一般用于成组类的软件请求一般用于成组类的DMA传送传送(6)屏蔽寄存器屏蔽寄存器(写写0AH、0FH、0EH)每每CH一位,置屏蔽位,禁止本一位,置屏蔽位,禁止本CH DREQ有效请求进入请求有效请求进入请求R 写屏蔽写屏蔽R单个位(写单个位(写0AH)写屏蔽写屏蔽R所有位(写所有位(写0FH)D7D6D5 D4 D3 D2 D1 D0不用不用 0:清清CH0屏蔽位屏蔽位 1:置置CH0屏蔽位屏蔽位 0:清清CH1屏蔽位屏蔽
32、位 1:置置CH1屏蔽位屏蔽位 0:清清CH2屏蔽位屏蔽位 1:置置CH2屏蔽位屏蔽位 0:清清CH3屏蔽位屏蔽位 1:置置CH3屏蔽位屏蔽位D7D6D5 D4 D3 D2 D1 D0不用不用 0 0:CH0 0 1:CH11 0:CH21 1:CH3 0:清屏蔽位清屏蔽位 1:置屏蔽位置屏蔽位(6)屏蔽寄存器屏蔽寄存器(写写0AH、0FH、0EH)(续)(续)清屏蔽清屏蔽R所有命令位(写所有命令位(写0EH) 清除屏蔽清除屏蔽R所有位,各所有位,各CH均允许均允许DMA请求请求DREQ 当某当某CH设置为非自动预置时,设置为非自动预置时, 置相应屏蔽位置相应屏蔽位 RESET信号和主清命令总
33、置屏蔽信号和主清命令总置屏蔽R所有位。所有位。(7)软件命令软件命令主清命令:主清命令:OUT 0DH,AL ;同同RESET信号:清命令、状信号:清命令、状 态、请求、暂存寄存器和先态、请求、暂存寄存器和先/后触发器,置各通道的屏蔽标后触发器,置各通道的屏蔽标志。志。清先清先/后触发器命令:后触发器命令:OUT OCH,AL ;写写16位二进制数时,位二进制数时, 自动翻转。自动翻转。清屏蔽寄存器命令:清屏蔽寄存器命令: OUT OEH,AL ;清所有屏蔽位清所有屏蔽位D7D6D5D4D3D2D1D0CH3CH2CH1CH0CH3CH2CH1CH0(8)状态寄存器状态寄存器(读读08H)CH
34、i请求请求DMA服务服务和响应时置和响应时置1TC=1/ =0置置1RESET1/读状态寄存器读状态寄存器清清0(9)暂存寄存器暂存寄存器(读读0DH) M暂存寄存器暂存寄存器M 最后一个字节可读最后一个字节可读 RESET清除清除2. 8237初始化编程初始化编程MOV AL,04H ;检测前禁止检测前禁止8237工作工作OUT 08H,ALOUT 0DH,AL ;主清除命令主清除命令MOV AL,00HOUT 08H,AL ;写命令寄存器写命令寄存器MOV AL,0FFHOUT 01H,AL;装字计数寄存器低装字计数寄存器低8位位PUSH AXOUT O1H,AL ;装高装高8位位MOV
35、AL,58HOUT 0BH,AL ;写写CH0方式方式寄存器寄存器MOV AL,00HOUT 0AH,AL ;清清CH0屏蔽屏蔽位位5.3.3 8237的工作的工作流程和时序流程和时序(1)初始化初始化8237:起始地址、数据长度、工作方式、操作类型等。:起始地址、数据长度、工作方式、操作类型等。(2)外设外设8237 =1 8237HRQ =1 CPU HOLD=1 CPU HLDA=1 8237HLDA=1 8237 =1 外设。外设。(3)DMA周期周期 当前地址当前地址R输出高输出高8位地址位地址DB7DB0 ADSTB时存入时存入地址锁存器地址锁存器 AEN=1送上送上A15 A8;
36、当前地址当前地址R输出低输出低8位地址位地址 A7 A0 。 8237发发 ,读出数据送,读出数据送D7 D0 ;8237发发 ,DB上数据送入外设上数据送入外设/存储器。存储器。 一个一个DMA周期后,当前地址周期后,当前地址R+/-1,当前字计数器当前字计数器R减减1,根据设定的工作方式,重复或终止。根据设定的工作方式,重复或终止。DMA工作过程工作过程(4)当前字计数器当前字计数器R计数终止(计数终止(TC),),发出有效发出有效 ,终止,终止DMA传送。传送。自动预置自动预置:基寄存器:基寄存器当前寄存器,请求位、屏蔽位不变;当前寄存器,请求位、屏蔽位不变; 非自动预置非自动预置:复位
37、请求位、置屏蔽位、:复位请求位、置屏蔽位、HRQ0、释放总线。释放总线。(5)存存储储器器之之间间传传送送需需要要2个个总总线线周周期期8个个状状态态,必必须须由由软软件件置置源源通通道道CH0的的请请求求位位启启动动,也也可可以以对对外外部部 作作出出响响应应。这这种种方方式式可可用用于于块块搜搜索索,当当一一个个数数据据比比较较器器检检测测到到匹匹配配时时,向向8237发有效的发有效的 来终止搜索来终止搜索。DMA工作过程(续)工作过程(续)5.3.4 PC系列机中的系列机中的DMA控制系统控制系统1 PC/XT中的中的DMA控制逻辑控制逻辑2、PC/AT中的中的DMA系统逻辑结构系统逻辑
38、结构利利用用级级联联的的IBMPC/AT的的8237主主片片通通道道5,将将内内存存其其始始地地址址为为80000H的的280H字节的内容直接输出到外部设备。字节的内容直接输出到外部设备。3应用举例应用举例MOVAL,04H;命令字命令字,禁止禁止82C37工工作作OUTD0H,AL;写命令寄存器写命令寄存器MOVAL,0OUTD8H,AL;清除先清除先/后触发器后触发器OUTC4,AL;写低位地址写低位地址OUTC4,AL;写高位地址写高位地址MOVAL,04H ;页面地址为页面地址为8OUT 8BH,AL;写页面寄存器写页面寄存器MOVAX,280H;传输字节数传输字节数DEC AXOUT
39、 C6H,AL;写字节数低位写字节数低位MOVAL,AHOUT C6H,AL;写字节数高位写字节数高位MOVAL,89H;方式字方式字:单字节读单字节读,地址加地址加1OUT D6H,ALMOVAL,05H;写请求寄存器写请求寄存器OUTD2H,AL5.4 多功能多功能I/O接口芯片接口芯片8238082380内部功能体系结构5.4.1 DMA控制器控制器8通道,每个有通道,每个有一个一个24位字节计位字节计数寄存器、一个数寄存器、一个32位请求地址寄位请求地址寄存器和一个存器和一个32位位目标地址寄存器。目标地址寄存器。可通过编程选择可通过编程选择为循环优先级或为循环优先级或固定优先级。固定
40、优先级。可以在可以在I/0设备设备之间、存储器之之间、存储器之间、存储器和间、存储器和I/O设备之间进设备之间进行传送。行传送。传送数据块有传送数据块有3种方式:种方式:(1)单一缓冲方式)单一缓冲方式(2)缓冲器自动初始化方式)缓冲器自动初始化方式(3)缓冲器链接方式)缓冲器链接方式5.4.1 DMA控制器控制器5.4.2可编程中断控制器可编程中断控制器5个内部中断请求:个内部中断请求:(1)IRQ8,IRQ0;(2)IRQ1和和IRQ4;(3)IRQ1.5。15个外部中断请求:个外部中断请求:IRQ3,IRQ9,IRQ11IRQ23。IRQ7:容错处理中断:容错处理中断中断控制器:中断控制器:IRR、PR、ISR、IMR、VR。5.4.3可编程定时可编程定时/计数器计数器补充作业:补充作业:作业作业5.23 试编写一段用试编写一段用8237 DMAC执行执行 MM 传送的程序,把从传送的程序,把从SOURCE开始的开始的1000个字节传送到从个字节传送到从DST开始的存储块中去。设该开始的存储块中去。设该8237 DMAC的端口地址是的端口地址是10-1FH。