- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[理学]微机原理与接口技术第四版第六七章 输入输出与中断
二、端口 端口(port)是接口电路中能被CPU直接访问的寄存器的地址。CPU通过这些地址即端口向接口电路中的寄存器发送命令,读取状态和传送数据,一个接口中可以有几个端口,如命令端口、状态端口、数据端口。 端口操作类型: a.只能读不能写 b.只能写不能读 c.可读可写 2、端口地址的编址方式 端口有二种编址方式:一种是端口地址和存储器统一编址,即存储器映射方式,另一种是端口地址和存储器地址分开独立编址,即I/O映射方式。 ⑴ 统一编址(51单片机常用) 从存储器空间划出一部分给I/O设备,把I/O接口中的端口当作存储器单元一样进行访问,不设专门的I/O操作指令。 ⑵ 独立编址(8086微机常用) 为接口中的端口地址单独编址,而不和存储器空间合在一起,并设置专门的输入/输出指令来访问端口。 三、I/O端口的地址译码 1、 概念 CPU为了对端口进行读写操作,必须确认端口地址。 将地址总线上的地址代码是通过媒介(I/O地址译码电路)翻译成为所需要访问的端口地址,即为地址译码。 2、I/O地址译码方法 按地址和控制信号的不同组合进行译码。 把地址线分为两部分: ① 高位地址线与CPU的控制信号组合,经译码电路产生I/O接口的片选信号,选择某个I/O接口芯片。 ② 低位地址线不参加译码,直接连到I/O接口芯片,选择该接口电路的某个存储器接口,进行I/O接口芯的片内端口寻址。 3、I/O端口地址译码电路设计方法介绍 固定式端口地址译码和可选式端口地址译码 ⑴固定式端口地址译码 固定式译码是指接口中用到的端口地址不能更改。 接口卡中大部分都采用固定式译码 ⑵开关可选式端口地址译码 这种译码方式可以通过开关使接口卡的I/O 端口地址根据要求加以改变而无需改动线路 2、中断的处理过程 ⑴中断请求 外部设备要求CPU为其服务时,就会发出中断请求信号 CPU执行完每条指令后都要检测中断请求输入线,看是否有中断请求,但响应与否取决于CPU自身情况 ⑵中断响应 CPU检测到有中断请求会判断是否接受中断请求,即响应 对内部中断源,CPU会无条件响应; 对外部中断源,必须满足响应条件,CPU才会响应。 ⑶ 关中断。 将IF位清零,避免中断过程中受到其它中断源的干扰 ⑷ 断点保护 CPU响应中断时,就会转到相应中断源的服务程序上。为了使CPU在完成中断服务后能返回原程序继续执行,需要将断点处的IP、CS和标志寄存器内容由硬件自动保护,其他信息的保护由中断服务程序完成 2、中断向量表的组成。 ⑴ 中断类型号0~4为专用中断指针,占用0000H~0013H的20个字节,并且用户不能对其修改。 ⑵ 中断类型号5~31为保留中断指针,占用0014H~007FH的108个字节,这是Intel公司保留的中断指针,用户不应使用。 ⑶ 中断类型号32~255为用户使用的中断指针,占用0080H~03FFH的896个字节,它可由用户指定。 三、中断向量的装入 系统配置和使用的中断所对应的中断向量由系统软件负责装入,若系统未配置系统软件,就由用户自行装入中断向量。 例:设中断类型号为60H,中断服务程序名为INT0,则装入中断向量的程序为: . ⑴ 外部中断源通过IR0~IR7输入中断请求信号。 ⑵ 中断请求信号使IRR相应位置“1”,并与IMR各位联合判断,若IMR相应位为“0”,则不屏蔽,送优先权处理器。 ⑶ 优先权处理器检测出优先级最高的中断请求位,并将其与ISR中记录的正在被CPU服务的中断进行优先级比较。当提请的中断优先级高于正在服务的中断优先级时,优先权处理器向控制逻辑发出有效的中断请求信号。 四、8259A的控制字及中断操作功能 1、ICW1命令字 ICW1必须写入8259A的偶地址端口,即A0=0,如210H 例:在8086系统中,若8259单片使用,并采用边沿触发,则 ICW1 =13H ICW1设置用??指令实现 ⑴ 长格式 字节操作: IN AL,〈端口地址〉 OUT 〈端口地址〉,AL 字操作: IN AX, 〈端口地址〉 OUT 〈端口地址〉,AX 注意: 长格式中直接采用端口地址,但地址必须是8位的,也就是0~0FFH号端口才可以使用长格式。 合法的I/O指令:
文档评论(0)