一、问题所在以及解决方案
在上一篇文章中提到的流水灯只亮不闪以及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
.