Download presentation
Presentation is loading. Please wait.
Published bySurya Hartanto Modified 5年之前
1
第3章 微型计算机输入输出接口 3.1 输入/输出接口 3.2 输入输出数据传输的控制方式 3.3 开关量输入输出接口 欢迎辞
2
3.1 输入/输出接口 3.1.1 外部设备及其信号 3.1.2 I/O接口的功能 3.1.3 I/O端口的编址方法
3.1 输入/输出接口 外部设备及其信号 I/O接口的功能 I/O端口的编址方法 简单I/O接口的组成
3
外部设备(Peripheral Device)
外部设备及其信号 外部设备(Peripheral Device) 按照与CPU数据传输的方向划分: (1)输入设备 键盘、鼠标、光笔 输入图形信息的扫描仪、数码相机 检测现场信息的数字化测试仪表 模拟量采集和模拟量/数字量转换装置等
4
(2)输出设备 (3)复合输入/输出设备 外存储设备是典型的复合输入/输出设备: 显示器、打印机 绘图仪
现场控制的数字量/模拟量转换装置和执行元件 (3)复合输入/输出设备 外存储设备是典型的复合输入/输出设备: 磁带机(Tape Driver) 软磁盘驱动器(Floppy Driver) 硬磁盘驱动器(Hard Disk Driver) 光盘驱动器(Compact Disk Driver) 许多光盘只能读出信息,称为CD—ROM (Compact Disk—Read Only Memory),只读光盘只能用作输入设备。
5
2. 外部设备的信号 (1)数据信号 按照信号的物理形态,可分为以下几种; 数字量: 以二进制形式表述的数据、图形或文字信息。
2. 外部设备的信号 (1)数据信号 按照信号的物理形态,可分为以下几种; 数字量: 以二进制形式表述的数据、图形或文字信息。 模拟量: 现场的物理量通过传感器件,转换为大小与之对应的电压或电流信号。这些量呈连续变化的形态,称为模拟量(Analog)。 开关量: 开关量是只有二种状态(0,1)的量,如开关的接通(ON)与断开(OFF),电机的启停等 脉冲量: 计数脉冲、定时脉冲和控制脉冲 对于输入设备,数据信号从外设送往CPU 对于输出设备,数据信号从CPU发往外部设备。
6
(2)状态信号 状态信号表明外部设备当前的工作状态,用来协调CPU与外部设备之间的操作。 典型的状态信号:READY, BUSY
有的设备有指示出错状态的信号,如打印机的纸尽(Paper Out),故障(Fault)。 不同的外设可以有不同的状态信号。 状态信号总是从外部设备发往CPU。
7
数据信号、状态信号、控制信号都是以“数据”的形式,通过数据总线在CPU和外部设备之间进行传输的。
(3)控制信号 控制信号是CPU向外设发出的命令,它指定设备的工作方式,启动或停止设备 控制信号的格式因设备而异 控制信号从CPU发往外部设备 数据信号、状态信号、控制信号都是以“数据”的形式,通过数据总线在CPU和外部设备之间进行传输的。
8
3.1.2 I/O接口的功能 接口:计算机一个部件与另一个部件之间的连接界面。 功能: 1. 设备选择功能 2. 信息传输功能
1. 设备选择功能 CPU通过地址代码来标识和选择不同的外部设备 接口对系统总线上传输的外设地址进行译码,在检测到本设备地址代码时,产生相应的“选中”信号 2. 信息传输功能 设备被“选中”时: 从CPU/数据总线接收数据或控制信息 外部设备的数据或状态信息发往数据总线/CPU
9
外设使用的数据格式与CPU数据格式不同时,接口要进行二种数据格式之间的相互转换。 联络功能
3. 数据格式转换功能 外设使用的数据格式与CPU数据格式不同时,接口要进行二种数据格式之间的相互转换。 联络功能 从系统总线或外设接收一个数据后,发出“数据到”联络信号,通知外设或CPU取走数据 数据传输完成,向对方发出信号,准备进行下次传输 5. 中断管理功能 向CPU申请中断; 向CPU发中断类型号; 中断优先权的管理; 在以8086为CPU的系统中,这些功能大部份可以由专门的中断控制器实现。
10
复位功能 7. 可编程功能 有些接口具有可编程特性,可以用指令来设定接口的工作方式、工作参数和信号的极性。
接口在接收系统的复位信号后,将接口电路及其所连接的外部设备置成初始状态。 7. 可编程功能 有些接口具有可编程特性,可以用指令来设定接口的工作方式、工作参数和信号的极性。
11
错误检测功能 (1) 物理信道上的传输错误 (2) 数据传输中的覆盖错误 信号在线路上传输时,如果遇到干扰信号,可能发生传输错误。
检测传输错误的常见方法是奇偶检验。 (2) 数据传输中的覆盖错误 输入设备完成一次输入操作后,把所获得的数据暂存在接口内 如果在该设备完成下一次输入操作之后,CPU还没有从接口取走数据,那么,在新的数据送入接口后,上一次的数据被覆盖,从而导致数据的丢失 输出操作中也可能产生类似的错误 覆盖错误导致数据的丢失,易发生在高速数据传输的场合
12
3.1.3 I/O端口的编址方法 有两种不同的I/O端口编址方式: 1. I/O端口与内存统一编址
优点: 访问内存单元和I/O端口使用相同的指令,使用方便 降低CPU电路的复杂性 缺点: 减少了内存可用范围 难以区分访问内存和I/O的指令,降低了程序的可读性和可维护性
13
I/O端口与内存独立编址 内存储器和I/O端口各自有自己独立的地址空间 访问I/O端口需要专门的I/O指令
8086/8088 CPU采用这种方式 访问内存储器 使用20根地址线A0~A19 使M/IO#=1 内存地址范围为00000~0FFFFFH共1MB 访问I/O端口 使用低16根地址线A0~A15 使M/IO#= 0 I/O端口地址范围为0000~0FFFFH共64K
14
3. IBM PC 微型计算机I/O端口地址分配
在PC系列微机中,仅使用A0~A9共10条地址线定义I/O端口(设A11~A15= 0),寻址范围为0~3FFH 前256个端口地址供主板上寻址I/O接口芯片使用,后768个供扩展槽接口卡使用 用户设计I/O接口电路的时候,应使用系统未占用的端口地址区域 为避免所选择的地址与其他扩展卡冲突,最好将其设计成地址可选的型式 IBM-PC微机系统板各I/O接口器件端口地址见表3-1。
15
3.1.4 简单I/O接口的组成 端口 端口:接口内的寄存器,用来暂存CPU和外设之间传输的数据、状态和命令。
端口地址:每一个端口有一个独立的地址。 外部设备地址:设备接口内各端口的地址,一台外部设备可以拥有几个通常是相邻的端口地址。 端口种类:数据端口、命令端口(控制端口)和状态端口。 如果外部设备的信息(数据/状态)已经锁存,端口也可以由三态缓冲电路组成。
16
地址译码电路 一个接口上的几个端口地址通常是连续排列的, 可以把16位地址码分解为二个部分: 例如:某接口占有地址330H~333H:
地址译码是接口的基本功能之一。 一个接口上的几个端口地址通常是连续排列的, 可以把16位地址码分解为二个部分: 高位地址码用作对接口的选择; 低位地址码用来选择接口内不同的端口。 例如:某接口占有地址330H~333H: 高8位地址为 B时,本接口被选中; 低2位地址为00,01,10,11时,选择接口内的不同端口。
17
图3-1 端口的地址译码电路
18
为了避免地址冲突,许多接口电路允许用“跳线器(JUMPER)”改变端口地址。上页图3-1(b)
将异或门的输出代替图3-1(a)中的A8,A9引脚: 二个跳线引脚均接地时,上面译码电路仍然产生330H~333H的端口译码信号; 当二个跳线引脚均接“1”时,上面译码电路会产生030H~033H的端口译码信号 同理还可以产生130H~133H,230H~233H的译码信号。 8086工作于最大模式时,上面的M/IO#、WR#、RD#信号由8288总线控制器发出的IORC#、IOWC#代替。
19
由于读、写操作不会同时进行,一个输入端口和另一个输出端口可以使用同一个地址编码。
例如,可安排数据输入端口、数据输出端口使用同一个地址330H,命令端口和状态端口共同使用地址331H。 需要注意的是,数据输入端口和数据输出端口虽然使用相同的地址,但却是二个各自独立的不同的端口。
20
数据锁存器与缓冲器 数据(状态)输入端口: 必须通过三态缓冲器与系统总线相连,保证数据总线能够正常地进行数据传送。
输入设备在完成一次输入操作后,在输出数据的同时,产生数据选通信号,把数据打入八位锁存器74LS273 锁存器的输出信号通过三态八位缓冲器74LS244连接到系统数据总线。 数据端口读信号由地址译码电路产生。 高电平(无效):缓冲器输出端呈高阻态。 低电平(有效,端口被选中 ):已锁存的数据通过74LS244送往系统数据总线,被CPU所接收。
21
图3-3 输入设备接口的数据锁存和缓冲电路
22
数据(命令)输出端口: CPU送往外设的数据或命令,应由接口进行锁存,以便使外设有充分的时间接收和处理。 八位输出锁存电路例(图3-4)。
23
图3-4 输出锁存电路
24
简单的输入/输出接口(图3-5) 把地址译码、数据锁存与缓冲、状态寄存器、命令寄存器各个电路组合起来,构成简单输入/输出接口
接口连接的信号: 与系统总线连接: 地址总线A0~A15 数据总线D0~D7 控制总线M/IO#、RD# 、WR# (最小模式时)或IOWC#、IORC#(最大模式时)相连接 与外部设备相连:数据、状态、命令。
25
图3-5 简单接口的组成
26
3.2 输入输出数据传输的控制方式 程序方式 中断方式 直接存储器存取(DMA)方式
27
3.2.1 程序方式 1. 无条件传送方式 在程序控制下进行信息传送 分为无条件传送和条件传送二种
程序方式 在程序控制下进行信息传送 分为无条件传送和条件传送二种 1. 无条件传送方式 对于简单的外部设备的I/O操作可以随时进行; 例如,开关、发光二极管 这些简单设备的输入信号一般不需要锁存,可以通过三态缓冲器与系统数据总线直接相连。 简单输出设备的信号一般需要由锁存器锁存
28
图3-6 无条件输入/输出传送接口
29
条件传送方式 条件传送也称为查询式传送、异步传送; 接口电路除了有传送数据的端口以外,还应有储存和传送状态的端口。 对于输入过程:
外设将数据准备好, “准备好(READY)”标志位置1; CPU将数据取走,READY=0 对于输出过程: 外设接收到数据,将“忙(BUSY)”标志位置1 数据输出完成,将 “BUSY”清零。
30
一个数据的“条件传送”过程: CPU从接口中读取状态字;
如状态字表明外设已处于“就绪”状态,则传送数据。
31
图3-9 查询式输入流程
32
查询方式输入接口电路(图3-7) 接口内有两个端口: 选通信号有二个作用: 数据信息和状态信息从不同端口经过数据总线送到CPU。
数据端口(8位,输入) 状态端口(1位,输入,连接在D7上,=1表示有数据) 选通信号有二个作用: 将外设的数据送到接口的锁存器中; 使接口中的D触发器置“l”(READY=1) 数据信息和状态信息从不同端口经过数据总线送到CPU。
33
图3-7 查询式输入接口电路
34
汇编语言程序: C语言程序: AGAIN: IN AL, STAT_PORT; 读状态端口,D7=1表示“数据就绪”
TEST AL,80H ; 测试“数据就绪”位 JZ AGAIN ; 未就绪,继续读状态端口 IN AL, DATA_PORT ; 已就绪,从数据端口读取数据 …… C语言程序: do stat = inportb( stat_port ); while (stat && 0x80 = = 0); /* 数据未准备好反复读状态 */ data = inportb( data_port ); /* 数据已准备好则读取数据 */
35
查询方式输出接口电路(图3-8) 接口内有两个端口: CPU读取接口中的状态: 数据端口(8位,输出)
状态端口(1位,输入,连接在D7上,=1表示正在输出,“BUSY”) CPU读取接口中的状态: 外设忙( BUSY =1),CPU等待 外设空闲( BUSY =0),向外设输出数据
36
图3-8 查询式输出接口电路
37
“数据端口写”信号作用: D触发器的作用: 把数据打入“锁存器”; 将“状态触发器”置1
为外设提供一个联络信号STB,告诉外设现在接口中已有数据可供提取; 用作该设备的状态标志( “忙”,BUSY)。
38
汇编语言程序: C语言程序: ONE: IN AL, STATUS_PORT ; 读状态端口 TEST AL, 80H ; 测试“忙”位
JNZ ONE ; 忙,再读状态端口 MOV AL, DATA ; 不忙,取来数据 OUT DATA_PORT, AL ; 送入数据端口 …… C语言程序: do stat = inportb( status_port ); while ( stat && 0x80 = = 0x80 ); /*设备“忙”:反复读状态*/ outportb( data_port, data ); /*设备空闲:输出数据 */
39
查询式输入/输出的程序设计例 某字符输入设备以查询方式工作: 要求: 数据输入端口: 0054H, 状态端口: 0056H。
状态寄存器:D0=1,数据准备好,可以输入; 状态寄存器:D1=1,输入设备发生故障 要求: 从该设备上输入80个字符,配上水平和垂直校验码(偶校验),向串行口输出。 如果设备出错,显示错误信息后停止。
40
汇编语言程序: .data Buffer DB 81 dup( ? )
Message DB ‘Device Fault !’,0DH,0AH,’$’ .code Start:MOV ;对DS初始化 MOV DS,AX LEA SI, Buffer ;设置SI为缓冲区指针 MOV CX, 80 ;设置CX为计数器 MOV DL, 0 ;DL置垂直校验码初值
41
JNZ ERROR ;设备故障,转ERROR TEST AL, 01H ;测状态寄存器D0 JZ Next ;未准备好,则等待,再测
Next:IN AL, 56H ;读入状态 TEST AL,02H ;测状态寄存器D1 JNZ ERROR ;设备故障,转ERROR TEST AL, 01H ;测状态寄存器D0 JZ Next ;未准备好,则等待,再测 IN AL,54H ;准备好, 输入字符 AND AL, 7FH ;清最高位,进行校验 JPE Store ;已经是偶数个1,则转Store OR AL,80H ;奇数个1,将最高位置为1 Store: XOR DL,AL ;产生垂直校验码 MOV [SI], AL ;将字符送缓冲区 INC SI ;修改地址指针 LOOP Next ;80个字符未输入完成,继续
42
MOV [SI], DL ; 输入完成, 保存垂直校验码
Tranfer:LEA SI,Buffer ;准备发送,SI中置字符串首址 MOV CX, ;发送字符数 One:MOV AH,04H ;设置串口输出功能号 MOV DL, [SI] ;取出一个字符 INT 21H ;从串口输出 INC SI ;修改指针 LOOP One ;输出下一个字符 JMP Done Error: MOV AH, 09H ;设备故障,输出出错信息 LEA DX, Message INT 21H Done: MOV AH, 4CH INT 21H ;返回DOS END Start
43
产生水平校验码:从设备读入数据,清除最高位,根据剩余七位的奇偶特性决定最高位置1或不变(保持为0)。
说明: 程序由二段循环程序组成: 第一段程序从设备输入80个字符,同时产生它的水平/垂直校验码存入缓冲区; 第二段程序将缓冲区内容通过串口输出。 测试状态位要注意先后次序: 由于设备故障将导致该设备不能正常输入,使完成标志(D0)恒为零。所以,在设备发生故障时先判是否完成可能导致程序死循环。 产生水平校验码:从设备读入数据,清除最高位,根据剩余七位的奇偶特性决定最高位置1或不变(保持为0)。 产生垂直校验码:将80个字节半加(异或)得到。
44
多个设备循环查询方法举例: 三个设备,它们状态端口地址分别为STATl、STAT2、STAT3,三个状态端口均使用第5位作为准备好标志。
TREE: MOV FLAG,3 INPUT: IN AL,STAT l TEST AL,20H JZ DEV2 CALL PROC l
45
DEV2: IN AL,STAT2 TEST AL,20H JZ DEV3 CALL PROC2 DEV3; IN AL,STAT3 TEST AL,20H JZ NOINPUT CALL PROC3 NOINPUT:CMP FLAG,0 JNE INPUT ……
46
说明: PROCl、PROC2、PROC3是三个设备输入数据并进行处理的子程序。 FLAG存放三个设备输入完成的标志,初始值为3。
上例仅适用于三个设备工作速度都比较慢的情况; 如果其中一个设备工作速度很快,而其他设备的输入输出处理程序运行时间又较长,可能发生“覆盖错误”。 在这种情况下,应优先执行工作速度较快的外设的I/O过程,然后再执行其他设备的I/O过程。
47
3.2.2 中断方式 程序查询方式的特点: 程序查询方式解决了CPU与外设工作的协调问题,但是却大大降低了CPU的使用效率;
中断方式 程序查询方式的特点: 程序查询方式解决了CPU与外设工作的协调问题,但是却大大降低了CPU的使用效率; 在程序查询方式中,CPU处于主动地位,外设处于消极等待查询的被动地位; 设备较多时,查询方式的数据传送很难使每一个外设都能工作在最佳状态。
48
程序中断方式特点: 赋予系统中的外设某种主动申请、配合CPU工作的“权利”。 外设把数据准备好时,主动向CPU发出一个请求信号。
49
中断方式举例: 某外设在1秒内传送100个字节。 若用程序查询的方式传送,则CPU为传送100个字节所化费的时间等于1秒。
设CPU执行一次中断服务程序需要100μs; 传递100个字节CPU所使用的时间为100μs×100=10ms; CPU处理中断开销为1%,99%的时间可执行其他任务; 中断方式的数据传送仍在程序的控制下执行,称为程序中断方式; 适应于中、慢速的外部设备数据传送。
50
3.2.3 直接存储器存取(DMA)方式 程序中断方式,程序查询方式的缺点: 中断方式: 程序查询方式:
每传送一次数据,CPU必须执行一次中断服务程序; 对于高速数据传输,容易产生“覆盖错误”。 程序查询方式: 响应速度比中断方式要快一些,完成一次数据传输仍然需要执行七、八条以上的指令。 CPU的工作速度不高时仍有可能跟不上外设数据传输的需要。
51
(Direct Memory Access—DMA)
直接存储器传送 (Direct Memory Access—DMA) 将外设的数据不经过CPU直接送入内存储器; 或者,从内存储器不经过CPU直接送往外部设备; 一次DMA传送只需要执行一个DMA周期(相当于一个总线读/写周期); 能够满足高速外设数据传输的需要; 需要一个专门的器件来协调外设接口和内存储器的数据传输,称为DMA控制器(DMAC)
52
图3-10 DMA数据传送示意图
53
3.3 开关量输入输出接口 开关量输入接口 开关量输入接口
54
3.3.1 开关量输入接口 1. 基本的开关量输入接口 开关形态:单刀单掷开关/单刀双掷开关/按钮 开关量通过三态缓冲器与系统数据总线连接
常用的三态缓冲器: 74LS244(输入输出同相)/74LS240(输入输出反相) 一条输入指令可以同时读入8位或16位开关量。
55
图3-11 基本开关量输入接口
56
2. 矩阵式开关量输入接口 电路特点: 开关数量多时,可以排列成矩阵,例如:图3-13(键盘)
数据输出端口连接8根“行线”(Row,R0~R7); 数据输入端口连接8根“列线”(Column, C0~C7); 电路特点: 没有键按下时,列线端口输入为全“1”; 行线端口输出全“1”时,不论有无键按下,列线端口输入仍然为全“1”; 某一行线输出“0”时,如果该行上有一个键按下,则输入端口输入代码为7个“1”,1个“0”,0的位置与被按下键的位置相对应。
57
图3-12 键盘(矩阵式开关量输入)接口
58
键盘扫描与编码: 对8根行线逐行扫描,识别按键的所在行、列,从而获得该键的代码;
一个键的编码可以用它的二字节“行列码”表示。例如,(R3,C2)的二字节“行列码”为F7FBH: F7H= :按键在R3行上; FBH= :按键在C2列上; 用“行列码”查表,可以得到这个键的代码。 键的编码也可以用一字节“扫描码”表示。上例中按键的一字节“扫描码”为32H: 高4位0011:键所在的行; 低4位0010:键所在的列; 键刚按下时,会产生“抖动”。
59
键盘扫描程序: 没有键被按下,返回-1; 有键按下时返回按键的二字节“行列码”(行码为高8位,列码为低8位);
RPORT, CPORT 定义为行、列端口的地址。 unsigned int kbinput( ) { unsigned int row, row0, column, code, k=0; outportb( RPORT, 0); /*各行输出全0,测试有无键按下*/ if (inportb(CPORT) & 0xff = = 0xff ) return( 0xffff ); /* 没有键按下,返回全“1” */ delay(20); /* 延时20ms,消除抖动 */
60
if (inportb(CPORT) & 0xff = =0xff ) return( 0xffff );. /. 再次测试,确认有键被按下
row0 = row = 0xff7f; column = 0xff; k=0; /* 置行码初值:从最高位对应行开始逐行扫描 */ while( k < 8 && column = = 0xff ) /* 循环:8行未测试完,并且未找到按键所在行 */ { outportb( RPORT, row ); /* 输出行码,测试行输出0,其余行输出1 */ column = inportb( CPORT ) & 0x00ff; /* 读入列码 */ row0 = row; row = (row>>1) ; k++; /* 形成下一个行码 */ }
61
if (column = = 0xff ) return( 0xffff );
/* 未找到按键所在行,返回全“1” */ code = (row0 & 0xff)* 0x100 + column; /* 由行码、列码组合得到“行列码” */ return (code ); }
62
3.3.2 开关量输出接口 1. 基本的开关量输出接口 常见的开关量输出: LED发光二极管 执行元件驱动线圈
开关量输出接口 1. 基本的开关量输出接口 常见的开关量输出: LED发光二极管 LED指示灯用于指示室内仪表状态 小功率LED可以由逻辑电路直接驱动: 输出0:LED发光 输出1:LED熄灭 执行元件驱动线圈
63
表3-3 部分逻辑电路输出端电流 器件型号 高电平输出电流 低电平吸收电流 74LS00,04,10,20,30(逻辑门) 400μA
8mA 74LS01,03,05,12,22(OC门) 100μA 7407(OC驱动器) 250μA 40mA(Voh=30V) 74LS244(总线驱动器) 15mA 24mA 74LS273(D触发器) 74LS373(三态输出锁存器) 2.6mA
64
大功率LED驱动或执行元件驱动线圈的驱动:
普通逻辑电路输出,外接功率放大三极管驱动; 集电极开路驱动器(OC驱动器),输出端通过上拉 电阻接高压。
65
2. LED七段数码显示管接口
66
图3-15 多位LED数码显示接口
67
多位LED显示器驱动: 多位不同的数字同时显示在不同的数码管上。 送段码之前熄灭所有数码管可以消除“段码”和“位码”不同步产生的闪烁。
设置位码,熄灭所有数码管; 将一个数码管的字形代码(段码)送入段码端口; 设置位码,点亮一个数码管 适当延时后,重复以上过程 多位不同的数字同时显示在不同的数码管上。 送段码之前熄灭所有数码管可以消除“段码”和“位码”不同步产生的闪烁。
68
多位LED数码显示程序: 需要输出的数字分别是1,2,3,4,5,6,7,8 段码和位码的端口地址分别是segport 和 bitport
;数据段和堆栈段 .data Segtab db 40h, 4fh, 24h, 30h, 19h db 12h, 02h, 78h, 00h, 10h buffer db 1, 2, 3, 4, 5, 6, 7, 8 segcode db ? bitcode db ? .stack 100h
69
.code leddisp proc far push ds ; 保护各寄存器内容 push ax push bx push cx push si mov ;装载ds mov ds, ax lea bx, segtab ;bx 置为七段码表首址 mov bitcode, 80h ; 位码初始值为80H(从左边开始) mov si, 0 ;si用作输出缓冲区指针,初值0 mov cx, 8 ;cx 用作循环计数器,初值8
70
one: mov al, 0 out bitport, al ; 送位码0,熄灭各LED mov al, buffer[si] ;取出一个待输出数字 xlat ; 转换成七段码 out segport, al ; 向段码端口输出 mov al, bitcode out bitport, al ; 输出位码,点亮一个LED ror bitcode, 1 ; 修改位码,得到下一个位码 inc si ; 修改输出缓冲区指针 call delay ; 延时 loop one ; 循环,点亮下一个LED
71
pop si pop cx ;恢复各寄存器 pop bx pop ax pop ds ret ; 返回主程序 leddisp endp end
72
习题3 1. 接口电路与外部设备之间传送的信号有哪几种?传输方向怎样? 2. 接口电路有哪些功能?哪些功能是必需的?
3. I/O端口的编址有哪几种方法?各有什么利弊?80X86系列CPU采用哪种方法? 4. 按照传输信号的种类,I/O端口有几种?它们信号的传输方向怎样? 5. I/O端口译码电路的作用是什么?在最小模式和最大模式下分别有哪些输入信号? 6. 外部设备数据传送有哪几种控制方式?从外部设备的角度,比较不同方式对外部设备的响应速度。
73
7. 叙述一次查询式输出过程中,接口内各电路、信号的状态变化过程。
8. 比较程序中断方式和查询方式的区别,根据比较,指出中断工作方式的优缺点。 9. 比较DMA方式和程序中断方式的区别,根据比较,指出DMA工作方式的优缺点。 10. 某输入设备数据端口、状态端口、控制端口地址分别为70H, 71H, 72H。状态端口D5=1表示输入完成,控制端口D7=1表示启动设备输入(输入完成后由设备清除该位)。从该设备输入100个字节数据,存入以BUFFER为首地址的缓冲区。如果启动该设备1秒后仍未完成一次输入,则视为超时错,显示出错信息后返回。分别用8086汇编语言和C语言编写完成上述功能的I/O程序。
74
11. 某输出设备数据端口、状态端口地址分别为220H, 221H。状态端口D0=1表示输出完成。将数据段中以STRING为首地址的20个字符(用七位ASCII代码存储)添加水平和垂直校验发送到该外部设备。用8086汇编语言编写完成上述功能的I/O程序。 12. 试画出矩阵式键盘查询的程序流程图。 13. 试画出公用端口多位LED输出的程序流程图。
Similar presentations