8085 微处理器中的 I/O 读取 (IOR) 机器周期
IN 35H 指令最后阶段的三个时钟周期是 IOR 机器周期的示例。IOR 机器周期的波形如下图所示。
需要注意的是,在 IOR 机器周期中,W 和 Z 具有相同的 8 位端口地址。寄存器对 WZ 中的 16 位值在输入输出读取机器周期中作为地址发出。还需要注意的是,在 IOR 机器周期中,只有数据从寻址的输入端口接收到了累加器。在 8085 处理器中,我们只在 IN a8 指令的执行过程中遇到 IOR 机器周期。
示例:在 8085 指令集中,IN 是一个助记符,它代表将输入端口的内容的字节输入到累加器。输入端口的 8 位地址在指令中指示为 a8。它在内存中占用 2 个字节。第一个字节指定操作码,下一个字节提供 8 位输入端口地址。
助记符,操作数 | 操作码(十六进制) | 字节数 |
---|---|---|
输入端口地址 | DB | 2 |
IN F0H 是这种类型的示例指令。下面用一个示例显示此指令执行的结果。
之前 | 之后 | |
---|---|---|
(A) | 任何值 | ABH |
输入端口 F0H | ABH | ABH |
IN 指令是唯一用于将输入端口内容读取到累加器的指令。连接具有 F0H 地址的输入端口的可能的芯片选择电路如下图所示。
输入端口 F0H 的芯片选择电路
由于端口地址为 F0H,因此 A7 到 A0 的位应具有位模式
A7 A6 A5 A4 A3 A2 A1 A0 = 1 1 1 1 0 0 0 0,其中 RD* = 0,IO/M* = 1
所有这些位将通过一个与非门,以产生输出逻辑 1 作为芯片选择 (CS),因此输入端口芯片被选中。因此,当 8085 发出地址 F0H、IO/M* 为 1 和 RD* 为 0 时,芯片将响应。换句话说,我们认为它具有输入端口号 F0H。
请注意,可以使用地址 F0H 同时拥有一个输出端口和一个输入端口。当 8085 发出地址 EFH 和 IO/M* 为 1 时,只有一个基于 RD* 和 WR* 信号状态值被选中。因此,可以总共有 256 个输入端口和 256 个输出端口。
地址 | 十六进制代码 | 助记符 | 注释 |
---|---|---|---|
2000 | DB | IN F0H | 来自端口地址 F0H 的内容将被写回累加器 |
2001 | F0 | F0H 作为端口地址 |
针对此指令 IN F0H 执行的时序图如下所示:
总结:因此,此指令 OUT 需要 2 个字节、3 个机器周期(操作码提取、内存读取、I/O 读取)和 10 个 T 状态才能执行,如时序图所示。