实验四定时器8253与中断控制器8259A实验
- 格式:doc
- 大小:96.50 KB
- 文档页数:5
预习报告一、实验目的1.学习8253编程定时/计数器的工作方式。
2.掌握中断控制器8259A与微处理机接口的原理和方法。
3..掌握中断控制器8259A的应用编程。
二、预习内容(一)实验中应用的芯片的结构、引脚、工作原理及工作方式。
(1)8253芯片。
8253具有3个独立的计数通道,采用减1计数方式。
在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。
当计数脉冲是已知周期的时钟信号时,计数就成为定时。
8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。
六种方式分别是:1)方式0:计数结束则中断;2)方式1:单脉冲发生器;3)方式2:速率波发生器;4)方式3:方波发生器;5)方式4:软件触发方式计数;6)方式5:硬件触发方式计数。
图1,8253结构图图2,8253引脚图8253引脚图如图1-2示,各引脚功能如下。
D7~D0——八条双向数据线;WR(低电平有效)——写输入信号;RD(低电平有效)——读输入信号;CS(低电平有效)——片选输入信号;A0、A1——片内寄存器地址输入信号;CLK——计数输入,用于输入定时基准脉冲或计数脉冲;OUT——输出信号,以相应的电平指示计数的完成,或输出脉冲波形;GATE——选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。
(2)8259芯片。
一个外部中断请求信号通过中断请求线IRQ,传输到IMR(中断屏蔽寄存器),IMR根据所设定的中断屏蔽字(OCW1),决定是将其丢弃还是接受。
如果可以接受,则8259A将IRR(中断请求暂存寄存器)中代表此IRQ的位置位,以表示此IRQ有中断请求信号,并同时向CPU的INTR(中断请求)管脚发送一个信号。
但CPU这时可能正在执行一条指令,因此CPU不会立即响应。
而当这CPU正忙着执行某条指令时,还有可能有其余的IRQ线送来中断请求,这些请求都会接受IMR的挑选。
如果没有被屏蔽,那么这些请求也会被放到IRR中,也即IRR中代表它们的IRQ的相应位会被置1。
数字逻辑与CPU实验报告实验内容:8259中断控制器、8253可编程定时/计数器接口实验姓名:班级:学号:实验一8259中断控制器实验一、实验目的1、掌握8259的工作原理。
2、掌握编写中断服务程序的方法。
3、掌握初始化中断向量的方法。
二、实验内容用单脉冲发生器的输出脉冲为中断源,每按一次产生一次中断申请,点亮或熄灭发光二极管。
三、实验方法(1)连线1、单脉冲发生器输出P+与8259的IR0相连;2、8259的片选CS8259与CS0相连;3、8259的INT与8086的INT相连;4、CS273与CS1相连;5、00与LED1相连;其他线均已连好。
(2)在8086实验系统软件中编辑程序,编译链接后,调试程序,程序流程图如图2。
(3)调试通过后,在中断服务程序内设置断点,运行程序,当接收到中断请求后,程序停在中断服务程序内的断点处。
四、程序源代码CODE SEGMENT PUBLICASSUME CS:CODEORG 100H;设置堆栈起点0100HSTART: 图2 程序流程图 MOV DX,4A0HMOV AX,13H ;写ICW1,单片8259,要写ICW4OUT DX,AXMOV DX,4A2HMOV AX,80H ;写入ICW2,设定IR0中断类型吗为80HOUT DX,AXMOV AX,01 ;写入ICW4,设定一般嵌套,非自动EOI方式 OUT DX,AXMOV AX,0 ;写入OCW1,设定允许中断。
OUT DX,AXMOV AX,0MOV DS,AXMOV SI,200H ;中断向量预存放在0100:0200H(向量码80H) MOV AX,OFFSET HINT;取中断服务程序的入口地址MOV DS:[SI],AXADD SI 2MOV AX,CSMOV DS:[SI],AXSTI;开中断JMP $;原地跳转HINT:;中断服务程序XOR CX,0FFH;CX全部取反(8位)MOV DX,4B0H;CS273接口的地址,与8个LED灯相连MOV AX,CX;输出高低电平控制LED灯的亮灭OUT DX,AXMOV DX,4A0H ;OCW2的的地址MOV AX,20H;写入OCW2,一般EOI命令,全嵌套方式OUT DX,AXIRET;中断返回CODE ENDSEND START五、实验结果程序调试通过后,当我们按一次单脉冲发生器的输出开关,对应连好的灯就会亮。
8259A中断控制器和8253计数器·定时器实验浏览次数:1129次悬赏分:50|解决时间:2008-12-2 12:17 |提问者:liushang8811程序1参考流程图1:开始2:关中断3:初始化8253(设定定时器0和1的工作方式及技术初值)4:使用INT 21H的35H号功能获取0AH号中断向量并保存。
5:使用INT 21H的25H号功能设置0AH号中断的新中断向量。
6:设置IMR寄读器及允许IRQ2中断。
7:开中断8:循环等待中断。
程序2参考流程图:编写中断服务程序。
要求主机每响应一次IRQ2的中断时,就执行一次终端服务子程序。
中断服务子程序的核心就是显示字符串“THIS IS A 8259A INTERRUPT”1:开始2:显示字符串3:技术结束?终端结束并返回4:关中断5: 使用INT 21H的25H号功能恢复原OAH号中断的中断向量6: 恢复IMR寄存器的原值7: 开中断8: 结束,返回DOS用汇编,急用,跪谢1.MOV AX,FLAGSAND AX,1111110111111111B ;关中断MOV FLAGS,AXMOV AL,00110110B ;假设定时器0设为方式3OUT 43H,ALMOV AL,XXH ;OUT 40H,ALMOV AL,XXHOUT 40H,AL ;定时器0初值MOV AL,01110110B ;假设定时器1设为方式3OUT 43H,ALMOV AL,XXH ;OUT 41H,ALMOV AL,XXHOUT 41H,AL ;定时器1初值MOV AH,35HMOV AL,0AHINT 21HPUSH ES ;保存原向量PUSH BXPUSH DS ;借用DS和DX作中断入口,暂时保存原值PUSH DXMOV DS,XXH ;新中断向量段地址MOV DX,XXH ;新中断向量偏移量MOV AH,25HMOV AL,0AHINT 21HPOP DXPOP DSIN AL,21HMOV SAV_IR,AL ;保存原8259设置(必须事先在数据段中为SAV_IR开辟一个字节的空间)OR AL,00000100B ;开IR2OUT 21H,ALMOV AX,FLAGSOR AX,0000001000000000B ;开中断MOV FLAGS,AXWAIT1:JMP WAIT12.MESSAGE DB 'THIS IS A 8259A INTERRUPT$'SAV_IR DB 0MOV AH,9MOV DX,SEG MESSAGEMOV DS,DXMOV DX,OFFSET MESSAGEINT 21HMOV AX,FLAGSAND AX,1111110111111111B ;关中断MOV FLAGS,AXPUSH DS ;借用DS和DX作中断入口,暂时保存原值PUSH DXMOV DS,ESMOV DX,BX ;原0AH中断向量值MOV AH,25HMOV AL,0AHINT 21HPOP DXPOP DSMOV AL,SAV_IR ;读回8259原设置值OUT 21H,ALMOV AX,FLAGSOR AX,0000001000000000B ;开中断MOV FLAGS,AXIRET回答者:shinesnow_wy|三级| 2008-11-12 18:51 呵呵~~我们是同行啊~~~也许是对的吧~~顶~~顶~~~顶~~~~MOV AX,FLAGSAND AX,1111110111111111B ;关中断MOV FLAGS,AXMOV AL,00110110B ;假设定时器0设为方式3OUT 43H,ALMOV AL,XXH ;OUT 40H,ALMOV AL,XXHOUT 40H,AL ;定时器0初值MOV AL,01110110B ;假设定时器1设为方式3 OUT 43H,ALMOV AL,XXH ;OUT 41H,ALMOV AL,XXHOUT 41H,AL ;定时器1初值MOV AH,35HMOV AL,0AHINT 21HPUSH ES ;保存原向量PUSH BXPUSH DS ;借用DS和DX作中断入口,暂时保存原值PUSH DXMOV DS,XXH ;新中断向量段地址MOV DX,XXH ;新中断向量偏移量MOV AH,25HMOV AL,0AHINT 21HPOP DXPOP DSIN AL,21HMOV SAV_IR,AL ;保存原8259设置(必须事先在数据段中为SAV_IR开辟一个字节的空间)OR AL,00000100B ;开IR2OUT 21H,ALMOV AX,FLAGSOR AX,0000001000000000B ;开中断MOV FLAGS,AXWAIT1:JMP WAIT12.MESSAGE DB 'THIS IS A 8259A INTERRUPT$'SAV_IR DB 0MOV AH,9MOV DX,SEG MESSAGEMOV DS,DXMOV DX,OFFSET MESSAGEINT 21HMOV AX,FLAGSAND AX,1111110111111111B ;关中断MOV FLAGS,AXPUSH DS ;借用DS和DX作中断入口,暂时保存原值PUSH DXMOV DS,ESMOV DX,BX ;原0AH中断向量值MOV AH,25HMOV AL,0AHINT 21HPOP DXPOP DSMOV AL,SAV_IR ;读回8259原设置值OUT 21H,ALMOV AX,FLAGSOR AX,0000001000000000B ;开中断MOV FLAGS,AXIRET。
集美大学计算机工程学院实验报告课程名称微机系统与接口技术实验名称实验二8259A可编程中断控制器实验实验类型设计型姓名学号日期地点微机实验室成绩教师第1页共8页1. 实验目的及内容1.1实验目的1)了解8259A芯片的工作原理。
学会使用8259A中断控制芯片实现对外中断的响应和处理。
2)了解8259A内部结构和熟悉8086的接口逻辑。
3)掌握8259A的初始化编程方法和8086是如何响应中断、退出中断的。
1.2实验内容1)设计8259A与8086CPU的硬件连接图,分配8259A的端口地址为9000H,9001H。
2)设计8259A的外围连接,实现拨动单脉冲开关触发8259A中断,8086计数中断次数并显示于G5区的断码管LED上。
3)中断次数的显示需调用系统给定的显示子程序DISPLAY8。
程序开始处必须设置外部连接,告诉汇编程序该显示程序在何处;设置显示缓冲区及相应的入口参数:si——显示缓冲区首地址。
若要让LED无任何显示,即对应单元送10H,若要让它显示数字,则把数字值直接送到相应的显示缓冲区单元中就可以显示了。
4)要保证DISPLAY8能正常显示,必须使得8279键盘/LED控制器能正确运行。
此时要设置连线:①8279键盘/LED控制器的CLK应连接2MHz的时钟;②8279键盘/LED控制器的CS,A0连接到芯片组A3区的CS5,A0;③控制数码管LED亮灭的数据(段码,列码)由8279的键盘/LED控制器输出,应该把E5区中的B,C与G5区的B,C对应连接起来。
2. 实验环境星研电子软件,STAR系列实验仪一套、PC机一台、导线若干3. 实验方法8259A的中断引脚IRi与单脉冲连接,实现拨动单脉冲开关触发8259A中断,8086计数中断次数并显示于G5区的断码管LED上,此实验使用8259A的IR2中断,正脉冲触发中断,脉冲频率为2MHz.4.实验步骤MOV DX,9001HMOV AL,00001010B OUT DX,ALMOV AL,00001101B OUT DX,ALMOV AL,11111011B OUT DX,ALMOV CX,0000HMOV BL,00HMOV BH,11STI L1: MOV FLAG,0MOV AL,BLAND AL,0FHMOV BUF,ALMOV AL,BLSHR AL,4AND AL,0FHMOV BUF+1,ALMOV BUF+2,10HMOV BUF+3,10HMOV BUF+4,10HMOV BUF+5,10HMOV BUF+6,10HMOV BUF+7,10HLEA SI,BUFCALL DISPLAY8 CHECK:CMP FLAG,0JZ CHECK CMP BH,00HJZ ZEROJMP L1ZERO:MOV DX,9001HIN AL,DX OR AL,00000100 OUT DX,ALJMP ZEROIRQ2 PROC FARMOV AL,BLADD AL,01HDAAMOV BL,ALDEC BHMOV FLAG,1MOV DX,9000HMOV AL,00100000BOUT DX,ALIRETIRQ2 ENDPEND START4.4运行调试程序1)按要求设计的电路正确连接线路,检查完毕后打开电源。
2015-2016 学年第一学期《微型计算机技术》课程设计报告项目组:第八组学院:计算机科学与工程指导教师:唐培丽设计时间:2016年1月目录一、团队构成及分工 (3)二、项目进度计划 (4)三、实验报告 (5)四、设计报告 (7)五、程序清单 (20)六、课程设计总结 (40)一、团队构成及分工指导教师签字:年月日二、项目进度计划三、实验报告1.实验目的1.学习8253编程定时/计数器的工作方式。
2.掌握中断控制器8259A与微处理机接口的原理和方法。
3.掌握中断控制器8259A的应用编程。
2.实验内容利用8253的定时器功能。
8253的四个端口地址为48H,49H,4AH,4BH,本实验采用8253的通道2,工作在方式3(方波发生器方式)输入CLK2为1KHZ。
输出OUT2作为8259的断请求信号。
8259有两个口地址,本实验为20H和21H,其中20H用来写ICW1,21H用来写ICW2、ICW4,本实验中8259为单片,边沿触发,中断类型号的起始值是8,采用3号中断源,即IRQ3和8253输出口OUT2相连,每过1秒接收到一个中断,向8259发出中断请求信号, CPU响应后,在中断处理程序中,把时间缓冲区中的时间加1,并将其输入到显示缓冲区,以便显示器显示更新后的时间。
计数初值的计算:1/1000000*X=1/20 X=50000D=0C350H(用1MHZ信号产生1/20秒方波)3.实验步骤1.连接好实验线路。
图1-1 实验连线图2.编写程序并调试。
3.运行程序,实验仪显示器上显示一电子秒表。
4.实验记录显示屏亮,刚开始可以看到八段管的第六个管开始显示数字,计时开始,每秒加1,实现了时钟效果。
现象的原因分析:程序写入控制字与计数初值后,定时器启动工作,当计数器减到1时,输出端输出一个CLK周期的低电平,向CPU申请中断,当达到100次时,则输出端输出1s,向CPU申请中断,其中一个数码管显示,当计数到60s时,输出端向CPU申请中断,由另一数码管显示1min,同理由数码管显示1h,CPU处理,使数码管的显示发生变化。
实验四使用8259A的单级中断控制实验一、实验目的1.掌握中断控制器8259A与微机接口的原理和方法。
2.掌握中断控制器8259A的应用编程。
二、实验内容编制程序,利用开关作为8259芯片IR7的中断源,人工控制产生单一中断。
中断的功能是驱动发光二极管,使其亮灭,不停地闪动。
三、实验提示8259中断控制器是专为控制优先级中断设计的芯片。
它将中断源优先级排队,辩别中断源以及提供中断矢量的电路集于一片中。
因此无需附加任何电路,只需对8259进行编程,就可以管理8级中断,并选择优行模式和中断请求方式,即中断结构可以由用户编程来设定。
同时,在不需要增加其它电路的情况下,通过多片8259的级联,能构成多达64级的矢量中断系统。
实验箱中采用一片8259A中断控制芯片,工作于主片方式,8个中断请求输入端IR0~IR7对应的中断型号为8~F,其和中断矢量关于如下表所示。
表1 8259中断矢量对应关系务程序程序,使系统每次响应外部中断IR7时发光二极管闪烁。
四、实验电路五、实验软件清单Port0 EQU 0FFE0HPort1 EQU 0FFE1HCODE SEGMENTASSUME CS:CODE,DS:CODE,ES:CODEORG 3400HP8259: CLIMOV AX,OFFSET INT8259MOV BX,003CHMOV [BX],AXMOV BX,003EHMOV AX,0000HMOV [BX],AXCALL FOR8259MOV AL,0FEHMOV DX,0FFE4HSTIJMP $;============================== FOR8259:MOV AL,13HMOV DX,Port0OUT DX,ALMOV AL,08HMOV DX,Port1OUT DX,ALMOV AL,09HOUT DX,ALMOV AL,7FH ;IRQ7OUT DX,ALRET;--------------------------- INT8259:cliPush dxPush axMOV AL,20HMOV DX,Port0OUT DX,ALPop axPop dxOut dx,almov cx,0loop $Rol al,1STIIRETCODE ENDSEND P8259六、实验软件框图七、实验步骤(1)按实验电路图连接线路:①开关Ki 和8259 7号中断IR7插孔相连。
8259A的中断应用实验一、实验目的(1)学习8259 A中断控制器的结构及其工作原理。
(2)掌握59A的工作方式及初始化。
(2)学习8259 可编程控制器的应用编程。
(3)掌握使用PC 机内8259 的方法。
(4)掌握修改中断向量的方法。
二、实验要求编写一键盘中断处理程序,计数键盘中断次数,并用该程序替换系统键盘中断处理程序,使当键盘中断产生10 次后,显示按键次数并结束应用。
三、相关基本知识a、CPUCPU是中央处理单元(Central Process Unit)的缩写,它可以被简称做微处理器。
(Microprocessor),不过经常被人们直接称为处理器(processor)。
不要因为这些简称而忽视它的作用,CPU是计算机的核心,其重要性好比心脏对于人一样。
实际上,处理器的作用和大脑更相似,因为它负责处理、运算计算机内部的所有数据,而主板芯片组则更像是心脏,它控制着数据的交换。
CPU的种类决定了你使用的操作系统和相应的软件。
CPU主要由运算器、控制器、寄存器组和内部总线等构成,是PC的核心,再配上储存器、输入/输出接口和系统总线组成为完整的PC。
CPU的基本结构、功能及参数CPU主要由运算器、控制器、寄存器组和内部总线等构成。
寄存器组用于在指令执行过后存放操作数和中间数据,由运算器完成指令所规定的运算及操作。
CPU主要的性能指标有:1.主频主频也叫时钟频率,单位是MHz,用来表示CPU的运算速度。
CPU的主频=外频×倍频系数。
很多人认为主频就决定着CPU的运行速度,这不仅是个片面的,而且对于服务器来讲,这个认识也出现了偏差。
CPU的主频与CPU实际的运算能力是没有直接关系的,主频表示在CPU内数字脉冲信号震荡的速度。
CPU的运算速度还要看CPU的流水线的各方面的性能指标。
当然,主频和实际的运算速度是有关的,只能说主频仅仅是CPU性能表现的一个方面,而不代表CPU的整体性能。
2.外频外频是CPU的基准频率,单位也是MHz。
8259中断控制实验报告实验报告:8259中断控制实验一、实验目的:学习和掌握8259中断控制器的工作原理和使用方法。
二、实验设备:计算机、8259中断控制器芯片、连接线、示波器等。
三、实验原理:1.8259中断控制器简介8259是Intel公司推出的一个通用中断控制器芯片,它可以管理多种设备的中断请求,并对中断请求进行优先级排序和处理。
8259具有级联功能,可以通过级联实现更多的设备中断管理。
2.8259工作原理8259中断控制器有两个主要模块:中断请求译码器和中断向量地址寄存器。
中断请求译码器用于判断中断请求的优先级,按照优先级排序,将中断请求发送给CPU。
中断向量地址寄存器用于存储中断向量的地址,CPU根据中断向量的地址来执行相应的中断服务程序。
3.8259中断控制器的寄存器8259中断控制器有多个重要的寄存器,包括中断屏蔽寄存器、中断请求寄存器、中断服务地址寄存器等。
中断屏蔽寄存器用于屏蔽或打开特定中断请求。
中断请求寄存器用于存储当前的中断请求状态。
中断服务地址寄存器用于存储中断向量的地址。
四、实验内容:1.配置8259中断控制器将8259中断控制器连接到计算机,并通过连接线将适当的引脚连接到需要中断控制的设备上。
2.编写中断服务程序根据实验要求,编写相应的中断服务程序,并将其存储在中断服务地址寄存器指定的内存地址中。
3.设置中断向量地址将中断向量的地址存储在中断向量地址寄存器中,使CPU能够根据中断请求执行相应的中断服务程序。
4.测试中断控制功能通过测试设备向8259中断控制器发送中断请求,观察计算机是否能正确处理中断请求,并执行相应的中断服务程序。
五、实验结果与分析:经过以上实验步骤,我们成功配置了8259中断控制器,并编写了相应的中断服务程序。
在测试过程中,通过向8259中断控制器发送中断请求,我们观察到计算机正确地处理了中断请求,并执行了我们编写的中断服务程序。
这表明我们成功地完成了8259中断控制实验。
8259a中断实验报告
8259A中断实验报告
实验目的:
本实验旨在通过对8259A中断控制器的实验,加深对中断处理的理解,掌握中断控制器的基本原理和工作方式,以及实现中断服务程序的编写和调用。
实验内容:
1. 熟悉8259A中断控制器的工作原理和寄存器结构;
2. 编写中断服务程序,实现对8259A中断的响应和处理;
3. 进行实际的中断触发和处理实验,验证中断服务程序的正确性。
实验步骤:
1. 了解8259A中断控制器的寄存器结构和工作原理;
2. 编写中断服务程序,包括中断向量表的初始化和中断服务程序的编写;
3. 配置8259A中断控制器,使其能够正确地响应外部中断;
4. 在实验板上模拟外部中断信号,验证中断服务程序的正确性;
5. 测试不同优先级的中断,观察中断响应的顺序和中断服务程序的执行情况;
6. 调试和优化中断服务程序,确保其能够正确地处理各种中断情况。
实验结果:
通过本次实验,我们成功地实现了对8259A中断控制器的实验,并完成了中断服务程序的编写和调试。
在实验过程中,我们深入理解了中断的工作原理和中断服务程序的编写方法,掌握了中断控制器的配置和使用技巧。
通过不断地调试和优化,我们确保了中断服务程序能够正确地响应和处理各种中断情况,提高了系统的稳定性和可靠性。
结论:
本次实验使我们对8259A中断控制器有了更深入的了解,掌握了中断处理的基本原理和方法,提高了我们的实际操作能力和问题解决能力。
通过实验,我们对中断控制器的使用和调试有了更深入的认识,为我们今后的学习和工作打下了良好的基础。
实验四8259A中断控制器实验一、实验目的与要求了解8259A的内部结构、工作原理;了解8259A与8086的接口逻辑;掌握对8259A的初始化编程方法,了解8086是如何响应中断、退出中断的;体会8259A的中断优先级处理方法。
复习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。
二、实验设备STAR系列实验仪一套、PC机一台三、实验内容编制程序:拨动单脉冲开关,“”送给8259A的IR0,8088CPU计数中断次数,显示在区:单脉冲“六、参考程序1.MODEL TINYEXTRN Display8:NEARIO8259_0 EQU 0F000HIO8259_1 EQU 0F001H.STACK 100.DATABUFFER DB 8 DUP(?) Counter DB ?ReDisplayFlag DB 0.CODESTART: MOV AX,@DATAMOV DS,AXMOV ES,AXNOPCALL Init8259CALL WriIntverMOV Counter,0 ;中断次数MOV ReDisplayFlag,1 ;需要显示STI ;开中断START1: CMP ReDisplayFlag,0JZ START1CALL LedDisplayMOV ReDisplayFlag,0JMP START1Init8259 PROC NEARMOV DX,IO8259_0MOV AL,13HOUT DX,ALMOV DX,IO8259_1MOV AL,08HOUT DX,ALMOV AL,09HOUT DX,ALMOV AL,0FEHOUT DX,ALRETInit8259 ENDPWriIntver PROC NEARPUSH ESMOV AX,0MOV ES,AXMOV DI,20HLEA AX,INT_0STOSWMOV AX,CSSTOSWPOP ESRETWriIntver ENDPLedDisplay PROC NEARMOV AL,CounterMOV AH,ALAND AL,0FHMOV Buffer,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,10HLEA SI,BufferCALL Display8RETLedDisplay ENDPINT_0: PUSH DXPUSH AXMOV AL,CounterADD AL,1DAAMOV Counter,ALMOV ReDisplayFlag,1MOV DX,IO8259_0MOV AL,20HOUT DX,ALPOP AXPOP DXIRETEND START2、参考程序2IO8259_0 EQU 0F000HIO8259_1 EQU 0F001HCMD_8279 EQU 0BF01H ;8279命令字、状态字地址DATA_8279 EQU 0BF00H ;8279读写数据口的地址STA SEGMENT STACKDB 100 DUP(?)STA ENDSDATA SEGMENTBUFFER DB 8 DUP(?)Counter DB 0ReDisplayFlag DB 0LED_TAB DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 080H,90H,88H,83H,0C6H,0A1H,86H,8EH DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STASTART: MOV AX,DATAMOV DS,AXMOV ES,AXNOPCALL INIT8279 ;8279初始化CALL Init8259 ;8259初始化CALL WriIntver ;设置中断向量MOV Counter,0 ;中断次数MOV ReDisplayFlag,1 ;设置显示标志STI ;开中断START1: CMP ReDisplayFlag,0JZ START1CALL LedDisplay ;显示刷新MOV ReDisplayFlag,0 ;清除显示标志JMP START1Init8259 PROC NEARMOV DX,IO8259_0MOV AL,13HOUT DX,ALMOV DX,IO8259_1MOV AL,08HOUT DX,ALMOV AL,09HOUT DX,ALMOV AL,0FEHOUT DX,ALRETInit8259 ENDPWriIntver PROC NEARPUSH ESMOV AX,0MOV ES,AXMOV DI,20HLEA AX,INT_0STOSWMOV AX,CSSTOSWPOP ESRETWriIntver ENDPLedDisplay PROC NEARMOV AL,CounterMOV AH,ALAND AL,0FHMOV Buffer,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,10HLEA SI,BufferLEA BX,LED_TABCALL CLEARMOV AL,[SI]XLATMOV DX,DATA_8279OUT DX,ALMOV AL,[SI+1]XLATOUT DX,ALRETLedDisplay ENDPINIT8279 PROC NEARMOV DX,CMD_8279 ;CMD_8279为写命令地址、读状地址MOV AL,34H ;可编程时钟设置,设置分频系数(20分频)OUT DX,ALMOV AL,10H ;8*8字符显示,右边输入,外部译码键扫描方式OUT DX,ALCALL INIT8279_1RETINIT8279 ENDPINIT8279_1 PROC NEARCALL CLEAR ;清显示MOV AL,90H ;从第一个数码管开始移位显示OUT DX,ALRETINIT8279_1 ENDPCLEAR PROC NEARMOV DX,CMD_8279MOV AL,0DEH ; 清除命令OUT DX,ALWAIT1: IN AL,DXTEST AL,80HJNZ WAIT1 ; 显示RAM清除完毕吗?RETCLEAR ENDPINT_0: PUSH DXPUSH AXMOV AL,CounterADD AL,1DAAMOV Counter,ALMOV ReDisplayFlag,1MOV DX,IO8259_0MOV AL,20HOUT DX,ALPOP AXPOP DXIRETCODE ENDSEND START。
微机原理实验报告班级:XXXXX姓名:XXXX学号:20XXXXXXXXX大学信息科学与技术学院信息工程系实验四8259A中断控制器实验一、实验目的:1、利用试验箱掌握8259A中断控制器的使用方法。
2、掌握中断的相关知识。
二、实验内容:1、实验连线(微机原理试验箱)⑴连接138译码输入端A.B.C,其中A连A2,B连A3,C连A4,138使能控制输入端G 与总线单元上方的GS相连。
⑵将8259CS插孔与译码单元的Y0相连,中断源IR7与单脉冲单元的SP插孔相连。
⑶用8芯扁平电缆将8259中断控制单元的数据总线插座与数据总线单元任一插座相连。
2、 PC机连接好串口线电源线,打开电源,在电脑中打开intel8088微机实验系统选择串口一和 57600 波特率若出现仿真器没有连接的画面则串口线没有连接好如下图:3、LED环境⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。
Ph88/he08.asm代码在软件中自带的,打开软件中的he08.asm 点编译(c)点击编译、连接、装载⑵在“P.”状态下在小键盘键入3400,然后按“EXEC”进入实验项目的运行。
这是输入起始地址,对应代码中的 ORG 3400H4、观察运行结果在连续运行方式下,按动 AN 按钮,LED 数码管从最高位开始依次显示“7”显示满后,最高位显示“P.”继续等待中断。
5、终止运行按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出该程序的运行返回监控状态。
三、程序流程图和程序代码1、流程图2、代码与注释;-------------------硬件实验八 8259单级中断控制器实验------------------- CODE SEGMENTASSUME CS:CODE,DS:CODE,ES:CODEORG 3400HH8: JMP P8259ZXK EQU 0FFDCHZWK EQU 0FFDDHLED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HDB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3HBUF DB ?,?,?,?,?,?Port0 EQU 0FFE0HPort1 EQU 0FFE1HP8259: CLICALL WP ;初始化显示“P.”MOV AX,OFFSET INT8259MOV BX,003CHMOV [BX],AXMOV BX,003EHMOV AX,0000HMOV [BX],AXCALL FOR8259mov si,0000hSTICON8: CALL DISJMP CON8;------------------------------------ INT8259:cliMOV BX,OFFSET BUFMOV BYTE PTR [BX+SI],07HINC SICMP SI,0007HJZ X59XX59: MOV AL,20HMOV DX,Port0OUT DX,ALmov cx,0050hxxx59: push cxcall dispop cxloop xxx59pop cxmov cx,3438hpush cxSTIIRETX59: MOV SI,0000HCALL WPJMP XX59;==============================FOR8259:MOV AL,13HMOV DX,Port0OUT DX,ALMOV AL,08HMOV DX,Port1OUT DX,ALMOV AL,09HOUT DX,ALMOV AL,7FH ;IRQ7OUT DX,ALRET;---------------------------WP: MOV BUF,11H ;初始化显示“P.”MOV BUF+1,10HMOV BUF+2,10HMOV BUF+3,10HMOV BUF+4,10HMOV BUF+5,10HRET;--------------------------------DIS: MOV CL,20HMOV BX,OFFSET BUFDIS1: MOV AL,[BX]PUSH BXMOV BX,OFFSET LEDXLATPOP BXMOV DX,ZXKOUT DX,ALMOV AL,CLMOV DX,ZWKOUT DX,ALPUSH CXMOV CX,0100HDELAY: LOOP $POP CXCMP CL,01HJZ EXITINC BXSHR CL,1JMP DIS1EXIT: MOV AL,00HMOV DX,ZWKOUT DX,ALRET;--------------------------CODE ENDSEND H8四、调试过程及遇到的问题在“P.”状态下键入 3400,然后按“EXEC”进入实验项目的运行。
实验四中断控制器8259A一、实验目的1、掌握中断控制器8259A与微机接口的原理和方法。
2、掌握中断控制器8259A的应用编程。
二、实验设备DVCC系列微机仿真实验系统三、实验内容1.实验原理本系统中已设计有一片8259A中断控制芯片,工作于主片方式,8个中断请求输入端IR0~IR7对应的中断型号为8~F,其和中断矢量关系如下表3-3所示。
根据实验原理图,8259A和8088系统总线直接相连,8259A 上连有一系统地址线A0,故8259A 有2 个端口地址,本系统中为60H、61H。
60H 用来写ICW1,61H 用来写ICW2、ICW3、ICW4,初始化命令字写好后,再写操作命令字。
OCW2、OCW3 用口地址60H,OCW1用口地址61H。
图3-12中,使用了3号中断源,IR3插孔和SP 插孔相连,中断方式为边沿触发方式,每按一次AN按钮产生一次中断信号,向8259A 发出中断请求信号。
如果中断源电平信号不符规定要求则自动转到7号中断,显示“Err”。
CPU响应中断后,在中断服务中,对中断次数进行计数并显示,计满5次结束,显示器显示“Good”。
2、实验线路连接(1)8259模块上的INT连8088的INTR(在主板键盘矩阵下面)。
(2)8259模块上的INTA连8088的INTA(在主板键盘矩阵下面)。
(3)MP区SP插孔和8259的3号中断IR3插孔相连,SP端初始为低电平。
(4)8259模块上的D0~D7连到BUS 2区的XD0~XD7。
(5)8259模块上的CS端接Y6。
(6)8259模块上的A0连到BUS 区的XA0上。
(7)8259模块上的RD、WR信号线分别连到BUS 3区的XRD、XWR上。
四、实验步骤1、按图连好实验线路2、运行实验程序(1)联机时,实验程序文件名为\DVCC\H8EXE\H86S.EXE。
(2)单机时,实验程序起始地址为F000:91A0。
在系统显示监控提示符“P.”时:输入F000 按F1键输入91A0 按EXEC键在系统上显示“8259-1”。
实验报告实验名称8259A中断控制器实验姓名学号班级教师日期一、实验内容与要求1.1 实验内容了解8259A终端控制器的工作原理,了解PC中断的原理和过程,设计并编写程序,设置8259A的命令字,定义中断服务程序,使在TPC-USB平台上每按一次单脉冲开关产生一次中断,在屏幕上依次显示“The 1 TPCA Interrupt!”、“The 2 TPCA Interrupt!”、……、“The 10 TPCA Interrupt!”,中断10次后程序退出,并在屏幕上显示“The TPCA Interrupt end!”。
1.2 实验要求(1)具有一定的汇编编程的基础,能编写一些基本语句来实现实验。
实验前根据实验流程图,写出对应代码;(2)要了解8259A中断控制器的内部结构和外部引脚,理解芯片的工作原理和工作过程。
熟悉8259A芯片的命令字,对其进行编程;(3)熟悉实验平台TPC-USB了解各个接口的名称与功能,进行实验时能快速并正确地连接好实验电路;(4)连接PC与TPC-USB平台,用微机实验软件运行程序,每按一次TPC-USB平台上的单脉冲开关产生一次中断,要在屏幕上依次显示“The 1 TPCA Interrupt!”、“The 2TPCA Interrupt!”、……、“The 10 TPCA Interrupt!”,中断10次后程序退出,并在屏幕上显示“The TPCA Interrupt end!”。
二、实验原理与硬件连线2.1 实验原理8259A是一种可编程中断控制器,可协助CPU进行中断管理。
8259A 的内部结构如图1所示。
单片8259A工作时,每次中断处理过程如下:(1)当IR7 ~ IR0 上有中断请求,则IRR 相应的位置1;(2)对于已进入IRR且未被IMR屏蔽的中断请求,PR电路进行优先级判定,得到最高级的中断请求;(3)控制逻辑接收中断请求,向CPU发INT 信号;(4)若CPU允许中断,则在当前指令结束后连续发出2个中断应答信号INTA,进行中断响应。
实验四 定时器8253与中断控制器8259A 实验一﹑实验目的1. 掌握计数器/定时器8253的工作原理和编程方法。
2. 掌握8259中断控制器的工作原理;3. 掌握中断服务程序的编写。
二﹑实验内容1. 该实验用PC 机内部的中断控制器8259A ,中断源用TPC_H 实验箱上8253来产生,电路如下所示,将8253计数器0、计数器1分别设置为方式3和方式2,计数初值设为2000,每隔4秒产生一次。
TPC_H 实验箱上的IRQ 已连接到PC 机内部主片8259A 的IRQ7,主片8259A 的端口地址为20H 和21H ,主机启动时,系统已将8259A 中断控制器进行了初始化(边沿触发﹑一般完全嵌套方式﹑非自动结束,ICW2为08H ,IRQ7对应的中断类型码为0FH);2. 实验电路如下图:注意:做中断实验时,JB 上的短路片应插在“I/O ”位置,JC 上的短路片插在“I/O ”位置。
3. 编写程序,要求每次主机响应外中断IRQ7时,显示"THIS IS A 8259A INTERRUPT !",在键盘上敲任意一个键,程序退出。
4. 修改电路和程序,直接用手动产生单个脉冲作为中断请求信号,要求每按一次开关产生一次中断,在屏幕上显示一次“THIS IS A IRQ7 INTRUPT !”,中断10次后程序退出。
JCI/O EM实验连线6条,如图红色虚线所示去IRQ7去去50去1MHz 输出端1.复习8259A工作原理,编程方法和使用方法。
2.根据要求编写相应的汇编程序。
四﹑报告要求1.整理好经过运行是正确的源程序,并加上注释。
2.总结实验调试过程中遇到的问题。
3.通过实验回答思考题。
五﹑思考题初始化时设置为非自动结束方式,那么在中断服务程序将结束时必须设置什么操作命令?如果不设置这种命令会发生什么现象?六、实验原理1、PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。
8259中断控制器实验的实验报告实验报告:8259中断控制器实验一、实验目的本实验的目的是通过对8259中断控制器的实验,掌握和理解8259中断控制器的原理、工作原理和使用方法。
通过实验能够进一步了解中断控制器的中断分配和中断处理等功能。
同时还能够通过实验,对中断优先级以及中断的屏蔽和响应进行深入了解。
二、实验原理1.8259中断控制器简介8259中断控制器是用于管理和控制多个硬件设备的中断请求的重要芯片。
它是一个具有8个中断请求输入和8个中断向CPU输出的优先级解码器。
中断控制器主要由两个部分组成:中断请求器部分和中断控制器部分。
中断请求器部分用于产生中断请求信号,而中断控制器部分用于优先级解码和中断分配。
2.8259中断控制器的工作原理8259中断控制器可以管理多个硬件设备的中断请求,同时对中断信号进行优先级判断和派发给CPU进行相应处理。
当一些硬件设备发生中断时,会发送中断请求信号给8259中断控制器,然后8259将根据中断请求的优先级判断是否屏蔽或者响应该中断请求。
3.8259中断控制器的使用方法在使用8259中断控制器时,首先需要设置中断控制器的工作模式和中断请求的优先级,然后对中断控制器的屏蔽和响应进行相应的配置。
使用中断控制器时,还需要对中断服务程序进行适当的编程,以实现中断的处理逻辑。
三、实验步骤1.实验前的准备工作(1)准备实验所需的开发板和8259中断控制器。
(2)将8259中断控制器与相应的硬件设备连接。
(3)准备PC机和开发板的通信线缆。
2.8259中断控制器的设置和初始化(1)通过编程方式将8259中断控制器设置为特定的工作模式。
(2)设置中断请求(IRQ)的优先级。
3.中断服务程序的编写(1)根据需求编写中断服务程序,即中断处理逻辑。
(2)将中断服务程序与8259中断控制器的相应中断请求进行关联。
4.实验结果的观察和分析(1)观察测试硬件设备的输出结果。
(2)分析实验结果,判断是否成功实现中断控制和处理。
实验七 定时器8253与中断控制器8259A 实验二、实验电路五、实验项目1.该实验用PC 机内部的中断控制器8259A ,中断源用TPC-H 实验箱上的8253来产生,电路如图1所示,将8253计数器0,计数器1分别设置为方式3和方式2,计数初值设为2000,使8253每隔4秒产生一次中断请求。
2.编写程序,要求每次主机响应外中断IRQ7时,显示"THIS IS A 8259A INTERRUPT !",在键盘上敲任意一个键,程序退出。
3.修改电路和程序,直接用手动产生单个脉冲作为中断请求信号,要求每按一次开关产生一次中断,在屏幕上显示一次" THIS IS A 8259A INTERRUPT !",中断10次后程序退出。
六、编程提示1.在TPC-H 实验系统的接口卡上有一个跳线开关(JP ),可以选择IRQ2、IRQ3、IRQ4、IRQ7引到试验箱上的IRQ 插孔,出厂设置的是IRQ7。
2.由于9054的驱动程序影响直写9054芯片的控制寄存器,中断实验需要在纯DOS 的环境中才能正常运行。
3.由于TPC 卡使用PCI 总线,所以分配的中断号每台微机可能都不同,编程时需要了解当前的微机使用那个中断号并进行设置,获取方法如下:在纯DOS 环境下 C:\ASM\>提示符下键入PORTR1后敲回车键,会得到:TPC PCI Card 9054 Chip I/O Base Adress :2000TPC PCI Card I/O Base Adress :2400TPC PCI Card Memory Base Adress :d2000000TPC PCI Card Interrupt Line :0A其中,2000为PCI 卡上9054芯片的基地址;2400为试验箱的基地址,2400/2407对应的是280/287H 插孔;0A 表示系统分配中断为IRQ10。
实验四 定时器8253与中断控制器8259A 实验
一﹑实验目的
1. 掌握计数器/定时器8253的工作原理和编程方法。
2. 掌握8259中断控制器的工作原理;
3. 掌握中断服务程序的编写。
二﹑实验内容
1. 该实验用PC 机内部的中断控制器8259A ,中断源用TPC_H 实验箱上8253来产生,电路如下所示,将8253计数器0、计数器1分别设置为方式3和方式2,计数初值设为2000,每隔4秒产生一次。
TPC_H 实验箱上的IRQ 已连接到PC 机内部主片8259A 的IRQ7,主片8259A 的端口地址为20H 和21H ,主机启动时,系统已将8259A 中断控制器进行了初始化(边沿触发﹑一般完全嵌套方式﹑非自动结束,ICW2为08H ,IRQ7对应的中断类型码为0FH);
2. 实验电路如下图:
注意:做中断实验时,JB 上的短路片应插在“I/O ”位置,JC 上的短路片插在“I/O ”位置。
3. 编写程序,要求每次主机响应外中断IRQ7时,显示"THIS IS A 8259A INTERRUPT !",在键盘上敲任意一个键,程序退出。
4. 修改电路和程序,直接用手动产生单个脉冲作为中断请求信号,要求每按一次开关产生一次中断,在屏幕上显示一次“THIS IS A IRQ7 INTRUPT !”,中断10次后程序退出。
JC
I/O EM
实验连线6条,如图红色虚线所示
去IRQ7
去去50去1MHz 输出端
1.复习8259A工作原理,编程方法和使用方法。
2.根据要求编写相应的汇编程序。
四﹑报告要求
1.整理好经过运行是正确的源程序,并加上注释。
2.总结实验调试过程中遇到的问题。
3.通过实验回答思考题。
五﹑思考题
初始化时设置为非自动结束方式,那么在中断服务程序
将结束时必须设置什么操作命令?如果不设置这种命令会发
生什么现象?
六、实验原理
1、PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。
中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求。
IBM-PC/XT机内有一片8259中断控制器对外可提供8个中断源:
中断源中断类型号中断功能
IRQ0 08H 时钟
IRQ1 09H 键盘
IRQ2 0AH 保留
IRQ3 0BH 串行口2
IRQ4 0CH 串行口1
IRQ5 0DH 硬盘
IRQ6 0EH 软盘
IRQ7 0FH 并行打印机
8个中断源的中断请求信号线IRQ0~IRQ7在主机的62线总线插槽中可以引出,系统已设定中断请求信号为“边沿触发”、普通结束方式。
对于286以上的微机又扩展了一片8259中断控制器,主片的IRQ2已用于从片的级连。
本实验箱在出厂时,默认IRQ7引到实验台上。
2、编程说明:PC机中断控制器8259的地址为20H、21H,编程时要根据中断类型号设置中断矢量,8259中断屏蔽寄存器IMR对应位要清0(允许中断),中断服务程序返回前要使用中断结束命令:
MOV AL,20H
OUT 20H,AL
中断结束返回DOS时应将IMR对应位置1,以关闭中断。
七、实验参考流程如下:
八、实验步骤:
⑴、打开实验箱,按红虚线位置连接好接线(6条),检查连接有无错误。
⑵、连接微机至实验板的50线扁平电缆。
⑶、打开微机和实验板电源。
⑷、编写程序并调试程序。
⑸、调试通过后全速运行并观察实验结果。
⑹、写出实验报告并交微机组成原理实验室。
九、实验参考程序如下:
;******************************; ;* 8259IRQ7定时中断服务程序 *; ;******************************; data segment
mess db ' THIS IS A 8259A INTERRUPT !',0aH,0dH,'$' data ends stack segment
db 100h dup(?) stack ends code segment
assume cs:code,ds:data,ss:stack start: mov ax,cs mov ds,ax
mov dx,offset int7 mov ax,250fh
int 21h ;设中断程序int7的类型号为0fh cli ;清中断标志位 in al,21h ;读中断屏蔽寄存器 and al,7fh ;开放IRQ7中断 out 21h,al
中断主程序
中断服务程序
sti ;开中断
mov dx,283h ;向8253写控制字
mov al,36h ;使0通道为工作方式3
out dx,al
mov ax,2000 ;写入循环计数初值2000
mov dx,280h
out dx,al ;先写入低字节
mov al,ah
out dx,al ;后写入高字节
mov dx,283h
mov al,74h ;设8253通道1工作方式2
out dx,al
mov ax,2000 ;写入循环计数初值2000
mov dx,281h
out dx,al ;先写低字节
mov al,ah
out dx,al ;后写高字节
sss: jmp sss
int7: mov ax,data ;中断服务程序
mov ds,ax
mov dx,offset mess
mov ah,09 ;显示每次中断的提示信息
int 21h
mov al,20h
out 20h,al ;发出EOI结束中断
mov ah,06h ;检测按键状态
mov dl,0ffh
int 21h
je rete
in al,21h
or al,80h ;关闭IR7中断
out 21h,al
sti ;置中断标志位
mov ah,4ch ;返回DOS
int 21h
rete: sti ;开中断
iret ;中断返回
code ends
end start
;********************************;
;* 8259IRQ7中断10次服务程序 *;
;********************************;
data segment
mess db ' THIS IS A 8259A INTERRUPT !',0aH,0dH,'$' data ends
code segment
assume cs:code,ds:data
start: mov ax,cs
mov ds,ax
mov dx,offset int7
mov ax,250fh
int 21h ;设中断程序int7的类型号为0fh
cli ;清中断标志位
in al,21h ;读中断屏蔽寄存器
and al,7fh ;开放IRQ7中断
out 21h,al
mov cx,10 ;记中断循环次数为10次
sti ;置中断标志位
ll: jmp ll
int7: mov ax,data ;中断服务程序
mov ds,ax
mov dx,offset mess
mov ah,09 ;显示每次中断的提示信息
int 21h
mov al,20h
out 20h,al ;发出EOI结束中断
loop next
in al,21h
or al,80h ;关闭IR7中断
out 21h,al
sti ;置中断标志位
mov ah,4ch ;返回DOS
int 21h
next: iret
code ends
end start。