实验六 单脉冲触发中断实验(汇编与微机原理)

2023-12-03 21:44

本文主要是介绍实验六 单脉冲触发中断实验(汇编与微机原理),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实验目的:

掌握可编程中断控制器8259一般的使用方法。

掌握8259初始化的编程方法及中断服务程序的编写方法,中断程序的调试方法。

实验内容:

用单脉冲按钮的正脉冲输出作为中断控制器8259的中断源产生中断请求,在中断服务程序中对进中断的次数进行计数,并将计数值显示在数码管的最右边两位,中断10次程序结束。

实验器材:

电脑一台,微机原理与接口实验箱一台,连接导线若干。

实验原理:

1. 认真阅读教科书中有关8259的相关内容,掌握8259工作的基本原理和一般过程。

2. 认真阅读实验指导书P77 ~P80,掌握8259初始化的方法、初始化命令字和操作命令

字的含义和编写方法。

8259的初始化编程:8259是一个可编程的中断控制器,我们可以通过对它进行编程来实现对它的控制。它的初始化编程就是按照严格的初始化步骤分别向初始化命令字ICW1~ICW4 写入初始化命令规定它的工作方式(如:工作在单片方式还是级连方式、是电平触发中断还是边沿触发中断、中断类型码是多少、有没有从片、以何种方式结束中断等等),每个初始化命令字的格式和各位的含义参见实验指导书P77~79,在具体编程时要注意初始化命令字写入的顺序和它们写入的端口是偶地址端口还是奇地址端口。

8259的应用编程:8259的应用编程就是在8259初始化编程结束后,用户根据需要进一步写入操作命令字OCW1~OCW3的过程。OCW1也叫中断屏蔽字,OCW2也叫中断结束命令字。每个操作命令字的格式和各位的含义参见实验指导书P79~80,在具体编程时要注意操作命令字写入的端口是偶地址端口还是奇地址端口。

硬件连线:

8259B3区:8259片选CS、A0   连接   A3区: 系统CS3、A0   ;

B3区:INT、INTA 连接 A3区:INTR、INTA;B3区:IR0 连接 B2区:单脉冲上升沿 ;

8255D3区:8255片选CS、A0、A1   连接  A3区: 系统CS1、A0 、A1;

D3区:   (A口)B=JP16(SEGA-SEGP)、(B口)C=JP17(DIG0-DIG7) 连接

F5区:   B(JP36)(段码)、     C(JP35)(位码)                                                                       实验步骤:

要求学生做好实验预习,明确实验目的和要求,理解实验原理,编写好可调试程序,到实验室对相关部件进行连线后不断调试修改程序直至实现目标。

星研系统的子程序调用说明:

       在本次实验中要用数码管来显示进中断次数,也就是用到了“8255控制键盘输入及数码管显示模块”,由于星研系统中此模块用到的频率较高,所以开发此系统时专门编写了2个常用的子程序供用户平时开发时调用,现对这2个子程序的功能及使用方法说明如下。

InitKeyDisplay  是8255控制键盘数码管工作初始化程序,此子程序没有入口、出口参数;

Display8       是 数码管显示子程序(8255对数码管扫描)有入口参数没有出口参数;

      入口参数: SI----指向8字节显示缓冲区首地址;

如果需要显示小数点,8位二进制数的最高位为1,例如:80H;

如果某位不需要显示,符值10H;

如果需要显示负号“-”,符值11H

例子:如果8字节显示缓冲区中存入00H,00H,00H,00H,82H,03H,10H, 10H  则数码管上显示为:“  32.0000”

注意

在程序调试过程中可以在中断服务程序的入口处设置一个断点然后用连续运行方式运行程序以观察程序是否能正常进中断。

实验原理图:       

实验代码: 

.MODEL	TINY
EXTRN	InitKeyDisplay:NEAR,  Display8:NEAR      
IO8259_0	EQU	0250H    
IO8259_1	EQU	0251H.STACK      100.DATA    
BUFFER          DB      8 DUP(?)       
Counter		DB	?              .CODE
START:  MOV     AX,@DATAMOV     DS,AXMOV	ES,AXNOPCALL	InitKeyDisplay	    	;补充程序,对8259初始化,注意写入的端口;icw1:边沿触发、单片、需要ICW4MOV	DX,IO8259_0	MOV	AL,13HOUT	DX,AL;icw2:中断类型码(取值范围:00H-0FFH、可任意设置)MOV	DX,IO8259_1	MOV	AL,0E8HOUT	DX,AL;icw4:普通全嵌套、非缓冲、非自动结束MOV	AL,01H		OUT	DX,AL;IRQ7	MOV	AL,01111111B	OUT	DX,ALPUSH	ES              MOV	AX,0MOV	ES,AXMOV	DI,0EFH*4LEA	AX,IRQ0STOSW                   MOV	AX,CSSTOSW			
;	MOV	AX,0
;	MOV	ES,AX
;	MOV     BX,0EFH*4
;	MOV     AX,OFFSET IRQ0
;	MOV     ES:[BX], AX
;	MOV     AX, SEG IRQ0
;	MOV     ES:[BX+2], AXPOP	ESMOV     Counter,0       		STI
START1:	CALL	LedDisplay      LEA	SI,Buffer        CALL	Display8        CMP     Counter,11H     JNE	START1       HLTLedDisplay	PROC	NEAR         MOV	AL,Counter   MOV	AH,ALAND	AL,0FHMOV	Buffer+0,ALAND	AH,0F0HROR	AH,4MOV	Buffer + 1,AHMOV	Buffer + 2,10H	MOV	Buffer + 3,10HMOV	Buffer + 4,10HMOV	Buffer + 5,10HMOV	Buffer + 6,10HMOV	Buffer + 7,10HRET		
LedDisplay	ENDPIRQ0	PROC	NEARPUSH	DXPUSH	AXMOV	AL,Counter    ADD	AL,1DAAMOV	Counter,AL		MOV	DX,IO8259_0MOV	AL,20HOUT	DX,ALPOP	AXPOP	DXIRET
IRQ0	ENDPEND	START

这篇关于实验六 单脉冲触发中断实验(汇编与微机原理)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/450984

相关文章

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

MyBatis-Plus 与 Spring Boot 集成原理实战示例

《MyBatis-Plus与SpringBoot集成原理实战示例》MyBatis-Plus通过自动配置与核心组件集成SpringBoot实现零配置,提供分页、逻辑删除等插件化功能,增强MyBa... 目录 一、MyBATis-Plus 简介 二、集成方式(Spring Boot)1. 引入依赖 三、核心机制

redis和redission分布式锁原理及区别说明

《redis和redission分布式锁原理及区别说明》文章对比了synchronized、乐观锁、Redis分布式锁及Redission锁的原理与区别,指出在集群环境下synchronized失效,... 目录Redis和redission分布式锁原理及区别1、有的同伴想到了synchronized关键字

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

Nginx进行平滑升级的实战指南(不中断服务版本更新)

《Nginx进行平滑升级的实战指南(不中断服务版本更新)》Nginx的平滑升级(也称为热升级)是一种在不停止服务的情况下更新Nginx版本或添加模块的方法,这种升级方式确保了服务的高可用性,避免了因升... 目录一.下载并编译新版Nginx1.下载解压2.编译二.替换可执行文件,并平滑升级1.替换可执行文件