Proteus仿真8086实验二简单IO接口实验——LED灯依次亮起和跑马灯
Posted 只是有点小怂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Proteus仿真8086实验二简单IO接口实验——LED灯依次亮起和跑马灯相关的知识,希望对你有一定的参考价值。
- 这次实验内容根据B站一个老师录制的讲解视频,程序同样来源于此,刚开始上手的时候跟着老师学比较快一点
实验一原理讲解
实验一常见问题1
-
实验结果如图所示,原理图略有改动,使用锁存器373隔离数据和LED灯,当译码器154和写信号同时有效时数据输出
-
使用273分离地址线并作为译码器输入,A7A6A3A4=0011时IO3有效地址为30H
-
代码主要难度在于完成一个延时子程序,延长事件为100 * 1000 * 执行一条指令的时间,可以大概估算一下8086CPU运算速率为5MHz,大概执行指令需要1us量级,乘以10^5大概在毫秒级
assume cs:codesg, ds:datasg
datasg segment
data db 01h, 03h, 07h, 0fh, 1fh, 3fh, 7fh, 0ffh
datasg ends
codesg segment
start:
mov dx, 30h
loop1:
mov bx, offset data
mov cx, 8
s:
mov al, [bx]
out dx, al
call delay
inc bx
loop s
jmp loop1
delay proc
push cx
push bx
mov bx, 100
delay1:
mov cx, 1000
delay2:
loop delay2
dec bx
jnz delay1
pop bx
pop cx
ret
delay endp
codesg ends
end start
- 对以上程序稍微修改就是跑马灯程序,将0000 0001循环左移
assume cs:codesg, ds:datasg
datasg segment
data db 01h, 03h, 07h, 0fh, 1fh, 3fh, 7fh, 0ffh
datasg ends
codesg segment
start:
mov dx, 30h
loop1:
mov bx, offset data
mov cx, 8
mov al, 01h
s:
;mov al, [bx]
out dx, al
call delay
;inc bx
rol al, 1
loop s
jmp loop1
delay proc
push cx
push bx
mov bx, 100
delay1:
mov cx, 1000
delay2:
loop delay2
dec bx
jnz delay1
pop bx
pop cx
ret
delay endp
codesg ends
end start
以上是关于Proteus仿真8086实验二简单IO接口实验——LED灯依次亮起和跑马灯的主要内容,如果未能解决你的问题,请参考以下文章
Proteus仿真8086简单IO接口实验——无条件传输和查询方式
Proteus仿真8086简单IO接口实验——无条件传输和查询方式
Proteus仿真8086简单IO接口实验——读取开关状态控制灯的亮灭