Proteus 仿真8086+8255,运行时错误的解决

要实现的功能:通过开关控制流水灯的显示方式。
电路原理图:


汇编源程序:

CODE SEGMENT
    ASSUME CS:CODE
START:MOV AL,90H
      OUT 36H,AL
AGAIN:
      IN AL,30H
      TEST AL,03H
      JZ EXIT
      TEST AL,01H
      JZ DISP_0
      TEST AL,02H
      JZ DISP_1
      JMP AGAIN
DISP_0:MOV AL,55H
       OUT 32H,AL
       JMP AGAIN
DISP_1:MOV AL,0AAH
       OUT 32H,AL
       JMP AGAIN
EXIT:MOV AH,4CH
     INT 21H
CODE ENDS
     END START

仿真运行的结果:



存在错误:流水灯常亮,不受开关的控制。

查错过程:

STEP1:检查译码子电路,确认8255A的端口地址。

经检查,当地址是30H~3FH时,#IO3为低,即8255A的CS有效。

STEP2:检查8255A的A0、A1的连接是否正确。

经检查,上图中有错,错误是:8255A的A0、A1应该接到地址寄存器的输出端,而不是直接接8086的AD0和AD1端。

  本例题中,地址寄存器在译码子电路内部,译码子电路图如下。


分析一下,发现上面的译码子电路,没有把A1和A2两个信号引出。修改后的译码子电路如下,增加的两个输出信号,下图中已经用圆圈标注出来了。


子电路修改好后,返回主电路,修改IOS(加上两个输出A1和A2,并把这两个引脚与8255A的A0和A1连接),修改8255A的D0-D7(每根数据线都要命名)。

完成上述改动后,问题全部解决。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ntGrace

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值