
第三节CPU与外设间的数据传送方式CPU与外设的工作速度不一致,如何使两者高效、可靠地进行数据传送,是本节讨论的问题
第三节 CPU与外设间的数据传送方式 CPU与外设的工作速度不一致, 如何使两者高效、可靠地进行数据传送, 是本节讨论的问题

有以下几种传送方式:无条件传送方式二条件传送方式(查询方式)三、中断传送方式四、DMA传送方式(Direct Memory Access)
一、 无条件传送方式 二、 条件传送方式 ( 查询方式 ) 三、 中断传送方式 四、 DMA传送方式 ( Direct Memory Access) 有以下几种传送方式:

一、无条件传送方式(同步传送方式)实现方法CPU不查询外设工作状态,与外设速度的匹配通过在软件上延时完成,在程序中直接用I/O指令,完成与外设的数据传送特点1.适用于外设动作时间已知,在CPU与外设进行数据传送时,外设保证已准备好的情况2.软硬件十分简单
一、无条件传送方式 (同步传送方式) 实现方法 CPU不查询外设工作状态, 与外设速度的匹配通过在软件上延时完成, 在程序中直接用I/O指令,完成与外设的数据传送 特点 1. 适用于外设动作时间已知, 在CPU与外设进行数据传送时,外设保证已准备好的情况 2. 软硬件十分简单

例1无条件输入接口(参看教材图6-8)数据线输入三态D7设备缓冲器PCDO地址线A15200H总地址译码A0o线与00dIOR非接口电路,即硬件上保证:只在CPU执行从200H端口输入数据时三态门处于工作状态,使输入设备的数据送上总线侧,而CPU执行其它指令时三态门均处于高阻状态,使输入设备的数据线与总线侧断开
例 1 无条件输入接口(参看教材图6-8) 接口电路,即硬件上保证: 只在CPU执行从200H端口输入数据时, 三态门处于工作状态,使输入设备的数据送上总线侧, 而CPU执行其它指令时, 三态门均处于高阻状态, 使输入设备的数据线与总线侧断开 三 态 缓冲器 输入 设备 数据 线 IOR 地址 译码 地址线 200H 0 0 0 D7 ~ D0 A15 ~ A0 与 非 PC 总 线

无条件输入编程:从端口200H读入100个字节到内存缓冲区buffer中MOVAX.SEGbuffer;取缓冲区MOVDS,AX;延时子程;首地址LEADL, bufferPROCdelay;传送个数MOVCX, 100HPUSH CX;端口地址MOVDX,200H;延时等待CALL next:delayMOVCX,80HIN读入数据AL, DXLOOPcccc:;送缓冲区MOV[DI], ALCXPOPDIINC;修改指针RETLOOPnextENDPdelay
无条件输入编程: 从端口200H读入100个字节到内存缓冲区buffer中。 、 MOV AX, SEG buffer MOV DS, AX ;取缓冲区 LEA DI, buffer ;首地址 MOV CX, 100H ;传送个数 MOV DX, 200H ;端口地址 next: CALL delay ;延时等待 IN AL, DX ;读入数据 MOV [DI], AL ;送缓冲区 INC DI ;修改指针 LOOP next 、 ;延时子程 delay PROC PUSH CX MOV CX, 80H cc: LOOP cc POP CX RET delay ENDP

例2无条件输出:编程控制系统板上扬声器发声。76.532扬声器控制电路图61H端口0放大器与扬声器8253控制其它外设门发声原理:向扬声器发送一串脉冲信号,推动扬声器内纸盆振动,发出声音脉冲的频率,控制音高;个数脉冲的个数,控制音长?
例2 无条件输出 : 编程控制系统板上扬声器发声。 7 6 5 4 3 2 1 0 61H 端口 8253 与 门 放 大 器 扬 声 器 0 1 控制其它外设 扬声器控制电路图: T 个数 发声原理: 向扬声器发送一串脉冲信号, 推动扬声器内纸盆振动,发出声音 脉冲的频率,控制音高; 脉冲的个数,控制音长

扬声器控制电路图:61H端口0放大器与门扬声器8253控制其它外设编程方法:1.使61H端口的0位输出0,控制8253输出1。2.使61H端口的1位按所需频率交替输出0和1产生所需的声音
1. 使61H端口的0位输出0,控制8253输出1。 2. 使61H端口的1位按所需频率交替输出0和1, 产生所需的声音。 编程方法: 7 6 5 4 3 2 1 0 61H 端口 8253 与 门 放 大 器 扬 声 器 0 1 控制其它外设 扬声器控制电路图:

61H端口发声程序:0放大器8253与扬声器控制其它外设codeSEGMENT门ASSUMECS:codeMOVBX. 3000Hstart:控制脉冲个数MOVDX. 6000H:控制脉冲周期INAL. 61H:读入61H端口数据ANDAL, 1111 1110b;D0为0,8253输出1XORAL,sound:00000010bOUT61H, AL;61H端口的D1交替为0和1MOVCX, DX;延时delay:LOOPdelayDECBX;控制脉冲数JNZsoundMOVAH,4CH21HINTENDScodeL个数-ENDstart
code SEGMENT ASSUME CS:code start: MOV BX, 3000H ;控制脉冲个数 MOV DX, 6000H ;控制脉冲周期 IN AL, 61H ;读入61H端口数据 AND AL, 1111 1110b ;D0为0,8253输出1 sound: XOR AL, 0000 0010b OUT 61H, AL ; 61H端口的D1交替为0和1 MOV CX, DX delay: LOOP delay ;延时 DEC BX ;控制脉冲数 JNZ sound MOV AH, 4CH INT 21H code ENDS END start 发声程序: 61H 端口 8253 与 门 放 大 器 扬 声 器 0 1 控制其它外设 T 个数

思考:将发声程序改编为一子程:入口参数控制音长BXDX控制音高
将发声程序改编为一子程: 入口参数 BX 控制音长 DX 控制音高 思考:

二、条件传送方式(查询传送方式)实现方法:在与外设进行传送数据前,CPU先查询外设状态,当外设准备好后,才执行I/O指令,实现数据传送特点:1.CPU通过不断查询外设状态,实现与外设的速度匹配2.CPU的工作效率低
二、条件传送方式(查询传送方式) 实现方法: 在与外设进行传送数据前,CPU先查询外设状态, 当外设准备好后,才执行I/O指令,实现数据传送 特点: 1. CPU通过不断查询外设状态,实现与外设的速度匹配 2. CPU的工作效率低