【接口实验】利用8255A的基本输入输出方式 (方式0) 将逻辑电平 开关K3~K1的开关状态反映在实验仪的发光二极管上。(功能类似于 38 译码器)

题目:

利用8255A的基本输入输出方式 (方式0) 将逻辑电平

开关K3~K1的开关状态反映在实验仪的发光二极管上。(功能类似于 38 译码器) 

思路: 

  1. 首先先根据题目要求写出控制字,然后使用MOV指令将控制字写入到AL寄存器当中。取控制端口地址使用MOV指令传送到DX寄存器当中,再使用OUT指令将控制字传送到控制端口。
  2. 取B口地址,设置初值为00使得LED灯为熄灭状态。
  3. 使用IN指令读取A口的状态到AL当中,同时由于此时为模拟38译码器,只需要K1,K2,K3三个电平开关中的数据,所以需要将高五位进行清零操作,使用AND指令进行清零。
  4. 使用XLAT指令进行码的转换操作,通过转换表中的一个字节来替换AL寄存器中的内容将DS:((BX)+(AL))中的内容传送到AL当中,然后再使用OUT指令传送到B口当中。

最后设定循环次数进行延时操作。

 .MODEL SMALL
.486
IO_8255_ADDRESS    EQU  200H             ;8255基址值
DATA   SEGMENT
TAB  DB 01H,02H,04H,08H,10H,20H,40H,80H
DATA   ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:        
                MOV AX,DATA
				MOV DS,AX
;*******************************************************************
;将控制字传送到控制端口           
  			    MOV DX,IO_8255_ADDRESS+3
				MOV AL,90H
				OUT DX,AL
;*******************************************************************

                MOV DX,IO_8255_ADDRESS+1  ;B口
                MOV AL,00H                ;设置初值=00H 熄灭LED
                OUT DX, AL
                
;******************************************************             
;         读到A口数据,并将高5位清0
SS0:
                MOV DX,IO_8255_ADDRESS
				IN AL,DX
				AND AL,07H
;**********************************************************

                MOV BX,OFFSET TAB          ;查表送B口
                XLAT TAB
                MOV DX,IO_8255_ADDRESS+1  ;B 
                OUT DX,AL
	            MOV CX,1000H
SS1:	        NOP
                LOOP SS1;延迟一段时间
                JMP  SS0
       
CODE            ENDS
                END   START

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值