文章目录

  • 题目要求
  • 连线图
  • 流程图
  • 代码及注释

题目要求

本实验要实现:用按键并通过8255并行接口来控制数码管的显示。具体如下:
(1)用8255的PA口控制数码管的段码。
(2)用8255的PC口控制数码管的位码。
(3)初始状态时,在最右侧数码管上显示0,自此,可用按键控制数码管的后续显示,具体为:

  • 按一下‘l’键,显示数字的数码管向左移一位。若已到了最左端,则跳到最右端继续显示。
  • 按一下‘r’键,显示数字的数码管向右移一位。若已到了最右端,则跳到最左端继续显示。
  • 按一下‘u’键,显示数字的数码管不动,但其中显示的数字加1。若加到10,则设为0。
  • 按一下‘d’键,显示数字的数码管不动,但其中显示的数字减1。若减到-1,则设为9。
  • 按一下‘e’键,显示数字的数码管灭掉,演示结束。
  • 按任何其他的键,数码管无反应。

连线图

流程图

代码及注释

DATA SEGMENTIO8255_A EQU 288HIO8255_C EQU 28AHIO8255_K EQU 28BHLED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH            ;保存各个数字的数码管亮的十六进制数BUFFER DB 0       ;BUFFER存储当前输出的数字BZ DW ?         ;BZ存储位码CHAR DB ?        ;CHAR存储当前输入的字母L/R/U/D/E
DATA ENDS
CODE SEGMENTASSUME CS:CODE,DS:DATA
START:MOV AX,DATAMOV DS,AXMOV DX,IO8255_K       ;K命令口MOV AL,80H         ;命令口写入80H,即10000000B,意味方式0,PA,PB,PC口均为输出口OUT DX,ALMOV SI,OFFSET LED    ;SI指向LED,方便找到要显示的数字MOV BL,BUFFERMOV BH,01MOV BYTE PTR BZ,BHMOV BH,0ADD SI,BXMOV AL,BYTE PTR [SI] ;AL中存入0,也即将从PA口输出数字0的段码MOV DX,IO8255_A       ;从PA口输出数字0段码,显示数字为0OUT DX,ALMOV AL,BYTE PTR BZMOV DX,IO8255_C        ;从PC口输出位码,最后一位将用于显示OUT DX,AL
LOOPALL:
MOV SI,OFFSET LED
MOV AH,01INT 21HMOV CHAR,AL         ;从键盘输入一个字母,将其存入CHARMOV BL,108CMP CHAR,BL         ;与L的ASCII码比较,查看是否为LJNZ NEXT1CALL LEFT            ;是L则调用LEFT子程序,否则进行下一个比较
NEXT1:MOV BL,114CMP CHAR,BL         ;与R的ASCII码比较,查看是否为RJNZ NEXT2CALL RIGHT           ;是R则调用RIGHT子程序,否则进行下一个比较
NEXT2:MOV BL,117CMP CHAR,BL         ;与U的ASCII码比较,查看是否为UJNZ NEXT3CALL UP              ;是U则调用UP子程序,否则进行下一个比较
NEXT3:MOV BL,100CMP CHAR,BL         ;与D的ASCII码比较,查看是否为DJNZ NEXT4CALL DOWN            ;是D则调用DOWN子程序,否则进行下一个比较
NEXT4:MOV BL,101CMP CHAR,BL         ;与E的ASCII码比较,查看是否为EJNZ LOOPALLJMP EXIT               ;是E则跳转到EXIT退出,否则回到循环开头
LEFT:MOV BL,BYTE PTR BZROL BL,1             ;位码循环左移一位,使用ROL保证到最左端可以回到最右端MOV BYTE PTR BZ,BLMOV SI,OFFSET LEDMOV BL,BUFFER     ;BUFFER中数字直接使用MOV BH,0ADD SI,BXMOV AL,BYTE PTR [SI]MOV DX,IO8255_A      ;PA口输出段码OUT DX,ALMOV AL,BYTE PTR BZMOV DX,IO8255_C      ;PC口输出位码OUT DX,ALRETRIGHT:MOV BL,BYTE PTR BZROR BL,1                ;位码循环右移一位,使用ROR保证到最右端可以回到最左端MOV BYTE PTR BZ,BLMOV SI,OFFSET LEDMOV BL,BUFFERMOV BH,0ADD SI,BXMOV AL,BYTE PTR [SI]MOV DX,IO8255_AOUT DX,ALMOV AL,BYTE PTR BZMOV DX,IO8255_COUT DX,ALRETUP:MOV BL,BUFFERINC BL             ;当前数字自增1MOV BH,0MOV DL,9CMP BL,DL           ;如果数字加一后大于9,则将数字置零JNA NU             ;否则跳到NUMOV BL,0
NU:MOV BUFFER,BL        ;将新的数字存入BUFFERMOV SI,OFFSET LEDADD SI,BXMOV AL,BYTE PTR [SI]    MOV DX,IO8255_AOUT DX,ALMOV AL,BYTE PTR BZMOV DX,IO8255_COUT DX,ALRETDOWN:MOV BL,BUFFERSUB BL,1             ;当前数字自减1MOV BH,0            ;若自减后小于0则将数字置9JNC ND                ;否则跳到NDMOV BL,9
ND:MOV BUFFER,BL        ;将新的数字存入BUFFERMOV SI,OFFSET LEDADD SI,BXMOV AL,BYTE PTR [SI]MOV DX,IO8255_AOUT DX,ALMOV AL,BYTE PTR BZMOV DX,IO8255_COUT DX,ALRETEXIT:MOV DX,IO8255_A       ;数码管熄灭MOV AL,0OUT DX,ALMOV AX,4C00H     ;程序中断INT 21H
CODE ENDSEND START

【汇编与接口】并行接口8255芯片实验相关推荐

  1. 可编程并行接口8255(实验一)

    实验目的 通过实验,掌握8255工作于方式0以及设置C口为输入口,B口为输出口的方法. 实验原理 待添加 实验步骤 待添加 求控制字 A端口无关可任选 ⇒ D4D_4D4​ = 0 B端口作为输出 ⇒ ...

  2. 【接口技术】实验五:可编程并行接口8255

    文章目录 一. 实验目的 二. 实验内容 实验5-1 8255并行输入/输出实验 实验5-2 并行接口键盘反转扫描实验 一. 实验目的 了解8255芯片结构及编程方法. 了解8255输入/输出实验方法 ...

  3. 微型计算机系统实验总结(学习性实验:IO地址译码,可编程并行接口8255,交通灯控制实验 + 自主设计实验:汽车信号灯控制系统,电风扇控制器,洗衣机控制系统,霓虹灯,电梯控制系统)

    实验配套软件: https://download.csdn.net/download/qq_39932172/11221584 实验指导用书: 教师版: https://download.csdn.n ...

  4. 微机实验五 —— 8255A接口电路应用设计实验(基于Proteus工具)

    微机实验五 -- 8255A接口电路应用设计实验(基于Proteus工具) 复习 74LS273 74LS32 7411 8255A 一.实验题目 二.实验代码 复习 in 是读端口-(I/O) mo ...

  5. FPGA实现的SPI协议(二)----基于SPI接口的FLASH芯片M25P16的使用

    写在前面 SPI协议系列文章: FPGA实现的SPI协议(一)----SPI驱动 FPGA实现的SPI协议(二)----基于SPI接口的FLASH芯片M25P16的使用 在上篇文章,简要介绍了SPI协 ...

  6. 8086汇编学习小记-王爽汇编语言实验12

    8086汇编学习小记-王爽汇编语言实验12 0号中断处理程序,开始安装在0000:0200处的程序最后用死循环导致显示不出'divided error',改成直接退出就正常显示了.注意修改ss,sp之 ...

  7. 南邮微型计算机实验,南邮 微机原理 微型计算机与接口技术 微机原理实验.doc...

    南邮 微机原理 微型计算机与接口技术 微机原理实验.doc (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分  ;FILEMENT:E ...

  8. 计算机微机原理及接口技术实训室,《微机原理与接口技术》课程实验报告.doc...

    <微机原理与接口技术>课程实验报告 实验一基本操作 一.实验目的 ? 1.熟悉Netlab MCS-51单片机实验系统的设置和使用方法 2.掌握基本MCS-51软件的编写.修改和编译的方法 ...

  9. 8255总线实验 编写程序利用8255扩展单片机的IO口,控制8位数码管显示1-8。

    8255总线实验 编写程序利用8255扩展单片机的IO口,控制8位数码管显示1-8. 程序: #include<reg51.h> #include<absacc.h> #def ...

  10. USB-C接口 OTG协议芯片 支持同时传输数据充电

    TYPE-C接口 OTG协议芯片 支持同时传输数据充电.乐得瑞科技推出LDR6028A 针对 USB Type-C 标准中的 Bridge 设备而开发的 USB-C DRP 接口 USB PD 通信芯 ...

最新文章

  1. Operation Queues并发编程
  2. 谈谈UI架构设计的演化
  3. Qt5应用改变窗口大小时出现黑影
  4. QT实现绘制3D基本形状
  5. 今时今日,C还适合当下之所需么?
  6. jrebel(破解版)+eclipse +jetty/tomcat 配置,实现热部署
  7. POJ 1185 炮兵阵地(状压dp)
  8. C语言书籍推荐从入门到进阶再到封神全套(2021年整理)
  9. iOS知识点,iOS开发笔记
  10. 元宇宙与泛娱乐的邂逅:次世代第一CP养成记
  11. ADO.NET 概述
  12. 芜湖计算机专业学校录取分数线,芜湖市各类高中2018年中考录取分数线是多少...
  13. 提高 Python 代码可读性的 5 个基本技巧
  14. 数据分析师如何做数据分析汇报
  15. 如何实现VMware下Ubuntu和Windows之间的复制粘贴?
  16. Python二进制数据处理
  17. PHP正则匹配全中文
  18. 【计算机视觉处理5】阈值处理
  19. 当今计算机科学发展趋势,探索计算机科学与技术的发展趋势
  20. cpt类型文件(.cpt)

热门文章

  1. 谈一下wxid转扫一扫的核心
  2. 定制Android模拟器skin
  3. 【代码写春联】新年新祝福,算算你的运势,教你如何用MATLAB以烟花、对联的形式打开2022年,爱满人间(附MATLAB和Python代码实现)
  4. 智铺子微信扫码点餐系统有哪些可操作的功能
  5. 请问dede怎么样把会员信息调用到首页,调用会员头像和名字
  6. 关于云服务器搭建内网穿透(frp)
  7. 3分钟带你了解,软件测试是做什么的!
  8. 软件测试周刊(第30期):专注 力量 敏捷 协作
  9. Going Deeper with Convolutions——GoogLeNet论文翻译——中英文对照
  10. 计算与背景反差较大显示明显的前景色