1、微机原理实验5实验五 中断特性及8259应用编程实验实验目的:1、 认识TDN86/51系统的中断特性。2、 掌握8259中断控制器的工作原理。3、 ICW1ICW2级联方式?要ICW4?ICW4芯片就绪,接受中断请求ICW3YYNN掌握8259可编程中断控制器的应用编程。4、 学习掌握8259级联方式的使用方法。5、 学习在接口实验单元上连接实验电路的方法相关理论知识:1、 8259A可编程中断控制器中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片,它将中断源优先级排队、判别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A编程就可以管理8级
2、外部中断,并可以选择优先模式和中断请求方式。8259A的编程,就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1-OCW3分别写入初始化命令寄存器组和操作命令寄存器组。命令字D7D6D5D4D3D2D1D0设定值入口地址ICW100011:电平触发0:边沿触发01:单片0:多片1:有ICW40:无ICW413H20HICW2中断向量地址T7T3位00008H21HICW3(主)1:IRQi线上有级联从片0:无级联从片21HICW3(从)不用与主片对应的从片识别码,从000111ICW4不用1:特殊嵌套0:一般嵌套1:缓冲0:非缓冲1:主片0:从片1:自动EOI0:正常EOI1
3、0DH21H操作命令字OCW1 OCW3可根据需要随时进行设置,其命令字格式如下:命令字D7D6D5D4D3D2D1D0入口地址OCW11:置中断屏蔽位,0:清除中断屏蔽位21HOCW2RSLEOI00L2L1L020HOCW3000和01:无意义10:撤销特殊屏蔽11:设定特殊屏蔽01P:查询命令00和01:无意义10:读IRR11:读ISR20H其中对于OCW2命令字具体意义如下:1 L2L0:对应IRi的编码,取值从0001112 R、SI、EOI组合编码001常规EOI命令中断结束011特殊EOI命令101在常规EOI时循环自动循环100在自动EOI时循环(置位)000在自动EOI时循
4、环(复位)111在特殊EOI时循环特殊循环110置优先权命令010无操作2、 系统中的8259A芯片系统中的8259A芯片工作于单片方式,但可由用户扩展接成级联方式,线路如下所示。图中的圈点表示此为排针形式引出脚。8088XD0XD1XD2XD3XD4XD5XD6XD7IOY1XIORXIOWXA0INTRINAQS1D0 IR0D1 IR1D2 IR2D3 IR2D4 IR2D5 IR2D6 IR2D7 8259 IR7INTINTA SP/ENCSRD CAS0WR CAS1A0 CAS2IRQ0IRQ1IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7CAS0CAS1CAS2INTA+5V
5、系统启动时,8259A被初始化,其初始化是通过系统中的初始化程序设置初始化命令字ICW来实现的。系统初始化时,规定0#和4#中断源分别提供给实时时钟和与PC微机联机的串口通信使用,用户可以使用其余中断源。在进入监控后,只有4#中断源处于开启状态,其他中断源都被屏蔽了。中断矢量地址和中断号之间的关系如下表:中断序号01234567功能调用08H09H0AH0BH0CH0DH0EH0FH矢量地址20H-23H24H-27H28H-2BH2CH-2FH30H-33H34H-37H38H-3BH3CH-3FH说明时钟可用可用串口2串口1可用可用可用3、 接口实验单元中的R-S触发器电路7400+5Vk
6、k1+kk1-kk11kKK2-KK2+KK1-KK1+8259AIRQ7 图 R-S触发器 图 实验(1)线路实验内容:一、 8259应用实验(1)按上右图所示实验线路编写程序,使每次响应外部中断IRQ7时,显示字符“7”,中断10次后,程序退出。主程序修改IRQ7中断矢量CX=00AHCX=0?开中断屏蔽IRQ7开中断停机YN显示“7”CX=CX-1关中断返回IRQ7中断服务处理修正IMR,使IRQ7中断允许STACK SEGMENT STACK DW 64 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACKSTART: PUSH DS
7、 MOV AX,0000H MOV DS,AX ;数据段段寄存器清零 MOV AX,OFFSET IRQ7 ;取中断服务程序入口地址(相对地址)ADD AX,2000H ;加装载时IP地址(绝对地址) MOV SI,003CH ;填8259中断7中断矢量MOV SI,AX ;填偏移地址MOV AX,0000HMOV SI,003EH MOV SI,AX ;填段地址CLI ;关中断POP DSIN AL,21H ;读8259中断屏蔽字 AND AL,7FH ;开8259中断7OUT 21H,ALMOV CX,000AH ;设置中断次数A1: CMP CX,0000HJNZ A2IN AL,21H
8、 ;读8259中断屏蔽字 OR AL,80H ;关8259中断7OUT 21H,ALSTIHLTA2: STIJMP A1IRQ7: MOV AH,01H ;中断服务程序入口MOV AL,37H INT 10HMOV AL,20H ;“空格”INT 10HDEC CXMOV AL,20H OUT 20H,AL ;结束中断命令CLIIRETCODE ENDSEND START实验步骤:(1) 按图连接试验线路,检查无误后打开实验箱电源。(2) 输入程序并检查无误,经汇编、连接后通过调试窗口装入系统0000:2000处。(3) G=0000:2000运行程序。(4) 重复按KK2微动开关,观察显示
9、屏上显示结果。二、 8259应用实验(2)KK2-KK2+KK1-KK1+8259AIRQ7IRQ6编写程序实现: 当无中断请求时,执行主程序,延时显示“main”,每显示一个空一格; 若有中断请求,则执行其中断服务程序,显示对应中断号“6”或“7”; 若正在执行较低级的中断服务程序,则允许比它优先级高的中断被相应(IRQ6IRQ7)。实验程序如下:STACK SEGMENT STACK DW 64 DUP(?)STACK ENDSDATA SEGMENTTABLE DB 4DH,41H,49H,4EH,20H,00HDATA ENDSCODE SEGMENT ASSUME CS:CODE,S
10、S:STACKSTART: MOV AX,DATA MOV DS,AX PUSH DS MOV AX,0000H MOV DS,AX MOV AX,OFFSET IRQ6 ;取中断服务程序入口地址 ADD AX,2000H MOV SI,0038H ;填8259中断6中断矢量 MOV SI,AX MOV AX,0000HMOV SI,003AHMOV SI,AX MOV AX,OFFSET IRQ7 ;取中断服务程序入口地址 ADD AX,2000H MOV SI,003CH ;填8259中断7中断矢量 MOV SI,AX MOV AX,0000HMOV SI,003EHMOV SI,AX P
11、OP DSMOV AL,13H ;初始化ICW1OUT 20H,ALMOV AL,08H ; 初始化ICW2OUT 21H,ALMOV AL,09H ; 初始化 ICW4OUT 21H,ALMOV AL,3DH ; 配置OCW1 OUT 21H,ALSTIA1: MOV CX,0007H MOV AL,0DH MOV AH,01H INT 10H ;显示 回车 A2: MOV AH,06H MOV BX,OFFSET TABLE INT 10H ;显示main CALL DALLY LOOP A2 ;循环显示main JMP A1IRQ6: STI ;开中断 CALL DALLY MOV AL
12、,36H MOV AH,01HINT 10H ;显示 6 MOV AL,20HOUT 20H,ALIRETIRQ7: STI ;开中断 CALL DALLY MOV AL,37H MOV AH,01HINT 10H ;显示 7 MOV AL,20HOUT 20H,AL IRETDALLY: PUSH CX ;出栈 CX PUSH AX MOV CX,0040HA3: MOV AX,056CHA4: DEC AX JNE A4 LOOP A3 POP AX POP CX RETCODE ENDS END START实验步骤:(1) 画出以上程序流程图,并在程序后面填写相应注释。Begin把IRQ
13、6的服务程序的地址,填入中断向量表中把IRQ7的服务程序的地址,填入中断向量表中初始化8259相关的寄存器(ICW1,ICW2,ICW3,ICW4)开始程序,显示字符“main“中断请求无中断请求有请求等待执行中断服务程序,显示“6“ 或 ”7“执行完成延时完成(2) 按图连接实验电路,检查无误后打开实验箱电源。(3) 输入程序并检查无误,经汇编、连接后装入系统。(4) G=0000:2000运行实验程序,记录运行结果:1 没有按键时:延时显示MAIN,每显示一个空一格2 单独按下KK1或KK2时:按下KK1显示6,接着延时显示MAIN,每显示一个空一格按下KK2显示7,接着延时显示MAIN,
14、每显示一个空一格3 先按下KK1再按下KK2时:延时显示6,接着延时显示MAIN,4 先按下KK2再按下KK1时:延时显示67,接着延时显示MAIN分析结果:实验小结:实验5主要是中断实验,通过这次实验:1、掌握了8259A的工作原理; 2、掌握了编写中断服务程序的方法; 3、掌握了初始化中断向量的方法。教师评语:实验六 8253定时/计数器应用实验实验目的:1、 熟悉定时/计数器在系统中的典型接法。2、 掌握定时/计数器的工作方式及应用编程相关理论知识:一、 8253可编程定时/计数器介绍8253可编程定时/计数器是Intel公司生产的通用外围芯片之一。它有3个独立的十六位计数器,计数频率范
15、围为0-2MHz,所有计数方式和操作方式都通过编程进行控制。1、8253的功能在实际应用当中,8253可以在不同场合实现以下功能:延时终端、可编程频率发生器、事件计数器、分频器、实时时钟、数字单稳、复杂的电机控制器。2、8253的工作方式方式0计数结束产生中断方式1可重触发的单稳触发器方式2分频器方式3方波频率发生器方式4软件触发的选通信号方式5硬件触发的选通信号3、8253的内部结构及引脚 4、8253的控制字格式 5、8253的初始化编程送控制字到控制端口(43H)送计数初值到计数器端口(40H、41H、42H) 系统总线IOY2XIORXIOWXA0XA1+5V+5V8259-IRQ0O
16、PCLK8251-TXCLK1.8432MHz+5VXD0XD1XD2XD3XD4XD5XD6XD7二、 系统中的8253芯片系统中装有一片8253芯片,线路如上右图所示:实验内容:一、 计数中断实验8253的通道2工作于方式0,用于事件计数,当计数5次时,向8259A发出中断请求信号,显示“M”,实验线路如图所示:KK18253计数/定时器+5VGATE2CLK2OUT28259中断控制器IRQ7STACK SEGMENT STACK DW 64 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACKSTART: IN AL,21H AND
17、AL, 7FH ;OCW1,开IRQ7中断 OUT 21H,AL MOV AL, 90H OUT 43h ,AL ;设置8253控制字A1: MOV AL, 5H OUT 42h ,AL ;设置计数初值 HLT STI ;开外部中断(cpu) JMP A1MOV AX,014DH ;中断服务子程序 INT 10H MOV AX,0120H INT 10H MOV AL, 20H ;OCW2,常规EOI命令 OUT 20H,AL IRETCODE ENDS END START(1) 关闭电源,按图接线,接通电源。(2) 输入程序并检查无误,经汇编、连接后装入系统。(3) 用U2000命令查看“M
18、OV AX,014DH”指令的偏移地址为 2012 。(4) 在0000:003CH单元填入中断矢量,即0000:003C 12 20 00 00 。(5) 运行程序,并按动KK1键,在按动 5 次后,屏幕上显示一个“M”,这是因为 当计数超过5的时候,就会产生中断,然后运行中断程序:显示“M“。二、 定时中断实验利用8253的通道0工作于方式2来产生定时中断(IRQ0),循环显示“0”-“9”十个数,系统默认线路如下。1.19MHz8253计数/定时器+5VGATE0CLK0OUT08259中断控制器IRQ0STACK SEGMENT STACK DW 64 DUP(?)STACK ENDS
19、CODE SEGMENT ASSUME CS:CODE,SS:STACKSTART: PUSH DS MOV AX,0000H MOV DS,AX MOV AX,OFFSET IRQ0 ADD AX,2000H MOV SI, 0020H ;填中断矢量表中的IP MOV SI,AX MOV AX,0000H MOV SI, 0021H ;填中断矢量表中的CS MOV SI,AX POP DS MOV AL, FEh ;OCW1,开IRQ0中断 OUT 21H,AL MOV AL, 1Dh ;设置8253控制字 OUT 43H,AL MOV AL,0FFH ;设置8253计数初值低8位 OUT
20、40H,AL MOV DL,30H ;设置起始字符0A1: STI JMP A1 ;等待中断IRQ0: MOV AH,01H ;中断服务子程序 MOV AL,DL CMP AL,3AH ;字符9,比较 JNZ A2 ;未完毕时转A2继续显示 MOV AL,0DH ;显示完毕后换行 INT 10H MOV AL,30H ;重新设置起始字符A2: INT 10H INC AX MOV DL,AL MOV AX,0120H INT 10H CALL DALLY MOV AL,20H ;OCW2,常规EOI命令 OUT 20H,AL IRETDALLY: MOV CX,0100H ;延时 A3: MO
21、V BX,0560HA4: DEC BX JNZ A4 LOOP A3 RETCODE ENDS END START(1) 输入程序并检查无误,经汇编、连接后装入系统。(2) 运行程序,显示屏上出现现象为 0 1 2 3 4 5 6 7 8 9 。(3) 修改8253的时常数为 0FH ,再运行程序,显示速度明显变 快 。三、 电子发声实验系统的OPCLK(1.1625MHz)作为音乐节拍,从表格TABLE中查出每个音符对应的时常数送给计数器2(工作在方式3:方波频率发生器),以确定音调,驱动扬声器产生音乐,实验线路图如下:OPCLK1.1625MHz8253计数/定时器+5VGATE2CLK
22、2OUT2SPK UNITSPK注意:SPK接线要在装入程序并运行后进行。STACK SEGMENT STACK DW 64 DUP(?)STACK ENDSDATA SEGMENTTABLE DB 33H,33H,3DH,33H,26H,26H,26H,26H,2DH,2DH,26H,2DH,33H DB 33H,33H,33H,33H,33H,4DH,45H,3DH,3DH,3DH,45H,4DH,45H DB 45H,45H,45H,45H,45H,45H,45H,33H,33H,3DH,33H,26H,26H DB 26H,28H,2DH,2DH,26H,26H,33H,33H,33H
23、,33H,45H,3DH,39H DB 39H,39H,52H,4DH,4DH,4DH,4DH,4DH,4DH,4DH,4DH,2DH,2DH DB 26H,26H,26H,26H,26H,26H,28H,28H,2DH,28H,26H,26H,26H DB 26H,2DH,28H,26H,2DH,2DH,33H,3DH,4DH,45H,45H,45H,45H DB 45H,45H,45H,45H,33H,33H,3DH,33H,26H,26H,26H,28H,2DH DB 2DH,26H,2DH,33H,33H,33H,33H,33H,33H,45H,3DH,39H,39H DB 39H,5
24、2H,4DH,4DH,4DH,4DH,4DH,4DH,4DH,4DH,00HDATA ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV BX,OFFSET TABLEMOV AL,BXMOV AH,00HA1: MOV DL,25H ;时常数*25H作为计数值保存于AX中MUL DL ;发音频率= 1.1625MHz/37=314Hz PUSH AXMOV AL, B7 ;计数器2,方式3,写16位BCD初值OUT 43H,ALPOP AXOUT 42H,AL ;设置低八位计数初值MOV
25、 AL,AHOUT 42H,AL ;设置高八位计数初值INC BXMOV AH,00HMOV AL,BX ;取下一个时常数TEST AL,0FFH ;测试是否为最后一个00HJZ A3MOV CX,77FFH ;延时播放当前音符A2: PUSH AXPOP AXLOOP A2JMP A1 ;转A1播放下一个音符A3: MOV BX,OFFSET TABLE ;取第一个时常数,重新播放MOV AL,BXMOV AH,00HJMP A1CODE ENDSEND START(1) 关闭电源,按图接线,检查无误后打开电源。(2) 输入程序并检查无误,经汇编、连接后装入系统。(3) 运行程序,注意听扬声器发出的音乐声。思考题:1、 在将计数初值赋给8253后,马上就可以启动并进行定时或计数吗?答:不会马上就可以启动并进行定时2、 假设8253的通道1输入时钟频率为2MHz,现在需要使用其作为分频器,输出62.5KHz频率的时钟,则应设置计数初值(分频系数)为多少?应采用哪种工作方式?请写出初始化程序。MOV AL,57HOUT 27H,ALMOV AL,32HOUT 25H,AL实验小结:通过本次实验,熟悉了8253定时器/计数
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1