当前位置: 首页 > java >正文

微机原理|| 流水灯实验

一、实验目的

通过对并行接口8255编程、调试,进一步熟悉仿真软件Proteus的使用方法,掌握8255的基本编程及调试方法,掌握编写程序控制硬件接口。

二、实验设备

Proteus 8 Professional、DOSBox 0.74、masm 5、EditPlus 5.2、PC机一台

三、实验内容

实现8255A口控制8个指示灯,循环点亮(瞬间只有一个灯亮)

四、实验原理图

图1 8086CPU最小模式

图2 地址总线

图3 译码电路

图4 8255接口流水灯实验原理图

五、实验步骤

1、建立实验工程文件,绘制实验的原理图方案;

2、编写程序源代码,实现8255A口控制8个指示灯,循环点亮(瞬间只有一个灯亮)。

3、观察验证实验结果。

 

六、程序参考流程图

 图5 8255接口流水灯程序流程图

七、源程序

PORT_8255_A EQU 9000H
PORT_8255_B EQU 9002H
PORT_8255_C EQU 9004H
CONTROL_PORT_8255 EQU 9006HDELAY_NUM1 EQU 0BH
DELAY_NUM2 EQU 1FFFHSTACK SEGMENT PARA STACK 'STACK'STA DB 1024 DUP(?)
STACK ENDS
CODE SEGMENT ASSUME CS:CODE,SS:STACK
START:MOV DX,CONTROL_PORT_8255MOV AL,10000000B	;A口方式为0OUT DX,AL            ;将AL的内容送给地址为9006H的端口MOV DX,PORT_8255_A MOV AL,0FFH        ;将11111111送给地址为9000H的端口 OUT DX,AL			;关闭LEDMOV AL,0FEH			;11111110B NEXT:OUT DX,ALCALL DELAY          ;子程序调用,看见灯亮ROL AL,1				;11111101--11111011 使得每个灯依次闪JMP  NEXT             ;无条件跳转指令,执行NEXT后的指令
DELAY PROC NEAR                   ;段内子程序的调用PUSH BX                   ;堆栈操作,保护BX,CX寄存器PUSH CXMOV CX,DELAY_NUM1		;延时时间=DELAY_NUM1*DELAY_NUM2 
AGAIN2:MOV BX,DELAY_NUM2          
AGAIN1:NOP                       ;NOP操作,空指令,延时作用NOPDEC BXJNZ AGAIN1                 ;ZF=0执行AGAIN1DEC CX                     ;CX=CX-1JNZ AGAIN2                 ;ZF=0 执行AGAIN2POP CX                      POP BXRET
DELAY ENDP
CODE ENDSEND START

八、实验结果与思考

1.如何使LED闪亮的顺序反向?

循环右移;将发光二极管去掉;将高低电平反接;将11111110,逻辑左移,如果CF=1,则将循环左移的数加1,再这基础上重复循环上一步骤。

2.如何调整LED闪亮的时间间隔?

改变NOP指令的个数;改变延时子程序中的CX值;多次调用延时子程序。

http://www.xdnf.cn/news/5974.html

相关文章:

  • 两种常见的C语言实现64位无符号整数乘以64位无符号整数的实现方法
  • 【嵌入式】记一次解决VScode+PlatformIO安装卡死的经历
  • Apifox使用方法
  • Xianyu AutoAgent,AI闲鱼客服机器人
  • 无人机信号监测系统技术解析
  • codeforcesE. Anna and the Valentine‘s Day Gift
  • 在 STM32 上使用 register 关键字
  • 部署大模型:解决ollama.service: Failed with result ‘exit-code‘的问题
  • ROS多机集群组网通信(四)——Ubuntu 20.04图形化配置 Ad-Hoc组网通信指南
  • element-plus自动导入插件
  • 使用DevEco Studio性能分析工具高效解决鸿蒙原生应用内存问题
  • python的命令库Envoy
  • 【树莓派4B】对树莓派4B进行换源
  • 关于索引的使用
  • Fiori学习专题四十一:表单控件
  • js中的同步方法及异步方法
  • [中国版 Cursor ]?!CodeBuddy快捷搭建个人展示页面指南
  • 20250513_问题:由于全局Pytorch导致的错误
  • 【Nacos】env NACOS_AUTH_TOKEN must be set with Base64 String.
  • TCP协议详细讲解及C++代码实例
  • 【算法笔记】ACM数论基础模板
  • ContextAnnotationAutowireCandidateResolver的作用
  • 5月13日复盘
  • PAC文件:智能代理配置的瑞士军刀
  • rtty操作记录说明
  • 保险销售系统对接保险公司接口的常见技术架构
  • 阿里二面:聊聊 MySQL 主从同步方案的优缺点
  • 【兽医电子处方软件】佳易王宠物医院电子处方管理系统:宠物医院诊所用什么软件?一键导入配方模板软件程序实操教程 #操作简单 #宠物医院软件下载安装
  • C语言中的宏
  • 数控滑台:革新传统加工方式的利器