Proteus绘制8086原理图以及编程实现流水灯


一、问题所在以及解决方案

在上一篇文章中提到的流水灯只亮不闪以及74372输出全是高电平问题,解决方案如下:

在绘制完最小系统原理图以及流水灯原理图之后,发现led灯只亮不闪,运行四个流水灯依次熄灭点亮的代码时也是如此;后与老师一起研究发现问题所在是前两块74273芯片的引脚输出都是红色高电平,说明信号没有传送入锁存器中;这可能是接的线路出了问题,但当天我与老师一起寻找许久却始终没有找到问题所在,无论是引脚的接线还是元器件和线路的标号,都没有出错的问题。这个问题也让我纠结了很久,课后也多次尝试,仍然无果;

最后再一次偶然上网搜索找到一个帖子说:连线都没有问题的话可以考虑可能是接线不稳定所导致的。虽然是仿真实验,但是我还是抱着试一试的心态,将连接标号为U6、U7的两块74273芯片的总线与子电路连线全都删除然后再重新连接,竟然十分意外地运行成功了。这虽然令我感到很无奈,但是也很惊喜和喜悦;算是圆满的完成看了一次实验。

这是绘制的8086最小系统图,个人建议:在原理图的连线没有发现问题时仍然无法运行成功,可以尝试将出错的那部分删除然后重新连线,舍友也出现了和我类似的情况,用这个方法成功了。


 

二、在刚开始的时候也出现过如下的报错情况

 

 这是因为给8086芯片设置的内存不足导致,我们需要更改一下给8086设置的内存就可以了。

在原理图界面双击8086芯片,出现如下页面:

 然后点击确认,这样就不会再出现刚刚那种报错的情况了。


三、编程实现LED由上到下逐个递增点亮,每隔一段时间点亮下一只,但前面的不灭。

;方法1 此方法比较简单好上手好懂,但是代码太过冗长,如果led数量再继续增加就更长了。

.MODEL SMALL
.8086
.STACK
.CODE
.STARTUP
AGAIN:MOV DX,0200H        ;74ls273芯片对应的地址
MOV AX,1111111111111111B     ;对应0电平的LED点亮
OUT DX,AX
CALL DELAY       ;延时
MOV AX,1111111111111110B;
OUT DX,AX
CALL DELAY;
MOV AX,1111111111111100B;
OUT DX,AX
CALL DELAY;
MOV AX,1111111111111000B;
OUT DX,AX
CALL DELAY;
MOV AX,1111111111110000B;
OUT DX,AX
CALL DELAY;
MOV AX,1111111111100000B;
OUT DX,AX
CALL DELAY;
MOV AX,1111111111000000B;
OUT DX,AX
CALL DELAY;
MOV AX,1111111110000000B;
OUT DX,AX
CALL DELAY;
MOV AX,1111111100000000B;
OUT DX,AX
CALL DELAY;
MOV AX,1111111000000000B;
OUT DX,AX
CALL DELAY;
MOV AX,1111110000000000B;
OUT DX,AX
CALL DELAY;
MOV AX,1111100000000000B;;
OUT DX,AX
CALL DELAY;
MOV AX,1111000000000000B;;
OUT DX,AX
CALL DELAY;
MOV AX,1110000000000000B;;
OUT DX,AX
CALL DELAY;
MOV AX,1100000000000000B;;
OUT DX,AX
CALL DELAY;
MOV AX,1000000000000000B;;
OUT DX,AX
CALL DELAY;
MOV AX,000000000000000B;;
OUT DX,AX
CALL DELAY;
JMP AGAIN
DELAY PROC NEAR    ;延时子程序
MOV BX,200

LP1:MOV CX,469
LP2:LOOP LP2
DEC BX
JNZ LP1
RET
DELAY ENDP
.DATA
END
.

方法2: 

.MODEL SMALL
.8086
.STACK
.CODE
.STARTUP
AGAIN:

MOV DX,0200H      ;74ls273芯片对应的地址
MOV AX,0FFFFH      ;将FFFFH赋给AX,对应0电平的LED点亮。此时LED灯全灭。
MOV BL,0H         ;清空BL中的数值
MOV CL,10H         ;将10H赋给CX,表示循环次数为16次

LOOP1:
MOV CL,BL       ;将BL中的数值放入CL中
SAL  AX,CL      ;AX里的数逻辑左移,移动次数=CL中的数值
OUT DX,AX

CALL DELAY          ;延时
     INC BX             ;BX+1——>BX
     DEC CX               ;CX-1——>CX
JNZ LOOP1
DELAY PROC NEAR    ;延时子程序
MOV BX,200
LP1:MOV CX,300
LP2:LOOP LP2
DEC BX
JNZ LP1
RET
DELAY ENDP
.DATA
END
.

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

白日梦*

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

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

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

打赏作者

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

抵扣说明:

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

余额充值