微机原理实验4
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2 .可屏蔽硬中断程序设计
(1) 改写键盘硬中断子程 每按下一个键,在屏幕上将该键对应的扫描码
以二进制形式显示出来。
(2) 利用键盘控制定时显示功能 每隔1秒钟显示字符串’Can I help you ? ’,
当按下一个键时,则停止定时显示功能,
再按下一键时,恢复定时显示功能。
2
3.(选作)
用TPC-1 型微机实验箱上单脉冲电路产生的正脉冲信 号做中断源,
11
5. 有关8259A
(1)IBM PC 系列微机的可屏蔽中断系统由主板上的8259A 控制。 (2)8259A是一个可编程中断控制器
IBM PC和XT机使用1片8259A,可管理8个中断申请, IBM PC/AT及以上微机使用2片8259A级连,可管理15个中断申请。主 8259A的端口地址为20H和21H。
4
2. 关于任务2(1)
键盘中断类型号为09H,编写键盘硬中断程序要点是:
(1) 键盘接口按下键和释放键都向 8259A 发出中断申请
若满足响应条件:
对键盘上的一个按键操作(包括按下键和释放键), CPU 将执行两次键盘中断(按下键一次,释放键一次)。
(2) CPU 响应键盘中断时
可从 60H 端口读取按下键的扫描码,
release: …… MOV OUT POP IRET AL, 20H 20H,AL AX
;释放键处理 ;发中断结束
;恢复寄存器值(恢复现场) ;中断返回
8
(4) 在键盘中断处理程序的最后应发中断结束命令, 否则将屏蔽键盘中断。
9
3. 关于任务2 (2) 要用到定时和键盘两个中断源。
可在任务2(1)的基础上完成, 在键盘中断子程中,设置一个标志变量 flag, 用以区分是奇数次按键还是偶数次按键。 对奇数次按键,可重置 8259A 的屏蔽字,屏蔽定时 器中断,使 CPU 不再响应定时中断,从而停止了定时 显示功能;
;发中断结束
;恢复寄存器值(恢复现场) ;中断返回 7
在AT及以上微机,去掉键盘应答部分,键盘中断处理程序可简化为:
PUSH AX IN TEST JNZ …… AL,60H AL,80H release
;保存寄存器值(保存现场) ;读扫描码 ;检查是按下键还是释放键,即是通码吗? ;不是通码则转去作释放键处理 ;按下键处理
15
(7)可屏蔽硬中断程序的编写方法 •
• • 保存原中断向量可用DOS的35H功能调用。
• 设置新中断向量和恢复原中断向量可用DOS的25H功能调用。 中断向量的类型号由中断源与8259A的连接关系确定。 主程完成与中断有关的设置工作后,
即可进行其它工作的处理,通常此处可用一双重循环延时程序段,或 用计数中断子程被执行次数,或用判断是否有按键动作等代替。 • 在结束主程,返回DOS之前,应据中断源的不同情况做处理:
Q9
Q8 U40 L1 L2 L3 L4 L5 L6 L7 L8 L9 L10 U41 L11 L12
12 个 发 光 二 极 管
K1 PC4 PC5 PC6 PC7
K2 K3 K4
K5 K6 K7 K8
K9
K10 K11 K12
PB3
PB4
PB5
PB7 3 PB6
图3-2
PC0
PC1
PC2
PC3
12 个 逻 辑 电 平 开 关
TPC-1型实验箱面板布置图
19
3、PC总线信号
实验箱上有两个PC总线扩展插槽和一个PC总线信号引出插孔排。
GND RESET DRV +5V IRQ2 - 5V DRQ2 - 12V
+12V GND MEMW MEMR IOW IOR DACK3 DRQ3 DACK1 DRQ1 DACK0 CLOCK IRQ7 IRQ6 IRQ5 IRQ4 IRQ3 DACK2 T/C ALE +5V OSC GND B1 A1
5 4
6 U42 74LS00
1
2 U34 74LS04
3
4
3.6k
+5V
图 5 单脉冲电路
22
或恢复原中断向量,或通过设置8259A的中断屏蔽字屏蔽对此级中断源 的反应。
• 中断子程中,处理中断源请求的任务,在中断返回前,应发中断结束 命令EOI。
图1和图2分别是可屏蔽硬中断的主程序和中断子程序流程图。
16
开始 CLI关中断 开始 保存现场
保存原中断向量
设置新中断向量 设置8259A的中断屏蔽字 中断子程有关量的初始化 恢复现场 STI开中断 IRET中断返回 主程其它工作处理 (可用双重循环延时代替) 恢复原中断向量 图2 中断子程流程图 返回DOS 图1 主程序流程图 17 完成中断源 申请的任务
可调电阻
U34
2、实验箱面板布置图
U7 U18 U1 U2 U3 U6 U4 U9
IN0 IN1
CS
IN2 IN3 IN4 IN5
8MHz 面包板
DAC0832
AOUT
ADC 0809
PC 总 线 插 槽 1
PC 总 线 插 槽 2
PC 总 线 插 孔 排
U11
R源自文库M 6116
U39 DMA
8253
GATE2 GATE1 OUT3 OUT2 OUT1
CLK1 CLK2 CLK3
GATE3
CS A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 U14 U13 1 J4 U28 RES U33 U32 CS 1 J3 1 J2 JS DRQ U20 U15 U43 U38 200-207
U37 74LS138 208-20F 210-217 218-21F
U10
U44 220-227 228-22F 230-237 A Q7 238-23F B 74 LS 393 Q3 Q2 Q1
U27 U26 U29 PB2 PB1 U30 U31 Q6 Q5
Q4
TxRDY U45 TxE Q15
对偶数次按键,则清除对定时中断的屏蔽,以恢复定 时显示的功能。
10
4. 关于任务3(选做)
计算机上实际配置的外设不同,8259A的IR2~IR7的 占用情况也就会不同。 利用PC 总线上的中断申请插孔IRQ2~IRQ7,自编程序 进行检测。 (1) IRQ2~IRQ7对应的中断类型号为0A~0FH。 (2) 在中断子程中,显示字符串’Interrupt is OK!’。 对可用的中断申请插孔,运行的结果是能够正常显 示该字符串; 对于发生冲突的不可用中断申请插孔,运行的结果是 不能够正常显示该字符串,甚至出现死机等异常情况。
(3)BIOS对主8259A的设置如下:
边沿触发方式,当输入端IR0~IR7出现上升沿信号时,发出中断申 请信号。 中断向量初值为08H,IR0~IR7对应的中断类型号为08H~0FH。 固定优先级,IR0优先级最高,IR7优先级最低。 一般屏蔽方式,用中断屏蔽寄存器IMR控制各级中断的允许或屏 蔽。 一般全嵌套方式,中断服务结束时,需发中断结束命令EOI,清 12 除ISR中的记录,否则屏蔽同级或低级的中断。
B10
A10
B20
A20
B30
A30
I/O CH CK D7 D6 D5 D4 D3 D2 D1 D0 I/O CH RDY AEN A19 A18 A17 A1 6 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
图3-3
PC 总线信号引脚
Q0
Q11 Q10
RTS DTR GND RxD
1488
TxD
1489
8 2 5 1 A
RxRDY
TxC RxC CS
8 2 5 5 A
PB0 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 CS
WGO48C XM159D YP2 6AE SR37BF
Q14
Q13
Q12
74 LS 393
20
4.8MHz脉冲电路
该电路提供 8MHZ 脉冲,标有 8MHZ 的插孔为该脉冲 的输出端。
360
11
Ω 10 0.01μ
360 Ω
13 12 9 8
8MHz
8MHz 晶振
U34 74LS04
图
4
8MHz脉冲电路
21
5.单脉冲电路
该电路提供正负单脉冲。 附近按扭为单脉冲产生按扭,每按一次产生一个单脉冲, 标有“ ”的插孔输出正单脉冲,标有 “ ”的插孔 输出负单脉冲。
例:屏蔽IR7的中断申请 IN OR AL,21H AL,10000000B ;读入原IMR的内容 ;屏蔽IR7的中断申请
OUT
21H,AL
;写入中断屏蔽寄存器IMR
14
(6) 发中断结束命令EOI
通过往8259A的偶地址写入20H实现,
8259A的偶地址为20H,指令如下: MOV AL,20H OUT 20H,AL
(4) 每片8259A有8个中断申请输入端IR0~IR7
主8259A的连接情况如下: IR0 与主板上的8253计数器0相连,该计数器输出频率 为18.2hz的方波。 IR1 与键盘接口发出的中断申请相连。
IR2 ~ IR7 分配给其它外设,或未使用。
在PC总线上可由插孔IRQ2~IRQ7引入中断申请信号。
13
(5) 有关8259A的编程: 设置中断屏蔽字
中断屏蔽寄存器的端口地址为21H。
通过改变中断屏蔽寄存器各位的值实现:
某位为0,允许该级中断申请进入; 某位为1,禁止该级中断申请进入。 例:新增允许IR2的中断申请 IN AND OUT AL,21H AL,11111011B 21H,AL ;读入原IMR的内容 ;新增允许IR2的中断申请 ;写入中断屏蔽寄存器IMR
实验四、软中断、硬中断程序设计
一、实验目的
通过对软中断、可屏蔽硬中断程序的编写和调试, 掌握 IBM-PC机的软中断、可屏蔽硬中断程序的编 写和调试, 掌握 IBM PC 系列微机的中断系统及中断程序设计 方法。
1
二、实验任务
1.编写一个类型为60H的中断程序,其功能发出一阵铃响, 在主程序中用中断INT60H调用该中断程序。
发中断结束命令EOI
三、实验箱上相关电路 参看附3,了解TPC-1 型微机实验系统,掌握实验箱上 IBM PC/XT 总线、单脉冲电路和8MHz脉冲电路。 1、TPC-1型实验箱实物
图3-1 TPC-1型实验箱实物
18
60 芯 扁 平 电 缆 插 槽 J6
电源开关 U16 U42 GND +5v +12v -5v -12v IN6 IN7 EOC 500kHz CS
若在AT及以上微机做实验,
在读取扫描码后,可不用键盘应答信号。
6
在PC和XT机上,键盘中断处理程序中置键盘应答和判断通码、断码的过程:
PUSH IN MOV AX AL,60H AH,AL ;保存寄存器值(保存现场) ;读扫描码 ;保存在AH中
IN
OR OUT AND
AL,61H
AL,80H 61h,AL AL,7FH
;置键盘应答
;使61H口最高位为1
OUT
TEST JNZ …… release: …… MOV OUT POP IRET
61H,AL
AH,80H release
;使61H口最高位为0
;检查是按下键还是释放键,即是通码吗? ;不是通码则转去作释放键处理 ;按下键处理 ;释放键处理
AL,20H 20H,AL AX
依次检测 PC 总线上的中断申请插孔IRQ2~IRQ7, 确定哪些未被微机系统占用。
3
三、实验说明
1. 关于任务1
(1) 进行软中断程序设计最好使用DOS系统保留给用户应用 的中断类型,否则处理不当,会引起意想不到的后果。 (2) 用INT 60H即可调用60H中断子程 60H属于系统保留给用户的软中断类型号, 只要在中断向量表0 :460H单元中存放用户编写的60H中断 程序入口地址,用INT 60H即可调用60H中断子程 。
可据扫描码的最高位确定是按下键操作还是释放键操作,
最高位为 1 (扫描码为断码),则说明是释放键引起的中断;
最高位为 0 (扫描码为通码),则说明是按下键引起的中断。
5
(3) 若在IBM PC和XT上
在读取扫描码后,应置键盘应答信号,键盘接口才能 为接收下一个键做好准备。置键盘应答位的方法是:
先将 61H 端口的最高位置 1, 再将 61H 的最高位置 0。 原理可参看键盘接口有关资料。