8259a中断控制器——利用IRQ2显示中断过程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8259a中断控制器:利用8259A的IRQ2显示中断过程
目录
8259a中断控制器:利用8259A的IRQ2显示中断过程 (1)
设计题目: (1)
要求: (1)
设计思路: (1)
实验代码: (2)
实验心得体会: (10)
设计题目:
利用8259A IRQ2显示中断过程
要求:
1.主是在7段数码管上循环显示‘8’从右到左显示
2.中断服务中在7段数码管上依次显示全1234567 89要去显示2秒左右时间可采用软件Software延迟(时间可通过调试大致2秒左右)总计中断9次结束返回DOS
3.每次由手动产生IRQ2中断请求信号引起中断
设计思路:
软件Software方面有两个主要部分:主和中断服务子
主首先要完成是些和处理工作例如查找设备设置TPC卡中9054芯片IO口,保存原来0AH号中断中断向量设置新中断向量设置中断掩码显示提示信息然后打开中断进入主循环在主循环中不断在LED上从右向左显示8直到被IRQ2中断信号打断此外在主中还对中断执行进行计数当计数满9次后自动跳出为了使主上8循环可以看出来故将显示8延迟设计比较长当完成9次中断主还要完成些后续处理工作:恢复中断掩码;恢复中断向量;设置TPC卡中9054芯片IO口,关闭中断返回DOS
中断子完成在6位数码管上“同时”显示个数功能这个数为1—9中某个可以用循环次数作为参数这里同时显示实质上是利用视觉上暂停效果即只要每秒能在同个数码管上显示信息超过24次看起来就是同时了而这点在现在计算机速度条件下很容易实现为了不发生混乱在中断子执行过程中不允许再次中断
另外中还有两个子:findtpc和dispword这些是为了完成查找设备等预处理
硬件方面实验时把总线上IRQ2引脚和拨键开关相连以手动产生中断信号另外再把LED片选信号CS和210-217相连(注:LED显示是通过向LED数据端口送入数据再向LED位选端口送入
位选信号来实现)
实验代码:
;386以上微机适用
;纯dos下才能使用
;tasm4.1或以上编译
;**********************************************;
;*利用8259AIRQ2 显示中断过程*;
;**********************************************;
io_plx_device_id equ 05406h ;TPC卡设备ID
io_plx_vendor_idequ 010b5h ;TPC卡厂商ID
IO_PLX_SUB_ID EQU 0905410B5H;TPC卡子设备及厂商ID
portseg EQU 211H-200H ;数码管端口地址
portbit EQU 210H-200H
data segment
csregdw?
[Page]ipreg dw? ;旧中断向量保存空间
irq_times dw10 ;中断计数
msg1 db 0dh,0ah,\'TPC pci card Interrupt\',0dh,0ah,\'$\'
msg2 db 0dh,0ah,\'Press any key to exit!\',0dh,0ah,\'$\'
msg3 db 0dh,0ah,\'Press DMC or wait to errupt 10 times and exit!\',0dh,0ah,\'$\'
io_9054base_address db 4 DUP(0) ;TPC卡PCI接口芯片I/O基地址暂存空间
io_base_addressdb 4 DUP(0) ;TPC卡I/O基地址暂存空间
errupt_line db 2 DUP(0) ;TPC卡中断号暂存空间
pcicardnotfind db 0dh,0ah,\'TPC pci card not find or address/errupt error !!!\',0dh,0ah,\'$\' io9054baseaddress db 0dh,0ah,\'TPC pci card 9054 Chip I/O Base Address : \',\'$\' iobaseaddress db 0dh,0ah,\'TPC pci card I/O Base Address : \',\'$\'
number db 0dh,0ah,\'TPC pci card Interrupt Line : \',\'$\'
enter_ db 0dh,0ah,\'$\'
MESS DB \'8253A TIMER0 IN MODE3! COUNT=0200H\',0AH,0DH
DB \'8253A TIMER1 IN MODE2! COUNT=0aH\',0AH,0DH,\'$\'
irq_vect db 08h,09h,0ah,0bh,0ch,0dh,0eh,0fh,70h,71h,72h,73h,74h,75h,76h,77h
;新中断向量,中断0-7向量为:08h-0fh,中断8-15向量为:70h-77h
irq_mask_0_7_table db 011111110b,011111101b,011111011b,011110111b
db 011101111b,011011111b,010111111b,001111111b
db 011111011b,011111011b,011111011b,011111011b
[Page] db 011111011b,011111011b,011111011b,011111011b
;新中断掩码,中断0-7