- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章输入输出系统及接口
微型计算机原理 王立萍 外部设备需要接口电路与计算机相连,而为什么不能象存储器那样直接连接到数据总线、地址总线和控制总线呢? 计算机如何和这些电气性能不同、速度不同以及所处理的信息格式不同的设备连接,以便能够正确地输入/输出信息,而不造成信息的混乱、丢失呢? 1.数据格式转换 两个独立的地址空间,地址空间重叠 地址空间的分配 I/O端口独立编址方式的优点: 地址空间的分配 2.译码器译码 无条件传送的接口电路: ⑴查询式输入 ⑵查询式输出 ⑶采用查询方式的数据采集系统 则输入/输出程序段为: INDATA: MOV DX,0100H;设置模拟开关的控制码DL,计数初值DH LEA BX,DBUFF ;数据换冲区的地址送BX AGAIN: MOV AL,DL ;选通一路模拟量转换,初始为IN0路 OUT 12H,AL CALL DELAY ;延时等待转换完成 IN AL,10H ;输入高八位数据 MOV AH,AL ;送AH IN AL,11H ;输入低八位数据送AL MOV [BX],AX ;保存 INC BX ;改变数据缓冲区指针 INC BX INC DL ;为下一个模拟量转换作准备 ROL DH,1 ;DH左移一位,进行移位计数 JNC AGAIN ;八个模拟量未转换完,转AGAIN循环 RET 2.程序查询传送方式 又称为条件传送,或异步传送 I/O操作前,不断读取并测试外设的状态。就绪,则交换信息,否则继续查询等待,直到就绪。 接口电路中应具有数据端口和状态端口 传送过程 ①读取状态字 ②测试状态字的相应位是否满足“就绪”条件,如果不满足,则回到前一步继续读取状态字 ③如果状态字表明外设已经处于“就绪”状态,则传送数据 工作过程为: ①外设发选通信号,将外设的数据打入锁存器;另使D触发器输出1,送状态缓冲器; ②读取状态缓冲器; ③准备好则读取数据缓冲器 程序查询输入接口电路 查询式输入流程 复位状态 状态 数据 查询输入部分的程序为: INDATA:IN AL,STATUS_PORT ;从状态端口读入状态 TEST AL,01H ;测试是否“准备好” JZ INDATA ;否,转INDATA循环测试 IN AL,DATA_PORT ;是,从数据端口读取数据 工作过程: ①外设空闲,发ACK复位D触发器作为外设状态; ②CPU读取外设状态; ③若外设空闲,则送出数据,并置位D触发器; 读状态 送数据 置位 查询输出部分的程序为: OUTDATA:IN AL,STATUS_PORT ;读入状态 TEST AL,80H ;测试是否”忙” JNZ OUTDATA ;是,转OUTDATA循环测试 MOV AL,STORE ;否,从缓冲区取数据 OUT DATA_PORT,AL ;输出到数据端口 图示电路为采用查询方式进行八路模拟量输入的数据采集系统。 8路输入模拟量经过控制端口U3(端口地址为12H)输出的三位二进制码(D0、D1、D2)控制八选一模拟开关U4每次选通一个模拟量(000选择IN0输入,001选择IN1输入,…,111选择IN7输入),送到A/D转换器;同时A/D转换器由U3输出的D4位控制启动/停止。A/D转换器的转换结束信号(即READY)由端口U2(端口地址为11H)连接到CPU数据总线D7位,经A/D转换后的8位数据由端口U1(端口地址为10H)输入到数据总线。 则输入/输出程序段为: START: MOV DL,0F8H ;设置启动A/D转换的信号 LEA DI,DBUFF ;数据缓冲区地址送DI AGAIN: MOV AL,DL AND AL,0EFH ;使D4 0 OUT 2H,AL ;停止A/D转换 CALL DELAY ;等待停止A/D操作的完成 MOV AL,DL OUT 12H,AL ;选择一路,并启动A/D转换 JUDG: IN AL,11H ;输入状态信息 TEST AL,80H ;准备好否? JZ JUDG ;未准备好,循环测试 IN AL,10H ;输入数据 STOSB ;保存 INC DL ;修改开关控制信号指向下一个模拟量 JNE AGAIN ;8个模拟量未转换完,循环 查询输出部分的程序为: OUTDATA:IN AL,STATUS_PORT ;读入状态 TEST AL,80H ;测试是否”忙” JNZ OUTDATA ;是,转OUTDATA循环测试 MOV AL,STORE ;否,从缓冲区取数据 OUT DATA_PORT,AL ;输出到数据端口 图示电路为采用查询方式进行八路模拟量输入的数据采集系统。 8路输入模拟量经过控制端口U3(端口地址为12H)输出的三位二进制码(D0、D1、D2)控制八选一模拟开关U4每次选
文档评论(0)