定时器8253与中断控制器8259A实验

时间:2026-01-18

定时器8253与中断控制器8259A实验8255和LED数码管显示实验

实验七 定时器8253与中断控制器8259A实验

二、实验电路

图1 8253与8259 实验电路图 280H~287H

五、实验项目

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:2000

TPC PCI Card I/O Base Adress:2400

TPC PCI Card Memory Base Adress:d2000000

TPC PCI Card Interrupt Line:0A

其中,2000为PCI卡上9054芯片的基地址;2400为试验箱的基地址,2400/2407对应的是280/287H插孔;0A表示系统分配中断为IRQ10。

4.由于TPC卡使用9054芯片连接微机,所以在编程使用微机中断前需要使能9054的中断功能,代码如下:

mov dx,ioport_cent+68h ;设置tpc 卡中9054芯片io口,使能中断

in ax,dx

定时器8253与中断控制器8259A实验8255和LED数码管显示实验

实验七 定时器8253与中断控制器8259A实验

or ax,0900h

out dx,ax

其中IOPORT_CENT是9054芯片寄存器组的I/O起始地址(TPC PCI Card 9054 Chip I/O Base Adress:2000),+68H的偏移是关于9054芯片中断使能的寄存器地址,设置含义如下:

设置INTCSR(68H)寄存器,中断模式设置:

其它位为零即可,更多内容参看9054芯片数据手册

程序退出前还要关闭9054的中断,代码如下:

mov dx,ioport_cent+68h ;设置tpc 卡中9054芯片io口,关闭中断

in ax,dx

and ax,0f7ffh

out dx,ax

5. PC机中断控制器8259 的主片地址为20H、21H, 从片地址为A0H、A1H,编程时要根据中断类型号设置中断矢量,8259中断屏蔽寄存器IMR对应位要清零(允许中断),中断服务结束返回前要使用中断结束命令:

MOV AL,20H

OUT 20H,AL

OUT 0A0H,AL

中断结束返回DOS时应将IMR对应位置1,以关闭中断。

;手动产生单个脉冲作为中断请求信号对应程序

data segment

int_offset dw ?

int_seg dw ? ;旧中断向量保存空间

irq_times db 10 ; 中断计数

flag db 0 ; 中断标志

msg1 db 0dh,0ah,' THIS IS A 8259A INTERRUPT !',0dh,0ah,'$'

data ends

code segment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

cli

; TPC PCI Card 9054 Chip I/O Base Adress:2000时

mov dx,2068h ;设置 tpc 卡中9054芯片io口,使能中断

in ax,dx

定时器8253与中断控制器8259A实验8255和LED数码管显示实验

or ax,900h

out dx,ax

push ds

; TPC PCI Card Interrupt Line:0A,分配中断为IRQ10时,中断类型号为72H

mov ax,3572h

int 21h ;保存原中断向量

mov int_seg,es

mov int_offset,bx

mov ax,seg int_proc ;设置新中断向量

mov ds,ax

mov dx,offset int_proc

mov ax,2572h

int 21h

in al, 0a1h

and al, 11111011b

out 0a1h, al ;开放从片相应的中断

pop ds

sti

loop1: cmp flag,0

je loop1

mov dx,offset msg1

mov ah,9

int 21h

mov flag,0

dec irq_times

jnz loop1

cli

in al, 0a1h

or al, 00000100b

out 0a1h, al ;屏蔽从片相应的中断

mov dx, int_offset ;恢复原中断向量

mov ds,int_seg

mov ax,2572h

int 21h

mov dx,2068h ;设置 tpc 卡中9054芯片io口,关闭中断

in ax,dx

and ax,0f7ffh

out dx,ax

sti

mov ax,4c00h

int 21h

int_proc proc far

push ax

mov flag,1

mov al,20h

out 0a0h,al

out 20h,al ;Send EOI

pop ax

iret

int_proc endp

code ends

end start

定时器8253与中断控制器8259A实验8255和LED数码管显示实验

实验七 定时器8253与中断控制器8259A实验

;8253每隔4秒产生一次中断请求对应程序

data segment

int_offset dw ?

int_seg dw ? ;旧中断向量保存空间

flag db 0

msg1 db 0dh,0ah,' THIS IS A 8259A INTERRUPT !',0dh,0ah,'$'

msg2 db 0dh,0ah,'Press any key to exit!',0dh,0ah,'$'

data ends

code segment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

cli

; TPC PCI Card 9054 Chip I/O Base Adress:2000时

mov dx,2068h ;设置 tpc 卡中9054芯片io口,使能中断

in ax,dx

or ax,900h

out dx,ax

push ds

; TPC PCI Card Interrupt Line:0A,分配中断为IRQ10时,中断类型号为72H …… 此处隐藏:3927字,全部文档内容请下载后查看。喜欢就下载吧 ……

定时器8253与中断控制器8259A实验.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:4.9 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:19元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219