8086_RAM字节扩展_8255A矩阵键盘输入

8086课程设计_RAM字节扩展_8255A矩阵键盘输入


原理图设计使用proteus8.6,汇编代码编写使用emu8086,
参考书籍为《微机原理与接口技术(第二版)》楼顺天版。

本文代码参考:https://blog.csdn.net/qq_29687847/article/details/106588692?fps=1&locationNum=2,感谢大佬,侵删。

题目:
8086最小系统,设计RAM容量为16K*8bit, 地址为1C000H-1FFFFH,将键盘输入的数字(以ASCII字符的形式) 写入到这一存储空间。

设计方案:
1、8086 最小系统:参照参考书P164设计8086最小系统总线结构,如下图所示。
8086_RAM字节扩展_8255A矩阵键盘输入
2、RAM 容量为 16K8bit:存储器芯片选用Intel 6264(存储容量为8K8),用两片Intel 6264构成连续的RAM存储区域。参照参考书P198图6.32,如下图所示。
8086_RAM字节扩展_8255A矩阵键盘输入
3、地址为 1C000H——1FFFFH:软件编写的时候,设置存储起始位置为1C000H即可。
4、矩阵键盘输入:采用非编码式键盘的结构,编写计算键值的键盘扫描程序。参照参考书P319图11.19设计矩阵键盘与8086系统总线的连接,如下图所示。
8086_RAM字节扩展_8255A矩阵键盘输入
实验原理图:
1、8086系统部分:8086芯片及锁存器相关设置。
8086_RAM字节扩展_8255A矩阵键盘输入
2、存储部分:RAM部分采用6264(8K8bit)字扩展为16K8bit。
8086_RAM字节扩展_8255A矩阵键盘输入
3、矩阵键盘:
a.键盘部分:
非编码式键盘一般采用行列式结构并按矩阵形式排列。
8086_RAM字节扩展_8255A矩阵键盘输入
b.控制部分:
扫描与存储输出等功能使用了8255A芯片;B端口为行扫描,C端口为列扫描;A0、A3-A15的门电路组合同LS138结合控制8255A的CS端口以确定- 8255A的端口地址;A1、A2选择B/C端口;AD0-AD7输入控制字以确定8255A的工作方式。

8086_RAM字节扩展_8255A矩阵键盘输入
程序流程说明:
8086_RAM字节扩展_8255A矩阵键盘输入
汇编程序:

DATA SEGMENT 
DATA ENDS  
CODE SEGMENT       
    
START:  
    MOV BX,1C00H 
    MOV DS,BX 
    MOV BX,0000H 
LP: 
    MOV AL,10000001B 
    OUT 66H,AL        ;控制字 1000 0001 写入;写行读列  
KEY_IN_L:
    MOV AL,00000000B  ;将0000输入B
    OUT 62H,AL     
    IN AL,64H 
    AND AL,0FH 
    CMP AL,0FH 
    JNC KEY_IN_L       
    MOV CX,03000H     ;延时去抖动  
    LOOP $ 
    MOV AL,00000000B  ;重复读取    
    OUT 62H,AL 
    IN AL,64H 
    AND AL,0FH 
    CMP AL,0FH 
    JNC KEY_IN_L      ;确认非抖动则记录   
    MOV DL,0          ;记录当前列值    
L1: 
    MOV CX,4 
    SHR AL,1 
    JNC L2 
    INC DL 
    LOOP L1 
L2: 
    MOV BL,DL         ;转移列值 
    MOV AL,10000010B 
    OUT 66H,AL        ;控制字 1000 0010 写入;读行写列 
KEY_IN_H:  
    MOV AL,00000000B  ;将0000输入C
    OUT 64H,AL
    IN AL,62H 
    AND AL,0FH 
    CMP AL,0FH 
    MOV DL,0          ;记录当前行值 
H1: 
    MOV CX,4 
    SHR AL,1 
    JNC H2 
    INC DL 
    LOOP H1 
H2: 
    MOV AL,DL 
    SHL AL,1 
    SHL AL,1 
    ADD AL,BL         ;保存键值到AL      
    MOV BL,AL 
BCD_TO_ASCII:
    MOV AH,AL
    AND AL,0FH
    ADD AL,30H
    SHR AH,4
    AND AH,0FH
    ADD AH,30H
OUTPUT: 
    MOV [SI],AL 
    MOV [SI+1],0
    INC SI 
    MOV CX,100 
    LOOP $ 
         
JMP LP 
ENDLESS: 
JMP ENDLESS 
CODE ENDS 
END START      

仿真结果说明:
8086_RAM字节扩展_8255A矩阵键盘输入
8086_RAM字节扩展_8255A矩阵键盘输入
通过矩阵键盘依次键入随机数字:18042219,偶片和奇片轮流存入键入的值(通过软件转化的ASCII码),打开Memory Contents可以查看存入的值。DS:1C00,SI:0008,LA:1C008。符合题目要求。

设计总结:
略。抄袭可耻,诚实无价。

本文资源链接:
https://download.csdn.net/download/weixin_43586860/12511620

上一篇:通俗易懂和你聊聊寄存器那些事(精美图文)


下一篇:iOS 限制输入字数