微机原理与接口技术实验:8086,8255A,74LS138开关控制LED灯

题目:利用可编程并行接口芯片 8255A 设计一个 LED 灯控制系统,1)8255A 端口地址为 78H~7BH;2)
PA0~PA3 分别连接一个开关,PB0~PB3 分别连接一个 LED 灯;3)PA 口开关闭合,PB 口对应位的
LED 灯亮;开关断开,则对应位 LED 灯灭。

已经用protues7.8SP2画出了上面的图;下面是用emu8086是写的汇编代码。
点击运行以后,似乎IN,OUT指令没有作用(除了设置工作方式控制字),就是读取A端口信息,和把信息输出到B端口的时候,8255A的D0~D7引脚状态一直显示的是灰色。

求好心人帮忙指明错在哪里!

A_PORT EQU 78H
B_PORT EQU 79H
C_PORT EQU 7AH
CTRL_PORT EQU 7BH

CODE SEGMENT
ASSUME CS:CODE

START:MOV AL,10010000B;设置工作方式,A口输入,B口输出
MOV DX,CTRL_PORT;将工作方式字输入控制端口
OUT DX,AL

AA1:MOV DX,A_PORT;取键盘信息,即开关状态
IN AL,DX ;将A口输入信息保存至AL
MOV DX,B_PORT;输出显示,即将开关状态信息输出到B端口
OUT DX,AL ;输出AL中的信息
MOV CX,5 ;设置循环次数
AA2:LOOP AA2 ;循环延时
JMP AA1 ;跳转至AA1

CODE ENDS
END START
这是运行时的截图

点击运行以后,似乎IN,OUT指令没有作用,
就是读取A端口信息,和把信息输出到B端口的时候,
8255A的D0~D7引脚状态一直显示的是灰色。
---------
D0~D7显示灰色,是正确的。

关键是 PA、PB,显示的红色、蓝色,对不对。追问

PA PB都是红色的

去掉74LS373,用74LS138直接接AD[0..7]以后,PA是蓝色的,PB是红色的。可是执行IN,OUT的时候,AL一直是0000H

追答

不可去掉 373。
8086 CPU 的低位地址线,和数据线共用AD0~15。
必须在外部,用 74LS373,把地址和数据分离开。

http://blog.163.com/asm_c/blog/static/2482031132014415620978/
这是我用 8031 驱动 8255 的电路和程序,参考下...

追问

谢谢^ω^

追答

看插图,PC0 竟然是低电平 !
但是,在程序里面,并没有这样的指令。

楼主是不是,把程序,装载错了?

追问

不会吧,我是先emu8086编译生成*.exe;然后把exe装进8086的。然后在protues里debug,
每次执行完:
MOV DX,CTRL_PORT;将工作方式字输入控制端口
OUT DX,AL
以后PC0就变成低电平了

追答

MOV AL, 1001 0000B;设置工作方式,A口输入,B口输出
MOV DX, CTRL_PORT ;将工作方式字输入控制端口
OUT DX, AL
------
这程序,是对的,确实是设置工作方式。

但是,看现象,倒像是:
MOV AL, 0001 0000B;设置PC.0输出零。

楼主可以试试其它几种输出,如:
MOV AL, 0001 0010B;设置PC.1输出零。
MOV AL, 0001 0110B;设置PC.3输出零。
……

温馨提示:答案为网友推荐,仅供参考
相似回答