试编写程序,利用8255A的PA口与4位七段共阴LED连接,PC口连接4*4按键电路,实现按键键值显示,按某个按键显示该对应按键的键值数码,键值在LED上显示类似与计算器显示方式。

时间: 2023-06-26 13:09:07 浏览: 58
由于本人无法提供硬件设备,以下是基于模拟器的代码实现: ```assembly ; 8255A 端口定义 PORT_A EQU 0 ; 8255A PA口 PORT_B EQU 1 ; 8255A PB口 PORT_C EQU 2 ; 8255A PC口 ; 七段LED码表 D0 EQU 7FH D1 EQU 06H D2 EQU 6BH D3 EQU 2FH D4 EQU 36H D5 EQU 3DH D6 EQU 7DH D7 EQU 07H D8 EQU 7FH D9 EQU 3FH ; 键盘扫描码表 KEY_0 EQU 00H KEY_1 EQU 01H KEY_2 EQU 02H KEY_3 EQU 03H KEY_4 EQU 04H KEY_5 EQU 05H KEY_6 EQU 06H KEY_7 EQU 07H KEY_8 EQU 08H KEY_9 EQU 09H KEY_A EQU 0AH KEY_B EQU 0BH KEY_C EQU 0CH KEY_D EQU 0DH KEY_STAR EQU 0EH KEY_POUND EQU 0FH ; 初始化8255A INIT_8255A: MOV AL, 10000001B ; 8255A工作方式为模式0,PA口为输出,PC口为输入 OUT DX, AL RET ; 显示数码 DISPLAY_NUM: PUSH AX PUSH BX MOV BX, SP ; 取得SP的值 MOV AX, [BX+4] ; 取得参数n CMP AX, 10 JB DISPLAY_NUM_1 ; 如果n<10,则跳转到DISPLAY_NUM_1 MOV AL, AH ; 显示十位数码 CALL DISPLAY_NUM_1 MOV AL, [D0] ; 显示百位数码 OUT DX, AL MOV AL, [BX+4] ; 显示个位数码 AND AL, 0FH CALL DISPLAY_NUM_1 POP BX POP AX RET DISPLAY_NUM_1: CMP AL, 0 JZ DISPLAY_NUM_2 MOV AH, 0 MOV DL, 10 DIV DL ADD AL, 30H PUSH AX CALL DISPLAY_NUM_1 POP AX MOV DL, [D0+AX] OUT DX, DL RET DISPLAY_NUM_2: MOV DL, [D0] OUT DX, DL RET ; 读取键盘 READ_KEYBOARD: IN AL, DX ; 读取PC口状态 TEST AL, 80H ; 判断是否有按键按下 JZ READ_KEYBOARD_END MOV AL, [PORT_B] ; 获取按键扫描码 CALL DISPLAY_NUM ; 显示按键扫描码 JMP READ_KEYBOARD READ_KEYBOARD_END: RET ; 主程序 MAIN: MOV DX, 0378H ; 设置8255A端口地址 CALL INIT_8255A ; 初始化8255A CALL READ_KEYBOARD ; 读取键盘 JMP MAIN ; 循环执行 ``` 上述代码中,我们使用了8255A芯片来控制4位七段共阴LED显示器和4*4按键电路。其中,PA口为输出,PC口为输入。我们使用七段LED码表和键盘扫描码表来实现按键键值的显示,按下某个按键后在LED上显示该按键的键值数码。 请注意,由于本人无法测试硬件设备,以上代码仅供参考。如果您要在实际的硬件设备上运行代码,请根据设备的具体情况进行修改。

相关推荐

最新推荐

recommend-type

STM32 按键检测程序

PA13 PA15 是JTAG的引脚。 所以JTAG 插上 模拟时候,不准去的。 只有调到SWD 模式 PA15 才能用。 PA13是SWDIO PA14 SWCLK 复用时候一定要注意。实验结果: DS0 交替闪烁 当按下KEY1 时候 DS1亮。 松手灭。
recommend-type

MySQL出现SQL Error (2013)连接错误的解决方法

现象描述 ...等待约一两分钟后出现错误提示:SQL Error (2013): Lost connection to MySQL server at 'waiting for initial communication packet', system error: 0,如下图所示: 开始以为是远程TCP/IP root只能...
recommend-type

vb仓库管理系统(可执行程序+源码+ 开题报告+ 答辩稿)【VB】.zip

vb仓库管理系统(可执行程序+源码+ 开题报告+ 答辩稿)【VB】
recommend-type

STC89C51 简单时钟

STC89C51 简单时钟,叫你从基础开始学习单片机,
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB归一化方法大比拼:5种方法,哪种最适合你的数据?

![MATLAB归一化方法大比拼:5种方法,哪种最适合你的数据?](https://www.finebi.com/wp-content/uploads/2019/11/FineBI%E8%A1%8C%E4%B8%9A%E9%A9%BE%E9%A9%B6%E8%88%B1-1024x510.png) # 1. MATLAB归一化概述 归一化是一种数据预处理技术,用于将数据缩放到特定范围内,从而消除不同特征之间的尺度差异。在MATLAB中,有各种归一化方法可用于不同类型的数据和应用程序。 归一化的主要目的是: - 提高模型的训练效率和准确性,通过消除特征之间的尺度差异,使模型能够更有效地学习
recommend-type

failed to register layer: ApplyLayer exit status 1 stdout: stderr: archive/tar: invalid tar header

很抱歉听到这个问题。这个错误通常是由于Docker镜像损坏或Docker存储库中缺少所需的图层引起的。您可以尝试以下几种方法来解决这个问题: 1. 清理Docker镜像和容器:使用命令“docker system prune”清理不再使用的Docker对象。 2. 检查Docker存储库:确保您正在使用可靠的Docker存储库,并检查是否存在所有必需的图层。 3. 重新下载Docker镜像:如果您确定问题是由于损坏的Docker镜像引起的,则可以尝试重新下载Docker镜像。 4. 更新Docker版本:如果您使用的是旧版Docker,则可能会出现此问题。尝试更新到最新版本的Docke
recommend-type

Linux系统常用操作命令大全手册

附件是Linux系统常用操作命令大全手册,是 markdown格式,其中覆盖了Linux系统管理、文件操作、网络配置等多个方面,都是日常工作中非常常用的命令,欢迎大家下载学习使用!
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

MATLAB归一化实战指南:从零到一,轻松提升模型性能

![MATLAB归一化实战指南:从零到一,轻松提升模型性能](https://pic1.zhimg.com/80/v2-fd366800ef0bdf29c804ce25c0276778_1440w.webp) # 1. 归一化的理论基础** 归一化是一种数据预处理技术,旨在将数据缩放到特定范围内,通常是[0, 1]或[-1, 1]。通过归一化,可以消除数据量纲上的差异,使不同特征具有可比性,从而提高机器学习模型的性能。 归一化背后的基本原理是,在训练机器学习模型时,模型的学习过程会受到数据分布的影响。如果数据分布不均匀,某些特征可能具有较大的值域,而其他特征的值域较小。这会导致模型在训练过