收藏 分销(赏)

实验五 基本IO扩展与8259中断实验.doc

上传人:s4****5z 文档编号:8925547 上传时间:2025-03-08 格式:DOC 页数:11 大小:328.09KB
下载 相关 举报
实验五 基本IO扩展与8259中断实验.doc_第1页
第1页 / 共11页
实验五 基本IO扩展与8259中断实验.doc_第2页
第2页 / 共11页
点击查看更多>>
资源描述
实验五 基本 IO 口扩展与8259中断实验 一、实验目的 1. 了解 TTL 芯片扩展简单 I/O 口的方法; 2. 掌握数据输入输出程序编制的方法。 3. 掌握 8259A 中断控制器的工作原理; 4. 掌握 8259A 可编程中断控制器的应用编程。 二、实验设备 1. PC 机一台 2. QTH-8086B 16 位微机教学实验仪一套 三、实验说明 1. 74LS244 是一种三态输出的8总线缓冲驱动器,无锁存功能,当 G 为低电平时,Ai 信号传送到Yi,当为高电平时,Yi 处于禁止高阻状态。 2. 8259A中断控制器 中断控制是微机系统的主要管理方式之一,也是处理器与外设之间通信的最有效方法之一。它可 74LS273 是一种 8D 触发器,当 CLR 为高电平且 CLK 端电平正跳变时,D0——D7 端数据被锁存到8D 触发器中。 以减少系统为反复查询外部设备状态而消耗的时间,提高了系统的整体运行效率。在现代 16 位微机 系统中,系统的中断有两类:软件中断和硬件中断。硬件中断可以实现微机系统对外设的管理,由 8259 中断控制器来完成。 (1)8259 控制器的介绍 中断控制器 8259A 是 Intel 公司专为控制优先级中断而设计开发的芯片。它将中断源优先级排队、 辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对 8259A 进行编程, 就可以管理 8 级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时, 在不需增加其它电路的情况下,通过多片 8259A 的级连,能构成多达 64 级的矢量中断系统。它的管 理功能包括:①记录各级中断源请求,②判别优先级,确定是否响应和响应哪一级中断,③响应中断 时,向 CPU 传送中断类型号。8259A 的内部结构和引脚如图 3-2-1 所示。 8259A 的命令共有 7 个,一类是初始化命令字,另一类是操作命令。8259A 的编程就是根据应用 需要将初始化命令字 ICW1~ICW4 和操作命令字 OCW1~OCW3 分别写入初始化命令寄存器组和操作命令寄 存器组。ICW1-ICW4 各命令字格式如图 3-2-2 所示,OCW1-OCW3 各命令字格式如图 3-2-3 所示,其中 OCW1 用于设置中断屏蔽操作字,OCW2 用语设置优先级循环方式和中断结束方式的操作命令字,OCW3 用语设置和撤消特殊屏蔽方式,设置中断查询方式以及设置对 8259 内部寄存器的读出命令。 10 QTH-*086B 实验系统说明书 图 2 8259 内部结构和引脚图 A0 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 * 1 LTIM ADI S*GL I*4 8086/88 不用 8*86/88 不用 特征位 0:边沿触发 无效 0:单片使用 0:不需要 ICW4 1:电平触发 1:多片级联 图 3 (a) ICW1 格式 A0 D7 *6 D5 D4 D3 D* *1 D0 1 中断类型高 5 位 8086/88 不用 图 3 (b) ICW2 格式 A0 D7 D6 *5 ** D3 *2 D1 D0 1 S* *6 S5 *4 S* S* *1 S0 主片 A0 D7 D* D5 D4 D* D2 D1 D0 1 不可用 *D2 ID1 ID0 从片 图 3 (c) *CW3 格式 A0 D* D6 D5 D4 D3 D2 D1 D0 1 0 0 0 SFN* B*F */S AEOI UPM 图 3 (d) ICW4 格式 11 QTH-808*B 实验系统说明书 图4 8259 命令字格式 (2) 8259 寄存器及命令的控制访问 在硬件系统中,8259 仅占用两个外设接口地址,在片选有效的情况下,利用 A0 来寻址不同的寄 存器和命令字。对寄存器和命令字的访问控制如表 3-1 所示。 表 3-1 8259 寄存器及命令的访问控制 A0 D4 D3 读信号 写信号 片 选 操 作 0 * 1 0 读出 *SR,IR* 的内容 1 0 1 0 读出 IMR 的内容 * 0 0 1 0 0 写入 OCW* 0 0 1 1 0 0 写入 *CW3 0 1 X 1 0 0 写入 ICW1 1 X X 1 0 0 写入 OCW1,ICW2,ICW3,I**4 (3) PC 微机系统中 8259A 的应用 在现代 PC 微机系统中,系统中包含了两片 82*9A 中断控制器,经级连可以管理 16 级硬件中断, 其中部分中断源已经被系统硬件占用,具体使用情况如表 3-2 示。两片 8259A 的端口地址为:主片 在 020H-03FH,实际使用 020H 和 021H 两个端口;从片在 0A0H-0BFH 范围,实际使用 0A0H 和 0A1H 两 个端口。 *2 QTH-8086B 实验系统说明书 表 3-2 PC 微机系统中的硬件中断 中 断 源 功 能 中断向量号 中 断 源 功 能 中断向量号 主 8259A IRQ0 定时中断 08* 主 8259A IR*8 实时钟 *0H 主 8259A IRQ1 键盘中断 09H 主 825*A IRQ9 保留 7*H 主 *259A IRQ2 接从 8259A 0AH 主 8259A *RQ1* 保留 72H 主 8259A I*Q3 *OM2 0BH 主 825*A IRQ11 保留 73H 主 *259A IR*4 *OM* *CH 主 8*5*A **Q12 保留 74H 主 *259* I**5 硬盘/并口 2 中断 0*H 主 82*9* IRQ1* 写处理中断 75H 主 8*59A IRQ6 软盘 0E* 主 8**9A IRQ1* 硬盘控制器 76H 主 82*9A IRQ7 打印机 **H 主 *259A IRQ15 保留 *7H 四、实验原理图 图 1 7LS244 与 74LS273 扩展 I/O 口原理图 五、实验内容 1. 利用 74LS244 作为输入口,读取开关状态,并将此状态通过 74LS27* 驱动发光二极管显示出来。 2. 用脉冲作为中断源,编写一实验程序,完成按键中断的响应,每产生一次按键中断,中断次数加1。通过并行接口芯片8255,将中断号和中断次数分别从8255的A口和B口送两排8个LED灯分别显示出来,拨动开关 KN09 观察数码管的变化;改变中断输入,观察显示变化。 六、实验步骤 1. 基本I/O扩展 (1) 实验连线: 244 的 CS——MCU 主模块的地址 A15,Y7~Y0——开关 K01—K08。 273 的 CS——MCU 主模块的地址 A14,Q7~Q0——发光二极管 L1—L8。 该模块的 WR、RD 分别连到 MCU 主模块的 WR、RD。 该模块的数据(AD0~AD7)连到 MCU 主模块的数据(AD0~AD7)。 (2) 运行程序:IO.ASM (3) 拨动开关,观察发光二极管的变化 2. 8259中断实验 (1)实验连线: n 8259 模块选通线 CS 连到 MCU 主模块的地址 A14。 n 8259 模块的 WR、RD 分别连到 MCU 主模块的 WR、RD。 n 8259 模块的数据(AD0~AD7)、地址线(A0~A7)分别连到 MCU 主模块的数据(AD0~AD7)、地址线(A0~A7)。 n 8259 模块的 INTA 接 MCU 主模块的的 INTA,INT 接 MCU 主模块的 INTR,IRx(指 IR0~IR7 中的任一个)接信号源模块的 1H。 n 8255 模块的 WR、RD 分别连到 MCU 主模块的 WR、RD。 n 8255 模块的数据(AD0~AD7)、地址线(A0~A7)分别连到 MCU 主模块的数据(AD0~AD7)、地址线(A0~A7)。 n 8255 模块选通线CE 连到 MCU 主模块的地址 A15。 n 8255 模块的 A口PA0-PA7接发光二极管 L9—L16;B口PB0~PB7接发光二极管L1—L8。 (2) 运行程序:INTR.ASM。 七、实验报告要求: 1. 给程序未加注释的语句加上注释; 2. 分别写明两个实验中连线操作各步骤的目的和作用; 3. 改变与各芯片CS连接的地址线,端口地址做何修改? 4. 归纳总结LS244和LS273的作用及其编程方法; 4. 归纳总结中断编程步骤; 5. 总结比较I/O接口查询方式与中断方式的各自的特点。 七、源程序清单及其每句的注释 1、基本I/O扩展:IO.ASM LS244 EQU 7000H ;定义LS244端口地址 LS273 EQU 0B000H ;定义LS273端口地址 DATA SEGMENT ;数据段 A DB 20 DUP(0) DATA ENDS STACK SEGMENT STACK ;堆栈段 DB 100 DUP(0) STACK ENDS CODE SEGMENT ;代码段 ASSUME CS:CODE, SS:STACK,DS:DATA ORG 0100H ;段程序的起始地址 MAIN: MOV AX, DATA MOV DS, AX ;设置数据段 MOV AX, STACK MOV SS,AX ;设置堆栈段 MOV SP,9000H MOV DX,LS244 ;LS244地址给DX,读取开关状态 IN AL,DX ;输入开关状态到AL MOV DX,LS273 ;LS273地址给DX,读取二极管状态 OUT DX,AL ;AL内容送LED显示 JMP MAIN ;无条件跳转,循环MAIN CODE ENDS END MAIN 2. INTR.ASM ;数据线、地址线 ;8255读写信号接WR、RD,选通信号CE接A15,PA0-PA7接发光二极管 L16—L9; ;PB0~PB7接发光二极管L8—L1。 ;8259读写信号接WR、RD,选通信号CS接A14,INTA接INTA,INT接INTR,IR0接脉 ;冲电路的上升沿用 A82590 EQU 0B000H ;设8259A,A0端口地址是0B000H A82591 EQU 0B001H ;设8259A,A1端口地址是0B001H A8255 EQU 7000H ;设8255A0端口地址是7000H B8255 EQU 7001H ;设8255B0端口地址是7001H C8255 EQU 7002H ;设8255C0端口地址是7002H D8255 EQU 7003H ;设8255D0端口地址是7003H DATA SEGMENT ;数据段 NUM DB ? ;中断类型 为字节型 TIMES DB 0 ;设置中断次数初始值是0 DATA ENDS STACK SEGMENT STACK ;定义堆栈段 DB 40 DUP(0) ;堆栈段开40字节空间,初始化为0 STK_TP DB 0 ;栈顶指针地址赋值为0 STACK ENDS CODE SEGMENT ;定义代码段 ASSUME CS:CODE, DS:DATA, SS:STACK,ES:DATA ORG 0100H ;设置段程序的起始地址 MAIN: MOV AX, DATA ; MOV DS, AX ;设置数据段地址在DS中 MOV AX, STACK MOV SS,AX ;设置堆栈段地址在AX中 LEA SP, STK_TP ;设置栈顶指针地址 MOV DX, D8255 ;8255D控制端地址给DX MOV AL, 80H ;给AL送80H OUT DX, AL ;设置8255A、B、C口,为基础输出 MOV AL, 0FFH; ;0FFH给AL MOV DX, A8255 ;8255A口端口地址存入DX OUT DX,AL ;AL中内容输出至8255A口 MOV AL,0FFH ;0FFH给AL MOV DX, B8255 ;8255B口端口地址存入DX OUT DX,AL ;AL中内容输出至8255B口 MOV DX,A82590 ;A0=0,8259A地址送入DX MOV AL,00010011B; ICW1为13H,上升沿触发,单片使用,要写ICW4 OUT DX,AL ;初始化ICW1 MOV DX,A82591 ;A0=1,8259A地址送入DX MOV AL,01001000B ;ICW2为48H,提供中断类型号初始值 OUT DX,AL ;初始化ICW2 MOV AL,00000011B;ICW4,非缓冲方式,自动EOI,一般完全嵌套 OUT DX,AL ;初始化ICW4 MOV DX,A82590 ;A0=0,8259A端口地址送入DX MOV AL,00001010B ;OCW3下一个读指令读出中断号 OUT DX, AL ;读入OCW3 NOP ;静止一个指令周期 NEXT: ;读中断类型的子程序 IN AL, DX ;读中断号IRX到AL CMP AL, 00H ;比较AL和00H JZ NEXT ;AL等于0,转移到NEXT ;INC TIMES ;TIMES自增1 MOV CL, 0FFH ;0FFH送入CL NEXT1: ;建立中断类型表格的子程序 INC CL ;CL自增1 SHR AL,1 ;AL右移一位 JNC NEXT1 ;没有进位,则跳转到NEXT1 MOV NUM,CL ;CL中内容送给NUM MOV AL,CL ;CL内容送给AL MOV AH,00H ;高八位清零 ADD AL,48H ;ICW2是48H,中断类型号送给AL MOV CX,0004H MUL CX ;AX乘以CX中内容,送给AX MOV BX,AX ;IRQ0--48H*4+0=0120中断 MOV AX,OFFSET IIRQ ;中断入口地址偏移量 MOV [BX],AX INC BX INC BX MOV AX,SEG IIRQ ;代码段地址给AX MOV [BX],AX MOV DX,A82590 ;A0=0,8259A端口地址送给DX MAIN1: STI ;开中断 JMP MAIN1 ;无条件跳转到MAIN1 HLT IIRQ PROC PUSH DX ;DX推入堆栈 INC TIMES ;TIMES自增1 MOV AL,TIMES ;中断次数 NOT AL ;AL内容取反 MOV DX, B8255 ;读取8255B端口地址 OUT DX, AL ;输出 MOV AL,NUM ;中断号 NOT AL ;AL取反 MOV DX, A8255 ;读取8255A端口地址 OUT DX, AL ;8255A端口地址内容给AL INC CX ;CX自增1 MOV DX, A82590 ; MOV AL, 20H ;OCW2,非特殊EOI命令,有效中断请求级别为0 OUT DX, AL CLI ;关中断 POP DX IRET IIRQ ENDP CODE ENDS END MAIN 八. 实验结果 1. 基本I/O扩展: 连接好电路并做好程序调试工作后,拨动开关,开关K01~K08分别对应发光二极管L1~L8,当开关处于低电平状态时二极管亮,不同开关独立控制不同二极管。 (1) 改变开关控制状态,即由原来的低电平灯亮变成高电平灯亮,为实现这一想法,只要用NOT语句将AL内容取反,改变后程序如下: MAIN: MOV AX, DATA MOV DS, AX MOV AX, STACK MOV SS,AX MOV SP,9000H MOV DX,LS244 IN AL,DX NOT AL ;用NOT将AL取反 MOV DX,LS273 OUT DX,AL JMP MAIN (2)如下改变LS244和LS273端口地址: LS244 EQU 7000H LS273 EQU 0B000H LS244 EQU 4000H LS273 EQU 8000H 改变之后重新运行程序,发现没有影响,原因是: LS244:原来端口地址7000H,高八位为01110000B,4000H的高八位为01000000B,控制244的片选端A14=1没有变 LS273:原来端口地址0B000H,高八位为10110000B, 8000H的高八位为10000000B, 控制273的片选端A14=0没有变 因此改变端口地址也可以正常工作。 2.8259中断实验: 连接好电路并做好程序调试工作后,拨动开关,发光二极管L8~L1的亮暗显示中断次数的二进制数,发光二极管L16~L9显示中断类型的二进制数。 如接IR3,中断次数为6次,则灯亮灭情况如下(○表示灯暗,●表示灯亮) ○○○○○●●○ (中断次数6次110B) ○○○○○○●● (中断类型) 如接IR5,中断次数为19次,则灯亮灭情况如下(○表示灯暗,●表示灯亮) ○○○●○○●● (中断次数19次10011B) ○○○○○●○● (中断类型) 九. 思考题 1. 给程序未加注释的语句加上注释; 答:已注释。 2 归纳总结LS244和LS273的作用及其编程方法; 答:74LS244主要用于三态输出,作为地址驱动器、时钟驱动器、总线驱动器和定向发送器等; 74LS273是一种带清除功能的8D触发器, 1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发, 低电平清除,常用作数据锁存器,地址锁存器: D0~D7:输入入;Q0~Q7:输出 第一脚WR:主清除端,低电平触发,即当为低电平时,芯片被清除,输出全为0(低电平); CP(CLK):触发端,上升沿触发,即当CP从低到高电平时,D0~D7的数据通过芯片,为0时将数据锁存, D0~D7的数据不变。 3.归纳总结中断编程步骤; 答:(1)实验连线(2) 运行程序:INTR.ASM。 4. 总结比较I/O接口查询方式与中断方式的各自的特点 答:I/O接口查询方式:接口电路简单,CPU利用率低; 中断方式:CPU利用率高,中断服务需要保护断点和恢复断点。 十. 实验总结 通过两个实验,自己根据线路图或线路提示步骤一步一步地连接好线,然后通过计算机软件及事先编写好的程序代码执行程序,使用微机器件实现了基本I/O扩展和8259中断,最终实现了实验结果。 在实验过程中,通过连接线路和实现电路,对电路的器件及其作用有了更多的了解,对微机的认识也更深了。 指导教师批阅意见: 成绩评定: 预习情况(20) 实验过程(35) 实验报告(45) 总分 指导教师签字: 年 月 日
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服