个人网站做淘宝客教程,工商天眼查官网查企业,百度 网站速度诊断,买商标价格一览表实验目的#xff1a;
掌握可编程中断控制器8259一般的使用方法。
掌握8259初始化的编程方法及中断服务程序的编写方法#xff0c;中断程序的调试方法。
实验内容#xff1a;
用单脉冲按钮的正脉冲输出作为中断控制器8259的中断源产生中断请求#xff0c;在中断服务程序…实验目的
掌握可编程中断控制器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、INTAB3区IR0 连接 B2区单脉冲上升沿
8255D3区8255片选CS、A0、A1 连接 A3区 系统CS1、A0 、A1
D3区 (A口)BJP16(SEGA-SEGP)、(B口)CJP17(DIG0-DIG7) 连接
F5区 BJP36段码、 CJP35(位码) 实验步骤
要求学生做好实验预习明确实验目的和要求理解实验原理编写好可调试程序到实验室对相关部件进行连线后不断调试修改程序直至实现目标。
星研系统的子程序调用说明 在本次实验中要用数码管来显示进中断次数也就是用到了“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 ;8255控制键盘数码管工作初始化程序 ;补充程序,对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,AL;中断向量表初始化 PUSH ES MOV AX,0 MOV ES,AX ;中断向量表段基址为0000HMOV DI,0EFH*4 ;预置的中断向量地址;向量表中低地址存放偏移地址;向量表中高地址存放段基址LEA 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:[BX2], AXPOP ESMOV Counter,0 ;中断次数计数器置零 STI ;中断标志位被设置为1时,CPU将允许中断请求
START1: CALL LedDisplay LEA SI,Buffer CALL Display8 ;中断10次的判断 CMP Counter,11H JNE START1 ;关中断HLTLedDisplay PROC NEAR MOV AL,Counter MOV AH,ALAND AL,0FHMOV Buffer0,ALAND AH,0F0H ;保留高8位ROR AH,4 ;循环右移4位MOV 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,1 ;中断次数加一DAA ;将AL的内容调整为两位组合型的二进制数MOV Counter,AL MOV DX,IO8259_0 ;写入OCW2MOV AL,20H ;发中断结束命令OUT DX,ALPOP AX ;恢复现场POP DXIRET
IRQ0 ENDPEND START