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

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

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

Java的volatile和sychronized底层实现原理解析

《Java的volatile和sychronized底层实现原理解析》文章详细介绍了Java中的synchronized和volatile关键字的底层实现原理,包括字节码层面、JVM层面的实现细节,以... 目录1. 概览2. Synchronized2.1 字节码层面2.2 JVM层面2.2.1 ente

MySQL的隐式锁(Implicit Lock)原理实现

《MySQL的隐式锁(ImplicitLock)原理实现》MySQL的InnoDB存储引擎中隐式锁是一种自动管理的锁,用于保证事务在行级别操作时的数据一致性和安全性,本文主要介绍了MySQL的隐式锁... 目录1. 背景:什么是隐式锁?2. 隐式锁的工作原理3. 隐式锁的类型4. 隐式锁的实现与源代码分析4

MySQL中Next-Key Lock底层原理实现

《MySQL中Next-KeyLock底层原理实现》Next-KeyLock是MySQLInnoDB存储引擎中的一种锁机制,结合记录锁和间隙锁,用于高效并发控制并避免幻读,本文主要介绍了MySQL中... 目录一、Next-Key Lock 的定义与作用二、底层原理三、源代码解析四、总结Next-Key L

如何关闭 Mac 触发角功能或设置修饰键? mac电脑防止误触设置技巧

《如何关闭Mac触发角功能或设置修饰键?mac电脑防止误触设置技巧》从Windows换到iOS大半年来,触发角是我觉得值得吹爆的MacBook效率神器,成为一大说服理由,下面我们就来看看mac电... MAC 的「触发角」功能虽然提高了效率,但过于灵敏也让不少用户感到头疼。特别是在关键时刻,一不小心就可能触

Spring Cloud Hystrix原理与注意事项小结

《SpringCloudHystrix原理与注意事项小结》本文介绍了Hystrix的基本概念、工作原理以及其在实际开发中的应用方式,通过对Hystrix的深入学习,开发者可以在分布式系统中实现精细... 目录一、Spring Cloud Hystrix概述和设计目标(一)Spring Cloud Hystr