Proteus仿真8086将IO接口电路封装成子电路CCT001
Posted 只是有点小怂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Proteus仿真8086将IO接口电路封装成子电路CCT001相关的知识,希望对你有一定的参考价值。
-
本次实验内容来自于顾晖老师《微机原理与接口技术 基于8086和Proteus仿真 第3版》的【例7-2】,但老师使用的方法是将IO接口电路封装成子电路CCT001,这部分在章节没有讲述,于是我查了Proteus的相关书籍,在微信读书《Proteus从入门到精通100例》例11.1Proteus ISIS的分层次电路图设计中找到相关设计子电路的说明。
-
这次实验主要是通过查询外设状态来进行数码管的显示,端口READY接受就绪信号,端口ERROR接受故障信号。当外设发生故障,ERROR=1,数码管显示E;外设正常但未就绪,READY=ERROR=0,数码管显示0;外设正常且就绪,READY=1,ERROR=0,数码管显示数字8
-
首先在右边侧栏选择子电路模式,然后在图纸上拉一个方框出来,修改名字为INQUIRY
-
选择增加模型端口,箭头向内为输入,向外为输出,多根线选择总线BUS,同时编辑属性可以修改端口的名称,注意这个名称要和子电路中名称一样
-
选择跳转至子图,编辑子图模型,端口名字和总图中的输入保持一致,右键可以选择退出到父图纸
-
数据端口为74LS373,地址为400H,状态端口为74LS245,地址为402H
-
READY和ERROR的输入为LOGICSTATE,数码管为7SEG-BCD,Proteus特制,为了简化程序设计
-
吐槽一点仿真的时候子图的输入输出不会显示高低电平的状态 ,感觉不太智能。当ERROR为1时应该显示E,但是数码管显示会一直闪一下,不知道哪里出现了问题,待解决
CODE SEGMENT 'CODE'
ASSUME CS:CODE
START:
MOV DX, 402H
IN AL, DX
TEST AL, 02H
JNZ DISP_E ; 1代表出现错误
IN AL, DX
TEST AL, 01H
JZ DISP0 ; 0代表未准备好
MOV AL, 08H ; 没有故障显示8
MOV DX, 400H
OUT DX, AL
JMP START
DISP_E:
MOV AL, 0EH
MOV DX, 400H
OUT DX, AL
JMP START
DISP0:
MOV AL, 0H
MOV DX, 400H
OUT DX, AL
JMP START
CODE ENDS
END START
以上是关于Proteus仿真8086将IO接口电路封装成子电路CCT001的主要内容,如果未能解决你的问题,请参考以下文章
Proteus仿真8086简单IO接口实验——无条件传输和查询方式
Proteus仿真8086简单IO接口实验——无条件传输和查询方式