微机原理及接口实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1
实验三(1) 8259中断实验
一、实验目的和要求
1)
了解PC 的中断结构及8259中断控制器的初始化。

2)
熟悉8259中断控制器的工作原理和硬件连线方法。

3)
了解8259的应用并利用8255驱动8路发光二极管来验证中断的实现。

4)
练习8259中断的编程方法,熟悉四个初始化命令字和三个操作命令字的设置。

5) 了解8259中断屏蔽,以及优先级判别等特性,了解8259的级联工作方式。

二、实验内容
1.单片8259中断实验
2.编写中断实验程序,其中主程序使8255的PB 口为输出口,输出0FFH ,L0-L7指示灯全亮。

2.编写中断服务程序从PB 口输出0FH ,L0-L3亮,L4-L7灭,并延时一段时间后返回主程序。

三、实验仪器、设备(软、硬件)及仪器使用说明
1.硬件环境:PC 机一台 + 微机原理及接口实验箱一台
2.软件环境:
1)微机在Windows98环境、Windows2000环境、Windows XP 环境下均可以进行
2)在WindowsXP 环境下运行SAC-86S 集成软件,编辑、运行汇编语言程序,并结合实验硬件来编辑、运行汇编语言程序。

3.说明:在实验平台上有两片8259,单片8259中断实验只使用第一片8259(左边一片),级联中断实验方式中使用第一片8259作为主片,第二片8259(实验板上右边的一片)作为从片。

8259实验模块电路如图4-19和图4-20。

微机原理及接口实验
2
四、实验原理
1.8259A 的内部结构的三大部分(如图4-21):
1)总线及级联缓冲:数据总线缓冲器、读写控制逻辑、级联缓冲/比较器。

2) 中断处理:中断请求寄存器IRR 、优先级比较分析器PR 、中断服务寄存器ISR 和中断屏蔽寄存器IMR 。

IRR(Interrupt Request Register)功能是接收和处理从引脚IR 0~IR 7进入的中断请求信号。

并用来存放来自外设(中断源)的中断请求信号。

PR (Priority Resolver )中断优先级分析判别器。

是用来对多个中断请求(IRR 中的"i"位)进行优先级排队,选出最高优先级;判别新的最高优先级是否高于正在处理的中断级别;负责向CPU 发送INT 中断请求信号。

ISR (Interrupt Service Register )中断服务寄存器。

是用来记录当前正在处理中的中断级别,每当CPU 为某个中断源服务时,ISR 中的相应位被置"1",而不在服务的中断源相应ISR 位为"0"。

ISR 中每一位对应一个中断级别。

IMR (Interrupt Maskable Register )中断屏蔽寄存器。

用来存放CPU 送来的屏蔽信号,当它的某一位或某几位为"1"时,则对应的中断请求就被屏蔽,即对该中断源的请求置之不理。

3)中断控制部分:四个初始化命令寄存器和三个操作命令寄存器。

四个初始化命令寄存器是用以存放四个初始化命令字ICW 1、ICW 2、ICW 3、ICW 4。

初始化命令字是在对8259A 初始化时设定的,一般在工作过程中就不再改变。

三个操作命令字寄存器是用以存放三个操作命令字OCW 1、OCW 2、OCW 3。

操作命令字是用以实现对中断处理过程的控制,在系统运行过程中,是可以多次被改写其命令字,可以通过设置使中断控制器是以脉冲的上升沿触发或下降沿触发或高电平触及发而实现中断的。

2.8259功能:
1)单片8259可管理8级优先级中断,最多通过9片8259级联可以管理64级优先级中断; 2)8259可对任一级中断源进行屏蔽或取消屏蔽;
3)具有多种中断优先级管理方式;
4)能够向CPU 发出中断请求信号INT 及中断类型码;
第三章 86X 汇编语言编程实验
3
5)接收CPU 发来的中断响应信号
实验中断服务子程序是用8255的B 口输出高电平驱动8个LED 灯显示;当响应中断时8位LED 灯高4 个灯灭;返回主程序时8个LED 灯又全亮。

3. 编程提示:
8259的编程首先要送入初始化命令字,然后送操作命令字使8259去完成一个具体的操作。

初始化命令字通常有四个(ICW1、ICW2、ICW3、ICW4),操作命令字有三个(OCW1、OCW2、OCW3)。

1)8259实验初始化地址说明:
片选地址 A0 奇 偶 初始化地址
X20 0 偶地址 X20
1 奇地址 X21
2)初始化命令字设置
(1)ICW1设置: 对实验来说,I/O 地址为20H (偶地址),设置ICW1必须A0=“0”,
D7位 D6位 D5 D4 D3 D2 D1 D0
X X X 1 LTIM 0 SNGL ICW4
D4=1是ICW1的特征标志;D1=1为单片工作;D3=0表示中断是由低电平向高电平跳变的上升沿起作用;D0=1表示后将设置ICW4,于是单片8259工作的控制字为00010011=13H ;
(2)ICW2设置(中断类型号基值):
对实验来说,I/O 地址为21H (奇地址),且设置ICW2时必须A0=“1”
D7位 D6位 D5 D4 D3 D2 D1 D0
T7 T6 T5 T4 T3 0 0 0
D0、D1、D2=0,IRQ0的基值为0但中断类型号为8。

D7、D6、D5、D4、D3=00001;于是8259的控制字ICW2为00001000=08H ,
(3)ICW3设置:只有级联时才设置ICW3(ICW1中的D1=0时表示有级联)。

(4)ICW4设置:(只有在ICW1的D0位为“1”才设置ICW4)
D7位 D6位 D5 D4 D3 D2 D1 D0
0 0 0 SFNM BUF M/S AEOI UPM
D7、D6、D5=0;D4是嵌套方法设置,0为正常,1为特殊;D3=1和D2=0是缓冲方式/从片,D3=1和D2=1是缓冲方式/主片;D1=1为中断自动结束,D1=0为中断正常结束;D0=1为8088/8086方式。

我们设置为ICW4=00001001B=09H (功能 = 缓冲、从片、与8088配合使用、非自动结束)。

3)操作命令字设置
操作命令字决定着8259的中断方式(全嵌套、循环优先、特殊屏蔽、查询方式等)、管理中断的响应次序等。

(1)OCW1设置:用于设置屏蔽状态。

其各位与IMR 中断屏蔽位相对应。

被屏蔽的中断请求不能被8259响应。

设置计算时那一位为“1”,对应的那一个中断被屏蔽。

(2)OCW2设置:用于设置工作方式和中断结束方式。

D7 D6 D5 D4 D3 D2 D1 D0
R SL EOI 0 0 L2 L1 L0
0=固定 SL=0 后3L 无意义 0=自动结束 0 0 0 (0级) 1=循环 SL=1后3L 指明级别 1=结束中断 1 1 1 (7级)
D3、D4=00;D7、D6、D5高3位组合起来指明一种工作方式和中断结束控制方式。

SL 位为“1”时,后面L1L1L0组合将指明一个中断级。

微机原理及接口实验
4
EOI 位为“0”时表明中断自动结束;EOI 位为“1”时表明不执行结束中断操作。

OCW2各种格式及应用。

R 、SL 、EOI 组合 L2L1L0 有无意义
意义和应用
000 无 完全嵌套方式,用于方式设置
001 无 结束命令,用于完全嵌套方式的中断结束
010 无 无意义,不用
011 有 结束命令字,完全嵌套方式,清除ISR 中的指定位
100 无 自动循环排序方式,用于设置循环排序方式
101 无 结束命令字,用于结束自动循环排序方式的中断
110 有 指定最低级的循环方式,用于方式设置
111 有 结束命令字,结束中断,指定新的最低级
(3)OCW3设置:用来设置用于管理特殊的屏蔽方式和查询方式。

D7 D6 D5 D4 D3 D2 D1 D0
0 ESMM SMM 0 1 P RR RIS
1=特殊 1=方式标志 01=特征标志 1=查询方式 10或11=读寄存器
D4、D3=“01”是OCW4的特征标志。

4.电路说明:
1)实验用单脉冲由箱上的正脉冲源加到IR0上
2)实验电路中用8259实现中断,而采用8255-PB 口方式0工作,输出一种状态,当响
应中断后,8255—PB 口输出另一种状态,从而验证中断的响应。

五、实验方法与步骤
1.实验准备
1) 检查实验平台电源供电是否正常。

2) 用通讯电缆将实验平台与实验微机连接好,上位机与实验平台通讯正常。

3) 准备实验导线若干。

2.单片中断实验连线
1) 关闭实验箱电源,在系统模块上将DIOCS 与A3短接(把跳线跳到A3端),原实验箱
第三章 86X 汇编语言编程实验
5
上短路线已接好可以省掉此步。

2) 接着按照图4-22接上数据线、控制线、地址线:
(1)将8259芯片的D0-D7接8088系统模块的数据线D0-D7。

(2) 将8259芯片的CS1、CS2接8088系统模块提供的片选信号引脚X20、X28。

(3) 将8259芯片的IOW 、IOR 接8088系统模块的I/O 读写信号引脚IOW 、IOR 。

(4)将8259芯片的INTR,INTA 接8088系统模块的INTR,INTA 。

(5)将8259芯片的A0接8088系统模块的地址线A0。

(6)将8259芯片的IR0接单脉冲源的+PULSE 。

(7)将8255芯片的D0-D7接8088系统模块的数据线D0-D7上。

(8)将8255芯片的CS 接8088系统模块提供的片选信号引脚X18。

(9)将8255芯片的IOW 、IOR 、RESET 接8088系统模块的引脚IOW 、IOR 、RESET 。

(10)将8255芯片的A0、A1接8088系统模块的地址线A0、A1。

(11)将8255芯片的PB0-PB7接电平输入输出模块的L0-L7。

3.实验过程及步骤
1)实验箱上电,在实验微机“桌面”双击“”图标进入“SAC-86S ”软件实验界面
2)在实验界面的编辑窗口编辑实验用源程序XXX .asm 文件,输入自己编写的实验用
源程序并起名保存
3)汇编源程序,排除语法错误后,生成XXX .obj 文件。

具体作法是在集成窗口中“编
译”菜单中的“编译”项
4)连接目标文件XXX .obj ,生成XXX.exe 文件。

作法是在集成窗口中“编译”菜单
中的“编译连接”项
5)下载XXX.exe 文件到实验箱上的存储器中。

作法是在集成窗口中“编译”菜单中的“编译下载”项(或点击“”图标),在集成窗口的状态栏中可以看到下载的进度表,下载成功后则变红
6)单步执行程序,观察运行结果。

作法是在集成窗口中“调试”菜单中的“单步执行”命令,每一步都可以观察各寄存器的值的变化,从而可以确定程序的运行情况,直
到结果实现。

若程序逻辑有错误,再回到第2)步再做—遍。

7)自动执行程序,实时观察运行结果。

作法是在集成窗口中“调试”菜单中的“全速
运行”命令,直到结果实现。

*4.实验提供的参考程序检查硬件连接的正确性
(1)选择菜单中的“文件”\“打开“\C:\SAC-86S\ASM\8259D.asm
(2)选择菜单中的“设置”\“端口设置”,确定串行口COM1和波特率9600,点击“开
始进行测试”, 开始测试串行口是否正常(这步可以省略)
(3)选择 “编译”菜单中的“编译下载”(或点击“”图标),在任务栏上可看到传送进度条,传送成功则“” 变红
(4)选择中的“调试”菜单中的“全速运行”(或点击“”图标)
(5)L0-L7指示灯全亮,
(6)按单脉冲按钮申请中断一次,L0-L3保持亮而L4-L7灭,延时一段时间后又恢
复亮。

说明8088响应了一次中断。

(7)选择中的“调试”菜单中的“单步执行”命令一步一步查看程序程序运行是否
正确,若程序逻辑有错误,再回到第(3)步再做—遍。

微机原理及接口实验
6
(8)第(7)步成功后选择中的“调试”菜单中的“全速运行”(或点击“”图
标)全速运行:L0-L7指示灯全亮,按单脉冲按钮申请中断一次,L0-L3保持亮
而L4-L7灭,延时一段时间后又恢复亮。

说明8088响应了一次中断。

六、实验报告:
1)叙述中断程序的设计思想,打印自编的中断源程序并在程序旁边画上流程图;
2)叙述程序运行实验箱上指示的结果(或自己修改显示语句后的结果)。

3)描述调试中遇到的问题及解决办法。

七、实验注意事项
1.编程时设置初始化命令的次序不能搞乱,应是ICW1、ICW2、ICW3、ICW4的顺序。

2.连接硬件时要关断实验箱电源。

八、参考资料
1.实验参考程序
8259D.ASM(8259(单片)中断实验)
INT0 EQU 220H
INT1 EQU 221H
INT10 EQU 228H
INT11 EQU 229H
STACK SEGMENT
DB 50 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK
START:
CLI
MOV AX,0000H ;SET IRQ0
MOV DS,AX
MOV AX,OFFSET IRQ0
ADD AX,0000H
MOV SI,20H
MOV [SI],AX
MOV AX,8100H
MOV SI,22H
MOV [SI],AX
MOV AL,13H ;ICW1
MOV DX,INT0
OUT DX,AL
MOV AL,8 ;ICW2
第三章 86X 汇编语言编程实验
7
MOV DX,INT1
OUT DX,AL
MOV CX,0FFFH
LOOP $
MOV AL,9 ;ICW4
MOV DX,INT1
OUT DX,AL
MOV CX,0FFFH
LOOP $
MOV DX,INT1
MOV AL,0FEH ;OCW1
OUT DX,AL
MOV CX,0FFFH
LOOP $
MOV DX,INT0
MOV AL,20H ;
OUT DX,AL
MOV CX,0FFFH
LOOP $
MOV AL,13H ;ICW1
MOV DX,INT10
OUT DX,AL
MOV AL,8 ;ICW2
MOV DX,INT11
OUT DX,AL
MOV CX,0FFFH
LOOP $
MOV AL,9 ;ICW4
MOV DX,INT11
OUT DX,AL
MOV CX,0FFFH
LOOP $
MOV DX,INT11
MOV AL,0FFH ;OCW1
OUT DX,AL
MOV CX,0FFFH
LOOP $
MOV DX,INT10
MOV AL,20H ;
OUT DX,AL
微机原理及接口实验
8
MOV CX,0FFFH
LOOP $
STI
MOV DX,21BH ;8255初始化为方式0,A 口输入,B 口输出 MOV AL,90H ;8255控制字
OUT DX,AL
DSP: MOV AL,0FFH
MOV DX,219H ;B 口输出全“1”,灯全亮
OUT DX,AL
JMP DSP
IRQ0: STI ;中断服务子程序
MOV CX,0FFFFH
LOOP $
MOV AL,0FH
MOV DX,219H ;B 口输出“0F ”,灯高4位灭,低4位亮 OUT DX,AL
MOV DX,INT0
MOV AL,20H ;撤销正在服务的中断级别别标志
OUT DX,AL ;00100000使ISR 寄存器对应位复位
MOV CX,0FFFFH ;延时
LOOP $
MOV CX,0FFFFH ;延时
LOOP $
IRET
CODE ENDS
END START
2.实验结果描述
线路正确连接后,输入源程序,汇编、连接、下载成功后,连续执行,8个LED 灯全亮。

按一下中断申请按钮,8个LED 灯的高4位灭一下(0FH ),又亮起来(FFH ),说明响应了一次中断。

也可以设置显示其它值,如显示“55H ”、“77H ”等。

九、讨论与思考
1.中断不响应时,应该主要检查什么?
2.程序中为什么要反复用到延时程序?
3.当有八个中断源时,需要多少个中断服务子程序?
第三章 86X 汇编语言编程实验
9
实验三(2) 8259中断优先级实验
一、实验目的和要求
1)熟悉8259中断控制器的工作原理和硬件连接
2)了解8259中断屏蔽,以及优先级判别等特性。

二、实验内容
1.单片8259中断芯片的中断优先级的响应实现
2.编写中断实验程序,主程序使8255的PB 口为输出口,输出0FFH ,L0-L7指示灯全亮,IR0和IR1申请中断。

当响应IR0中断时,中断服务程序从PB 口输出0FH ,L0-L3亮,L4-L7灭,并延时一段时间后返回主程序。

响应IR1中断服务程序从PB 口输出0F0H ,L0-L3灭,L4-L7亮,并延时一段时间后返回主程序。

三、实验仪器、设备(软、硬件)及仪器使用说明
1.硬件环境:PC 机一台 + 微机原理及接口实验箱一台
2.软件环境:
1)微机在Windows98环境、Windows2000环境、Windows XP 环境下均可以进行
2)在WindowsXP 环境下运行SAC-86S 集成软件,编辑、运行汇编语言程序,并结合实验硬件来编辑、运行汇编语言程序。

四、实验原理
1.编程提示 8259实验初始化地址说明:
片选地址 A0
奇偶 初始化地址
X20 0
偶地址 X20 1
奇地址 X21
2.略(请参照实验三(1)的实验原理) 3.电路说明:
1)实验用两路单脉冲源由实验箱上的两正脉冲源担当,见图4-23的电路。

微机原理及接口实验
10 2)实验电路中用8259实现中断,而采用8255-PB 口方式0工作,输出一种状态,当响应中断后1,8255—PB 口输出另一种状态,响应中断后2,8255—PB 口输出另一种状态,从而验证中断优先级的存在。

五、实验方法与步骤
1.实验准备
1) 检查实验平台电源供电是否正常。

2) 用通讯电缆将实验平台与实验微机连接好,上位机与实验平台通讯正常。

2.单片中断实验连线
1) 关闭实验箱电源。

2)按照图4-23电路接线:
(1)将8259芯片的D0-D7接8088系统模块的数据线D0-D7。

(2)将8259芯片的CS1、CS2接8088系统模块提供的片选信号引脚X20、X28。

(3)将8259芯片的IOW, IOR 接8088系统模块的I/O 读写信号引脚IOW, IOR 。

(4)将8259芯片的INTR,INTA 接8088系统模块的INTR,INTA 。

(5)将8259芯片的A0接8088系统模块的地址线A0。

(6)将8259芯片的IR0、IR1接单脉冲源的+PULSE 。

(7)将8255芯片的D0-D7接8088系统模块的数据线D0-D7。

(8)将8255芯片的CS 接8088系统模块提供的片选信号引脚X18。

(9)将8255芯片的IOW 、IOR 、RESET 接8088系统模块的引脚IOW 、IOR 、RESET 。

(10)将8255芯片的A0、A1接8088系统模块的地址线A0、A1。

(11)将8255芯片的PB0-PB7接电平输入输出模块的L0-L7。

3.实验过程及步骤
1)实验箱上电,在实验微机“桌面”双击“”图标进入“SAC-86S ”软件实验界面
2)在实验界面的编辑窗口编辑实验用源程序XXX .asm 文件,输入自己编写的实验用
源程序并起名保存
3)汇编源程序,排除语法错误后,生成XXX .obj 文件。

具体作法是在集成窗口中“编
译”菜单中的“编译”项
4)连接目标文件XXX .obj ,生成XXX.exe 文件。

作法是在集成窗口中“编译”菜单
中的“编译连接”项
5)下载XXX.exe 文件到实验箱上的存储器中。

作法是在集成窗口中“编译”菜单中的“编译下载”项(或点击“”图标),在集成窗口的状态栏中可以看到下载的进度表,下载成功后则变红
6)单步执行程序,观察运行结果。

作法是在集成窗口中“调试”菜单中的“单步执行”命令,每一步都可以观察各寄存器的值的变化,从而可以确定程序的运行情况,直
到结果实现。

若程序逻辑有错误,再回到第2)步再做—遍。

7)自动执行程序,实时观察运行结果。

作法是在集成窗口中“调试”菜单中的“全速
运行”命令,直到结果实现。

*4.实验提供的参考程序检查硬件连接的正确性
(1)选择菜单中的“文件”\“打开“\C:\SAC-86S\ASM\8259D.asm
(2)选择菜单中的“设置”\“端口设置”,确定串行口COM1和波特率9600,点击“开
第三章86X汇编语言编程实验
始进行测试”,开始测试串行口是否正常(这步可以省略)
(3)选择“编译”菜单中的“编译下载”(或点击“”图标),在任务栏上可看到传送进度条,传送成功则“”变红
(4)选择中的“调试”菜单中的“全速运行”(或点击“”图标)
(5)L0-L7指示灯全亮,
(6)按单脉冲按钮申请中断一次,L0-L3保持亮而L4-L7灭,延时一段时间后又恢复亮。

说明8088响应了一次中断。

(7)选择中的“调试”菜单中的“单步执行”命令一步一步查看程序程序运行是否正确,若程序逻辑有错误,再回到第(3)步再做—遍。

(8)第(7)步成功后选择中的“调试”菜单中的“全速运行”(或点击“”图标)全速运行:
先按左单脉冲按钮(接IR0),L0-L3亮,L4-L7灭,延时一段时间后仍全亮。

后按右单脉冲按钮(接IR1),L0-L3灭,L4-L7亮,延时一段时间后仍全亮。

同时按两个单脉冲按钮,L4-L7先灭亮,L0-L3后灭亮,延时一段时间后全亮。

六、实验报告:
1)叙述中断程序的设计思想,打印自编的中断源程序并在程序旁边画上流程图;
2)叙述程序运行实验箱上指示的结果(或自己修改显示语句后的结果)。

3)描述调试中遇到的问题及解决办法。

七、实验注意事项
1.编程时设置初始化命令的次序不能搞乱,应是ICW1、ICW2、ICW3、ICW4的顺序。

2.连接硬件时要关断实验箱电源。

八、参考资料
1.8259中断优先级实验参考程序:(8259E.ASM)
INT0 EQU 220H
INT1 EQU 221H
INT10 EQU 228H
INT11 EQU 229H
STACK SEGMENT
DB 50 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK
START:
CLI
; PUSH DS
MOV AX,0000H ;SET IRQ0
MOV DS,AX
MOV AX,OFFSET IRQ0
ADD AX,0000H
MOV SI,20H
MOV [SI],AX
MOV AX,8100H
MOV SI,22H
MOV [SI],AX
MOV AX,0000H ;SET IRQ1
MOV DS,AX
MOV AX,OFFSET IRQ1
ADD AX,0000H
MOV SI,24H
MOV [SI],AX
MOV AX,8100H
MOV SI,26H
MOV [SI],AX
; POP DS
MOV AL,13H ;ICW1
MOV DX,INT0
OUT DX,AL
MOV AL,8 ;ICW2
MOV DX,INT1
OUT DX,AL
MOV CX,0FFFH
LOOP $
MOV AL,9 ;ICW4
MOV DX,INT1
OUT DX,AL
MOV CX,0FFFH
LOOP $
MOV DX,INT1
MOV AL,0FCH ;OCW1
OUT DX,AL
MOV CX,0FFFH
LOOP $ MOV DX,INT0
MOV AL,20H OUT DX,AL
MOV CX,0FFFH
LOOP $
MOV AL,13H ;ICW1
MOV DX,INT10
OUT DX,AL
MOV AL,8 ;ICW2
MOV DX,INT11
OUT DX,AL
MOV CX,0FFFH
LOOP $
MOV AL,9 ;ICW4
MOV DX,INT11
OUT DX,AL
MOV CX,0FFFH
LOOP $
MOV DX,INT11
MOV AL,0FFH ;OCW1
OUT DX,AL
MOV CX,0FFFH
LOOP $
MOV DX,INT10
MOV AL,20H ;
OUT DX,AL
MOV CX,0FFFH
LOOP $
STI
MOV DX,21BH
MOV AL,90H
OUT DX,AL
DSP: MOV AL,0FFH
MOV DX,219H
OUT DX,AL
JMP DSP
IRQ0: STI
MOV CX,0FFFFH LOOP $
MOV AL,0FH
MOV DX,219H OUT DX,AL
MOV DX,INT0 MOV AL,20H
OUT DX,AL
MOV CX,0FFFFH LOOP $
MOV CX,0FFFFH LOOP $
IRET
IRQ1: STI MOV CX,0FFFFH LOOP $
MOV AL,0F0H MOV DX,219H OUT DX,AL
MOV DX,INT0 MOV AL,20H
OUT DX,AL
MOV CX,0FFFFH LOOP $
MOV CX,0FFFFH LOOP $
IRET
CODE ENDS
END START
2.实验结果描述
线路正确连接后,输入源程序,汇编、连接、下载成功后,连续执行,8个LED灯全亮。

按一下中断申请1按钮,8个LED灯的高4位灭一下(0FH),又亮起来(FFH),说明响应了一次中断1。

按一下按钮中断申请2按钮,8个LED灯的低4位灭一下(0FH),又亮起来(FFH),说明响应了一次中断2。

同时,按下中断申请1和中断申请2按钮,8个LED灯的高4位灭一下(0FH),说明先响应中断1;接着低4灭(F0H),说明响应了一次中断2,最后8个LED灯亮起来(FFH),说明中断响应结束。

九、讨论与思考
1.若中断响应不按设计的响应时,应该主要检查什么?
2.验证响应一次优先后,其中断优先级的情况。

2.若要改变中断优先级,程序怎样改?
实验三(3) 8259级联实验
一、实验目的和要求
1)熟悉8259中断控制器级联的原理和硬件连接
2)了解8259中断屏蔽,以及优先级判别等特性。

二、实验内容
1.主、从片两片8259芯片的中断实验
2.编写中断实验程序,主程序使8255的PB
口为
输出口,输出0FFH,L0-L7指示灯全亮,中断服务程序从PB口输出0FH,L0-L3亮,L4-L7灭,并延时一段时间后返回主程序。

三、实验仪器(同上)
四、实验原理
1.编程提示
8259实验初始化地址说明:
片选地址A0 奇偶初始化地址
X20(主片)0 偶地址X20
1 奇地址X21
X30(从片)0 偶地址X30
1 奇地址X31
2.实验原理(略,请参照实验三(1)的实验原理)
3.电路说明:
1)实验电路见图4-24,用实验箱上单脉冲源加到从片8259的IRQ0上
2)实验电路中从片8259与主片8259的IR2相连,当主片的其它中断申请时照样实现中断,而从片的8个中断源通过从片的INTR加到主片的IR2上,通过IR2响应8个中
断源的中断申请
3)实验指示采用8255-PB口方式0工作,输出一种状态(全亮),当响应中断后,8255—PB口输出另一种状态,从而验证中断的响应。

五、实验方法与步骤
1.实验准备
1)检查实验箱上电源供电是否正常。

2)用通讯电缆将实验平台与实验微机连接好,主机与实验平台通讯正常。

2.连接实验线路
关闭实验箱电源。

按照图4-24的电路接线:
1)将8255芯片的D0-D7接8088系统模块的数据线D0-D7。

2)将8255芯片的CS接8088系统模块提供的片选信号引脚X18。

3)将8255芯片的IOW、IOR、RESET接8088系统模块的引脚IOW、IOR、RESET。

4)将8255芯片的A0、A1接8088系统模块的地址线A0、A1。

第三章86X汇编语言编程实验
5)将8255芯片的PB0-PB7接电平输入输出模块的L0-L7。

6)将8259(1)芯片的D0-D7接8088系统模块的数据线D0-D7。

7)将8259(1)芯片的CS1、接8088系统模块提供的片选信号引脚X20。

8)将8259(1)芯片的IOW, IOR接8088系统模块的I/O读写信号引脚IOW, IOR。

9)将8259(1)芯片的INTR,INTA接8088系统模块的INTR,INTA。

10)将8259(1)芯片的A0接8088系统模块的地址线A0。

11)将8259(2)芯片的D0-D7接8088系统模块的数据线D0-D7
12)将8259(2)芯片的CS2接8088系统模块提供的片选信号引脚X30。

13)将8259(2)芯片的INTR2接8259(1)芯片的IR2。

14)将8259(2)芯片的CAS0`—CAS2`接8259(1)芯片的CAS0—CAS2。

15)将8259(2)芯片的IRQ0接单脉冲源的+PULSE。

3.实验过程及步骤
1)实验箱上电,在实验微机“桌面”双击“”图标进入“SAC-86S”软件实验界面2)在实验界面的编辑窗口编辑实验用源程序XXX.asm文件,输入自己编写的实验用源程序并起名保存
3)汇编源程序,排除语法错误后,生成XXX.obj文件。

具体作法是在集成窗口中“编译”菜单中的“编译”项
4)连接目标文件XXX.obj,生成XXX.exe文件。

作法是在集成窗口中“编译”菜单中的“编译连接”项
5)下载XXX.exe文件到实验箱上的存储器中。

作法是在集成窗口中“编译”菜单中的“编译下载”项(或点击“”图标),在集成窗口的状态栏中可以看到下载的进
度表,下载成功后则变红
6)单步执行程序,观察运行结果。

作法是在集成窗口中“调试”菜单中的“单步执行”
命令,每一步都可以观察各寄存器的值的变化,从而可以确定程序的运行情况,直
到结果实现。

若程序逻辑有错误,再回到第2)步再做—遍。

7)自动执行程序,实时观察运行结果。

作法是在集成窗口中“调试”菜单中的“全速运行”命令,直到结果实现。

*4.实验提供的参考程序检查硬件连接的正确性
(1)选择菜单中的“文件”\“打开“\C:\SAC-86S\ASM\8259D.asm
(2)选择菜单中的“设置”\“端口设置”,确定串行口COM1和波特率9600,点击“开
始进行测试”,开始测试串行口是否正常(这步可以省略)
(3)选择“编译”菜单中的“编译下载”(或点击“”图标),在任务栏上可看到传送进度条,传送成功则“”变红
(4)选择中的“调试”菜单中的“全速运行”(或点击“”图标)
(5)L0-L7指示灯全亮,
(6)按单脉冲按钮申请中断一次,L0-L3保持亮而L4-L7灭,延时一段时间后又恢复亮。

说明8088响应了一次中断。

(7)选择中的“调试”菜单中的“单步执行”命令一步一步查看程序程序运行是否正确,若程序逻辑有错误,再回到第(3)步再做—遍。

(8)第(7)步成功后选择中的“调试”菜单中的“全速运行”(或点击“”图标)全速运行:L0-L7指示灯全亮,按单脉冲按钮申请中断一次,L0-L3保持亮
而L4-L7灭,延时一段时间后又恢复亮。

说明8088响应了一次中断。

六、实验报告:
1)叙述中断级联的实现,打印自编的中断级联源程序并在程序旁边画上流程图;
2)叙述程序运行实验箱上指示的结果(或自己修改显示语句后的结果)。

3)描述调试中遇到的问题及解决办法。

七、实验注意事项
1.编程时设置初始化命令的次序不能搞乱,应是ICW1、ICW2、ICW3、ICW4的顺序。

2.连接硬件时要关断实验箱电源。

八、参考资料
1.实验参考程序
8259F.ASM 8259级联实验
INT10 EQU 220H
INT11 EQU 221H
INT20 EQU 230H
INT21 EQU 231H
STACK SEGMENT
DB 50 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK
START:
CLI
MOV AX,0000H ;SET IRQ0
MOV DS,AX
MOV AX,OFFSET IRQ0 ADD AX,0000H MOV SI,40H MOV [SI],AX MOV AX,8100H
MOV SI,42H
MOV [SI],AX
MOV AL,11H ;ICW1 MOV DX,INT10
OUT DX,AL
MOV AL,8 ;ICW2 MOV DX,INT11
OUT DX,AL
MOV AL,4 ;ICW3 MOV DX,INT11
OUT DX,AL
MOV AL,1DH ;ICW4 MOV DX,INT11
OUT DX,AL
MOV AL,11H ;ICW1
MOV DX,INT20
OUT DX,AL
MOV AL,10H ;ICW2 MOV DX,INT21
OUT DX,AL
MOV AL,2 ;ICW3 MOV DX,INT21
OUT DX,AL
MOV AL,9H ;ICW4 MOV DX,INT21
OUT DX,AL
MOV DX,INT11
MOV AL,0FBH ;OCW1
OUT DX,AL
MOV DX,INT10
MOV AL,20H ;OCW2 OUT DX,AL MOV DX,INT21
MOV AL,0FEH ;OCW1 OUT DX,AL
MOV DX,INT20
MOV AL,20H ;OCW2 OUT DX,AL
MOV CX,0FFFH
L03: LOOP L03
STI
MOV DX,21BH
MOV AL,90H
OUT DX,AL
DSP: MOV AL,0FFH
MOV DX,219H
OUT DX,AL
JMP DSP
IRQ0: STI
MOV CX,0FFFFH
LOOP $
MOV AL,0FH
MOV DX,219H
OUT DX,AL
MOV DX,INT20
MOV AL,20H
OUT DX,AL
MOV CX,0FFFFH
LOOP $
MOV CX,0FFFFH
LOOP $
IRET
CODE ENDS
END STAR
2.实验结果描述
线路正确连接后,输入源程序,汇编、连接、下载成功后,连续执行,8个LED灯全亮。

按一下中断申请按钮,8个LED灯的高4位灭一下(0FH),又亮起来(FFH),说明响应了一次中断。

同学们也可以设置显示其它值,如显示“55H”、“77H”等。

九、讨论与思考
1.中断不响应时,应该主要检查什么?
2.程序中为什么要反复用到延时程序?
实验四定时计数器实验
一、实验目的和要求
1.了解定时器8253的初始化及用法。

2.会用逻辑笔或示波器观察8253的工作状态。

二、实验内容
1.编写程序使8253的计数器2工作在方式3下
2.连接8253计数器硬件
三、实验仪器、设备(软、硬件)及仪器使用说明
1.硬件环境:PC机一台+微机原理及接口实验箱上的8088最小系统和8253芯片
2.软件环境:在WindowsXP环境下启动SAC-86S集成软件,编辑、运行汇编语言程序,并结合实验硬件来编辑、编译、连接、程序下载、仿真调试汇编语言程序。

四、实验原理
1.8253的内部结构。

如图4-25所示,8253内部有三个定时器和一个控制寄存器,通过设置控制字来控制计数器工作。

8253的这三个相互独立的可编程定时器/计数器,简称通道,每个通道的功能完全一样,既可作为定时器用,也可作为计数器用。

每个通道都有三根引线与外界联系,其中CLK为外部输入计数脉冲/时钟脉冲;OUT为定时时间到/计数结束输出信号,在不同的工作方式下,其输出波型不同;GA TE为控制计数器工作方式的门控输入信号。

2.8253-5的工作过程。

1)写入控制字——选定计数通道,对其进行工作方式、计数方式、读/写格式的设置;
2)写入计数初值;
3)将计数初值装入计数执行单元CE;。

相关文档
最新文档