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接口实验——无条件传输和查询方式

Proteus仿真8086并行接口芯片8255

Proteus仿真8086并行接口芯片8255

Proteus仿真8086简单IO接口实验——读取开关状态控制灯的亮灭

Proteus仿真8086简单IO接口实验——读取开关状态控制灯的亮灭