第七章——中断控制器(2)初始化命令字和初始化流程

8259A的初始化命令字

在这里插入图片描述
(1)ICW1的格式和含义
ICW1叫芯片控制初始化命令字,需要写到偶地址端口
在这里插入图片描述
D7~D5:可为1也可为0
D4:此位作为ICW1标识位以区分于操作命令字OCW2和OCW3,因为OCW2和OCW3也要求写入偶地址端口,D4=1作为指示ICW1的标志
D3(LTIM):设定中断请求信号的形式,0为边沿触发方式,1为电平触发方式
D2:可为1也可为0
D1(SNGL):指出本片是否与其他8259A处于级联状态,系统中只有一片8259A时为1,多片时主片和从片的该位均为0
D0(IC4):用来指出后面是否将设置ICW4。如初始化程序中使用ICW4,则该位为1(由于要使用ICW4的第0位设置1来表示本系统为非8位系统,所以16位和32位系统中,ICW4必须使用,即D0(IC4)为1)

(2)ICW2的格式和含义
ICW2是设置中断类型号的初始化命令字,必须写到奇地址端口中
中断类型号的具体取值不但和ICW2有关,也和引入中断的引脚IR0-IR7有关。
在这里插入图片描述
1.ICW2是任选的,而一旦ICW2确定,IR0-IR7所对应的8个中断类型号也确定了
2.ICW2的低3位并不影响中断类型号的具体数值,只有ICW2的高5位影响中断类型号,而低3位(写入多少都无效)是由引入中断请求的引脚IR0-IR7决定的

(3)ICW3的格式和含义
ICW3是标志主片/从片的初始化命令字,需要写到奇地址端口中
当ICW1的D1(SNGL)位为0时才设置ICW3
主片格式:
在这里插入图片描述
D7 ~ D0对应于IR0-IR7引脚上的连接情况,如某一引脚上连有从片,则对应位为1,否则为0

从片格式:
在这里插入图片描述
D2 ~ D0的值与从片的输出端INT到底连在主片的哪条中断请求输入引脚有关,如某从片的INT引脚连在主片的IR5引脚上,则此从片的ICW3中的D2 ~ D0应为101

(4)ICW4的格式和含义
ICW4叫方式控制初始化命令字,要求写入奇地址端口
在这里插入图片描述
D7 ~ D5:这3位总是为0,用来作为ICW4的标识码
D4(SFNM):如为1,则为特殊全嵌套方式。这种系统中,一般包含多片8259A
D3(BUF):如为1,则为缓冲方式,为0则用非缓冲方式
D2(M/S ):表示本片为主片还是从片。为1时为主片。BUF=0时,该位不起作用,可为1也可为0
D1(AEOI):AEOI为1,则设置中断自动结束方式。此方式下,当第二个INTA脉冲结束时,当前中断服务器ISR中的相应位会自动清除
D0:为1表示非8位系统

8259A的初始化流程

8259A进入工作之前,必须用初始化命令字将系统中的每片8259A进行初始化。
在这里插入图片描述

对8259A设置初始化命令字的例子,这里8259A的端口地址为80H(偶),81H(奇)
在这里插入图片描述
1.设置ICW1:00010011(边沿、无级联、采用ICW4)
2.设置ICW2:00011000(设置IR7-IR0的中断类型号)
3.设置ICW4:00001101(不采用特殊全嵌套、缓冲、主片、不采用自动结束、非8位)

8259A的操作命令字

(1)OCW1的格式和含义
OCW1叫做中断屏蔽操作命令字,要求写入奇地址
在这里插入图片描述
某位为1时,对应于此位的中断请求受到屏蔽

(2)OCW2的格式和含义
用来设置优先级循环方式和中断结束方式的操作命令字,要求写入偶地址端口
在这里插入图片描述R:决定了系统的中断优先级是否按循环方式设置,为1采用优先级循环方式,为0则为非循环方式
EOI:中断结束命令位,当EOI为1时,使当前中断服务寄存器中的对应位ISn复位。即当AEOI为0时,ISn位必须用EOI命令来清除。
SL:决定了L2、L1、L0是否有效,如为1,则有效
L2、L1、L0:
1.当OCW2给出特殊的中断结束命令时,L2、L1、L0指出了了具体要清除当前中断服务寄存器中的哪一位
2.当OCW2给出特殊的优先级循环方式命令字时,L2、L1、L0指出了循环开始时哪个中断的优先级最低
注:两种情况下,SL位都为1
1.当EOI=1,SL=0时,则使当前中断处理子程序对应的ISn被清除
2.当R=1,SL=0时,使当前的优先级次序左移一位
在这里插入图片描述

(3)OCW3的格式和含义
操作命令字OCW3有三方面的功能:一是设置和撤销特殊屏蔽方式;二是设置中断查询方式;三是设置对8259A内部寄存器的读出命令。必须写入偶地址

ESMM为特殊的屏蔽模式允许位,SMM为特殊屏蔽模式位,当ESMM=SMM=1时,只要CPU内部的IF为1,系统就可响应任何未被屏蔽的中断请求,这时,再发送一个ESMM=1,SMM=0的OCW3时,系统又恢复原来的优先级方式,若ESMM=0,则SMM不起作用,故ESMM称为SMM的允许位。
P:查询方式位,当P=1时,8259A设置为中断查询方式。当CPU往8259A发出查询命令后,再执行一条输入指令,就将一个读信号RD 送到8259A,8259A收到这个读信号就好像收到两个INTA 脉冲一样,使当前中断服务寄存器中的某一位置1,并将查询字送到数据总线。查询字中表明了当前外设有无中断请求,并且表明了当前优先级最高的中断请求到底是哪个。

查询字格式:
在这里插入图片描述
P=1时,若优先级次序为IR3~IR2,当前在IR3和IR1引脚上有中断请求,CPU可得到如上查询字。这个查询字说明当前级别最高的中断请求为IR4,于是CPU便可转入IR4中断处理程序。

当P=0时,通过使OCW3中的RR位为1,便可构成对8259A内部寄存器的读出命令来读取寄存器IRR和ISR的内容。先使用输出指令往偶地址端口发读出命令,接着用输出指令从偶地址读取寄存器IRR或ISR的内容。

初始化命令字一般是在系统启动时由初始化程序一次性写入的,而操作命令可由任何程序在任何时候多次写入。

中断全嵌套的例子

在这里插入图片描述
全嵌套方式工作的条件:
1.主程序必须执行开中断指令,使IF为1,才有可能响应中断
2.每当进入中断处理程序时,系统会自动关中断,所以,只有中断处理程序中再次打开中断,才有可能与较高级的中断形成嵌套结构
3.每个中断处理程序结束时,必须执行中断结束命令,清除对应的ISn位,才能返回断点

使用中断结束命令的例子

在这里插入图片描述
注:
1.用OCW2去构成中断结束命令,将此命令发往偶地址端口(用于中断结束)
2.进入中断处理程序后,只有执行STI指令,才能允许其他中断处理程序进行嵌套,如果一个中断处理程序一直没有执行STI指令,那么,这个中断处理程序执行过程中就不会受其他中断处理程序嵌套。
但当中断处理程序执行完最后一条指令即IRET之后(恢复进入中断前的标志寄存器的值),系统便开放中断,从而允许新的中断请求进入。

关于优先级设置和中断结束命令的小结

(1)关于优先级的设置方法
1.全嵌套方式是8259A默认的工作方式。若未设置其他方式,就为全嵌套方式,IR0优先级最高。
2.特殊全嵌套方式用ICW4设置的,其中D4(SFNM)=1位特殊全嵌套方式,这种方式下,IR0优先级最高。
3.优先级自动循环方式是用OCW2命令设置的,其中R=1,SL=0,EOI=0。
4.优先级特殊循环方式用OCW2命令设置的,其中R=1,SL=1,EOI=0,最低优先级由L2L1L0给出(指定的是最低优先级)

(2)关于中断结束方式的设置方法
1.中断自动结束方式用ICW4设置,其中D1(AEOI)=1为中断自动结束方式
2.一般中断结束方式用OCW2命令设置,其中R=0,SL=0,EOI=1。
3.特殊中断结束方式用OCW2命令设置,其中R=0,SL=1,EOI=1。

(3)优先级循环方式和中断结束方式一起设置的命令
1.优先级自动循环方式和一般中断结束方式由OCW2命令设置,R=1,SL=0,EOI=1
2.优先级特殊循环方式和特殊中断结束命令有OCW2命令设置,R=1,SL=1,EOI=1

  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值