接口技术8259A中断控制器原理及应用_第1页
接口技术8259A中断控制器原理及应用_第2页
接口技术8259A中断控制器原理及应用_第3页
接口技术8259A中断控制器原理及应用_第4页
接口技术8259A中断控制器原理及应用_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、8259A中断控制器中断控制器原理及应用原理及应用(6.3节)节)28259A中断控制器中断控制器nIntel 8259A是可编程中断控制器是可编程中断控制器PICn可用于管理可用于管理Intel 8080/8085、8086/8088、80286/80386的可屏蔽中断的可屏蔽中断n8259A的基本功能的基本功能n一片一片8259A可以管理可以管理8级中断,可扩展至级中断,可扩展至64级级n每一级中断都可单独被屏蔽或允许每一级中断都可单独被屏蔽或允许n在中断响应周期,可提供相应的中断向量号在中断响应周期,可提供相应的中断向量号n8259A设计有多种工作方式,可通过编程选择设计有多种工作方式,

2、可通过编程选择38259A的内部结构和引脚的内部结构和引脚D7D0INTAINT中断请求寄存器中断请求寄存器中断屏蔽寄存器中断屏蔽寄存器数据数据总线总线缓冲器缓冲器IR0IR7读读/写写控制控制逻辑逻辑级联级联缓冲器缓冲器比较器比较器RDWRA0CSCAS0CSA1CAS2SP/EN优先权判别电路优先权判别电路中断服务寄存器中断服务寄存器控制逻辑控制逻辑41. 中断控制中断控制n中断请求寄存器中断请求寄存器IRRn保存保存8条外界中断请求信号条外界中断请求信号IR0IR7的请求状态的请求状态nDi位为位为1表示表示IRi引脚有中断请求;为引脚有中断请求;为0表示无请求表示无请求n中断服务寄存器

3、中断服务寄存器ISRn保存正在被保存正在被8259A服务着的中断状态服务着的中断状态nDi位为位为1表示表示IRi中断正在服务中;为中断正在服务中;为0表示没有被服务表示没有被服务n中断屏蔽寄存器中断屏蔽寄存器IMRn保存对中断请求信号保存对中断请求信号IR的屏蔽状态的屏蔽状态nDi位为位为1表示表示IRi中断被屏蔽(禁止);为中断被屏蔽(禁止);为0表示允许表示允许(与与IF标志位的规定相反标志位的规定相反)52. 与处理器接口与处理器接口(读写控制逻辑部分读写控制逻辑部分) A0 RD* WR* CS*功能功能 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 1 1 0 1

4、写入写入ICW1、OCW2和和OCW3写入写入ICW2ICW4和和OCW1读出读出IRR、ISR和查询字和查询字读出读出IMR数据总线高阻状态数据总线高阻状态数据总线高阻状态数据总线高阻状态注:ICW初始化命令字,OCW操作命令字63. 中断级连中断级连n单片单片8259A可支持可支持8个中断源;个中断源;n采用多片采用多片8259A级连,可最多支持级连,可最多支持64个中断源。个中断源。N片片8259A可以支持可以支持8*N-(N-1)个中断源个中断源n级连时只能有一片级连时只能有一片8259A为主片,其余的均为从属片;为主片,其余的均为从属片;n涉及到的涉及到的8259A引脚包括:引脚包括

5、:nCAS0-CAS2 : 主主8259A的三条级连线的三条级连线CAS0CAS2作为输出线,作为输出线,连至每个从连至每个从8259A的的CAS0CAS2nSP*/EN*:在非缓冲方式下,规定该在非缓冲方式下,规定该8259A是主片(是主片(SP*1)还是)还是从片(从片(SP*0)nIRi : 每个从每个从8259A的中断请求信号的中断请求信号INT,连至主,连至主8259A的一个中断的一个中断请求输入端请求输入端IRnINT :主主8259A的的INT线连至线连至CPU的中断请求输入端的中断请求输入端级连电路连接方法级连电路连接方法演示演示8259A的工作过程的工作过程n8259A对中断

6、请求的处理过程如下:对中断请求的处理过程如下:n当某当某IRi有效时,有效时,IRR相应位置相应位置1n若有效的若有效的IRi未被屏蔽,则未被屏蔽,则向向CPU发出中断请求发出中断请求n检测到第检测到第1个个INTA*信号后,信号后,置置ISRi=1,IRRi=0 n检测到第检测到第2个个INTA*信号后,信号后,把把ISRi=1中最高优中最高优先级的中断类型码放到先级的中断类型码放到DB上上n若工作在若工作在AEOI方式,在第方式,在第2个个INTA*结束时,使结束时,使ISRi复位;否则由复位;否则由CPU发出发出EOI命令使命令使ISRi复位复位动画动画9 8259A的工作过程(续)的工

7、作过程(续)CAS0CAS2D0D7SP/ENIR0IR7CPU响应周期响应周期8259A工作波形工作波形INT第一个周期第一个周期T1 T2 T3 T4ALECLK 第二个周期第二个周期T1 T2 T3 T4第一个前保持为高电平第一个前保持为高电平 INTALOCK108259A的工作方式(理解)的工作方式(理解)普通全嵌套方式普通全嵌套方式特殊全嵌套方式特殊全嵌套方式自动循环方式自动循环方式特殊循环方式特殊循环方式优先权固定方式优先权固定方式优先权循环方式优先权循环方式设置优先权方式设置优先权方式普通中断结束方式普通中断结束方式特殊中断结束方式特殊中断结束方式自动中断结束方式自动中断结束方

8、式非自动中断结束方式非自动中断结束方式结束中断处理方式结束中断处理方式屏蔽中断源方式屏蔽中断源方式普通屏蔽方式普通屏蔽方式特殊屏蔽方式特殊屏蔽方式中断触发方式中断触发方式边沿触发方式边沿触发方式电平触发方式电平触发方式数据线连接方式数据线连接方式缓冲方式缓冲方式非缓冲方式非缓冲方式111. 优先权固定方式优先权固定方式n普通全嵌套方式普通全嵌套方式n8259A的中断的中断优先权顺序固定不变优先权顺序固定不变,从高到低依次为,从高到低依次为IR0、IR1、IR2、IR7n中断请求后,中断请求后,8259A对对当前请求中断中优先权最高的中当前请求中断中优先权最高的中断断IRi予以予以响应响应,将其

9、向量号送上数据总线,对应,将其向量号送上数据总线,对应ISR的的Di位置位,至到中断结束(位置位,至到中断结束(ISR的的Di位复位)位复位)n在在ISR的的Di位置位期间,位置位期间,禁止再发生同级和低级优先权禁止再发生同级和低级优先权的中断的中断,但允许高级优先权中断的嵌套,但允许高级优先权中断的嵌套n特殊全嵌套方式特殊全嵌套方式一中断正被处理时,允许一中断正被处理时,允许同级或更同级或更高优先级高优先级的事件可以打断当前的中的事件可以打断当前的中断处理过程而被服务。(参阅教材断处理过程而被服务。(参阅教材P190P191)注注: 特殊全嵌套仅用于多个特殊全嵌套仅用于多个8259A级级连时

10、的主连时的主8259A,而不能用于从,而不能用于从属属8259A或单或单8259A系统。系统。特殊全嵌套方式特殊全嵌套方式 D.主8259AIR0IR1IR2IR3IR4IR5IR6IR7一般嵌套方式:从片的INT被主片封锁,故更高级别的IR0-IR2中断也无法得到响应特殊嵌套方式:因主片不封锁从片的INT,故级别高的IR0-IR2中断可以得到响应。(但IR3-IR7仍被本从片封锁)C.假定IR3发生中断,并获得服务一般嵌套方式:IR4的中断被服务时,这些中断将被封锁。B.特殊嵌套方式:IR4的中断被服务 时 , 只 封 锁IR5-IR7。A.INTE.从8259AINTIR0IR1IR2IR

11、3IR4IR5IR6IR7普通普通(一般一般)全嵌套方式全嵌套方式 VS. 特殊全嵌套方式特殊全嵌套方式去CPU2、循环优先级方式循环优先级方式n中断源轮流处于最高优先级中断源轮流处于最高优先级,某中断请求某中断请求IRi被被处理后,其优先级别自动降为最低,原来比它处理后,其优先级别自动降为最低,原来比它低一级的中断上升为最高级低一级的中断上升为最高级 n自动循环:初始优先级自动规定自动循环:初始优先级自动规定n特殊循环:特殊循环:初始优先级可用编程改变初始优先级可用编程改变n适用于多个中断源具有相同优先权适用于多个中断源具有相同优先权IR7IR6IR5IR4IR3IR2IR1IR076543

12、21021076543最低级最高级最高级最低级ISR内容IR7IR6IR5IR4IR3IR2IR1IR0IR4的服务结束以前0101000001000000IR4的服务结束以后ISRi153. 结束中断处理方式结束中断处理方式什么是什么是8259A的中断结束?的中断结束?8259A利用中断服务寄存器利用中断服务寄存器ISR判断:判断:n某位为某位为1,表示正在进行中断服务;,表示正在进行中断服务;n该位为该位为0,就是该中断结束服务。,就是该中断结束服务。这里说明如何使这里说明如何使ISR某位为某位为0,不反映,不反映CPU的工作状态。的工作状态。16结束中断处理方式(续)结束中断处理方式(续

13、)n自动中断结束方式自动中断结束方式AEOIn在第在第2个个INTA#结束时,由结束时,由8259A使使ISRi自动复位自动复位n非自动中断结束方式非自动中断结束方式1:普通中断结束方式:普通中断结束方式EOIn配合全嵌套(固定)优先权方式使用配合全嵌套(固定)优先权方式使用n当当CPU用输出指令往用输出指令往8259A发出普通中断结束发出普通中断结束EOI命令命令时,时,8259A就会把所有正在服务的中断中优先权最高就会把所有正在服务的中断中优先权最高的的ISR位复位位复位n非自动中断结束方式非自动中断结束方式2:特殊中断结束方式:特殊中断结束方式SEOIn配合循环优先权方式使用配合循环优先

14、权方式使用nCPU在程序中向在程序中向8259A发送一条特殊中断结束命令,发送一条特殊中断结束命令,这个命令中指出了要清除哪个这个命令中指出了要清除哪个ISR位位174. 屏蔽中断源方式屏蔽中断源方式n普通屏蔽方式普通屏蔽方式n将将IMR的的Di位置位置1,则对应的中断,则对应的中断IRi被屏蔽被屏蔽,该,该中断请求不能从中断请求不能从8259A送到送到CPUn如果如果IMR的的Di位置位置0,则允许,则允许IRi中断产生中断产生n特殊屏蔽方式特殊屏蔽方式n使用场合:在执行较高级的中断服务时,希望开放使用场合:在执行较高级的中断服务时,希望开放较低级的中断请求。较低级的中断请求。n原理原理:将

15、将IMR的的Di位置位置1,对应的中断,对应的中断IRi被屏蔽的被屏蔽的同时,使同时,使ISR的的Di位置位置0。假定当前正在处理假定当前正在处理IR6,先先进入特殊屏蔽方式,然后进入特殊屏蔽方式,然后设置设置IM6=1。这时,。这时,除除IR6外的所有中断请求均能得到响应。外的所有中断请求均能得到响应。n特殊屏蔽方式中只能用特殊屏蔽方式中只能用SEOI命令结束中断。命令结束中断。185. 中断触发方式中断触发方式n边沿触发方式边沿触发方式n8259A将中断请求输入端出现的将中断请求输入端出现的上升沿作为中断请求信号上升沿作为中断请求信号n电平触发方式电平触发方式n中断请求端出现的高电平是有中

16、断请求端出现的高电平是有效的中断请求信号效的中断请求信号196. 数据线连接方式数据线连接方式n缓冲方式缓冲方式n8259A的数据线需加缓冲器予以驱动的数据线需加缓冲器予以驱动n8259A把把SP*/EN*引脚作为引脚作为输出输出端(输出允端(输出允许信号),用以锁存或开启缓冲器(许信号),用以锁存或开启缓冲器(enable buffer)n非缓冲方式非缓冲方式nSP*/EN*引脚为引脚为输入输入端端(slave program)n若若8259A级连,由其确定是主片级连,由其确定是主片(sp=1)(sp=1)或从或从片片 (sp=0)208259A的编程的编程n初始化编程初始化编程n8259A

17、开始工作前,必须进行初始化编程开始工作前,必须进行初始化编程n给给8259A写入写入初始化命令字初始化命令字ICW(ICW1ICW4)n中断操作编程中断操作编程n在在8259A工作期间工作期间n可以写入可以写入操作命令字操作命令字OCW(OCW1OCW3)将选将选定的操作传送给定的操作传送给8259A,使之按新的要求工作,使之按新的要求工作n还可以读取还可以读取8259A的信息,以便了解它的工作状的信息,以便了解它的工作状态态8259A内部寄存器的寻址方法内部寄存器的寻址方法CS# RD# WR#A0D4D3读写操作读写操作010000写OCW2写OCW3写ICW1写ICW2,ICW3,ICW

18、4,OCW1(顺序写入)00101x1xx00101xx读出IRR、ISR读出IMR需要CS#、A0、RD#、WR#和D4、D3的配合内部寄存器的访问方法如下表: A0 RD* WR* CS*功能功能 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 1 1 0 1写入写入ICW1、OCW2和和OCW3写入写入ICW2ICW4和和OCW1读出读出IRR、ISR和查询字和查询字读出读出IMR数据总线高阻状态数据总线高阻状态数据总线高阻状态数据总线高阻状态8259A的初始化顺序的初始化顺序 n8259的的初始化流程初始化流程如图如图(注意次序不可颠倒(注意次序不可颠倒 )写ICW1写

19、ICW2级连?写ICW3需ICW4?写ICW4NNYY8259A的控制命令字的控制命令字n初始化初始化8259A必须从必须从ICW1开始开始n写写ICW1意味着重新初始化意味着重新初始化8259An写入写入ICW1后,后,8259A的状态如下:的状态如下:n清除清除ISR和和IMR(全全0);n将中断优先级设成初始状态:将中断优先级设成初始状态:IR0最高,最高,IR7最低;最低;n设定为设定为普通(普通(一般一般)屏蔽方式;屏蔽方式;n采用非自动中断结束方式;采用非自动中断结束方式;n状态读出逻辑预置为读状态读出逻辑预置为读IRR。24ICW1初始化字初始化字1LTIMSNGLIC4D7D6

20、D5D4D3D2D1D0表示可以任意表示可以任意为为1为为0都可以(建议为都可以(建议为0) 1只能为只能为1,作为标志,作为标志中断触发方式:中断触发方式:LTIM1,电平触发方式,电平触发方式LTIM0,边沿触发方式,边沿触发方式 规定单片或级连方式:规定单片或级连方式:SNGL1,单片方式,单片方式SNGL0,级连方式,级连方式是否写入是否写入ICW4IC41,要写入,要写入ICW4IC40,不写入,不写入ICW4,即,即ICW4规定的位全为规定的位全为0ICW1芯片控制初始化命令字芯片控制初始化命令字nLTIM: 触发方式触发方式n=1 高电平触发高电平触发n=0 上升沿触发上升沿触发

21、nSNGL: 级连控制级连控制n=1 单片单片n=0 级连级连nIC4: ICW4控制控制n=1 要写要写ICW4(8086配合配合8259则此位必须为则此位必须为1)n=0 不写不写ICW4(默认(默认ICW4为全为全0)A0 D7D6 D5 D4 D3 D2 D1 D0 0 x x x 1 LTIM x SNGL IC4ICW1的标志ICW2中断向量码基值中断向量码基值nT7T3: 中断向量码的高中断向量码的高5位位nT2T0: 最低最低3位为中断源的序号位为中断源的序号IRnn000111分别对应分别对应IR0IR7n由由8259A根据中断源的序号自动填入根据中断源的序号自动填入 例如:

22、例如:若若ICW2命令字为命令字为48H,则,则IR0的中断向量码为的中断向量码为48H,IR7的中断向量码为的中断向量码为4FH,等等。,等等。 A0 D7D6 D5 D4 D3 D2 D1 D0 1 T7 T6 T5 T4 T3 x x xICW3级连控制字级连控制字 n主片的级联控制字主片的级联控制字 (位映像方式)(位映像方式)nSi=1 对应对应IRi线上连接了从片线上连接了从片 A0 D7D6 D5 D4 D3 D2 D1 D0 1 S7 S6 S5 S4 S3 S2 S1 S0从片的级联控制字 (编码方式)ID2ID0 标识码,说明本从片连接到主片的哪个IR引脚上。 000111

23、分别对应IR0IR7。 A0 D7D6 D5 D4 D3 D2 D1 D0 1 0 0 0 0 0 ID2 ID1 ID0ICW3级连控制字(续)级连控制字(续)nICW3必须与主从片的连接关系一致:必须与主从片的连接关系一致:例如,主片的例如,主片的IR4与从片的与从片的INT线连接,则线连接,则主片的主片的ICW3=10H,从片的,从片的ICW3=04H。n中断响应时,主片通过级连线中断响应时,主片通过级连线CAS2-CAS0送出被允许中断的从片标识码,各从片用送出被允许中断的从片标识码,各从片用自己的自己的ICW3与与CAS2-CAS0比较,二者一致比较,二者一致的从片才可发送中断向量码

24、。的从片才可发送中断向量码。演示演示29ICW4000SFNMBUFM/SAEOIPMD7D6D5D4D3D2D1D0嵌套方式:嵌套方式:n特殊全嵌套方式(特殊全嵌套方式(SFNM1)n普通全嵌套方式(普通全嵌套方式(SFNM0)数据线的缓冲方式:数据线的缓冲方式:n缓冲方式(缓冲方式(BUF1)n非缓冲方式(非缓冲方式(BUF0) 主片主片/从片选择:从片选择:n主片(主片(M/S=1)n从片(从片(M/S=0)中断结束方式:中断结束方式:n自动中断结束(自动中断结束(AEOI1)n非自动中断结束(非自动中断结束(AEOI0)微处理器类型:微处理器类型:n16位位80 x86( PM1)n8

25、位位8080/8085( PM0)ICW4方式控制初始化命令字方式控制初始化命令字nSFNM: 特殊全嵌套特殊全嵌套(special fully nested mode)1 特殊全嵌套方式特殊全嵌套方式0 一般全嵌套方式一般全嵌套方式nAEOI: 自动自动EOI1 自动自动EOI方式方式0 非自动非自动EOI方式方式A0 D7D6 D5 D4 D3 D2 D1 D0 1 0 0 0 SFNM BUF M/S AEOI 1BUF: 缓冲方式 M/S: 主/从缓冲选择BUF M/S 1 1 缓冲方式/主PIC 1 0 缓冲方式/从PIC 0 x 非缓冲方式/正常初始化主片初始化主片8259Amov

26、 al,11h ;写入写入ICW1:设定边沿触发,级连方式设定边沿触发,级连方式out 20h,al ;主片主片I/O地址是地址是20H和和21Hjmp intr1 ;本程序段的转移指令起延时作用,等待本程序段的转移指令起延时作用,等待8259A操作结束操作结束intr1:mov al,08h;写入写入ICW2:设定主片设定主片IR0的中断向量号为的中断向量号为08Hout 21h,aljmp intr2intr2:mov al,04h ;写入写入ICW3:设定主片设定主片IR2级连从片级连从片out 21h,aljmp intr3intr3:mov al,05h;写入写入ICW4:设定普通全

27、嵌套方式,普通中断结束方式设定普通全嵌套方式,普通中断结束方式out 21h,al中断控制器的初始化程序段初始化从片初始化从片8259Amov al,11h ;写入写入ICW1:设定边沿触发,级连方式设定边沿触发,级连方式out 0a0h,aljmp intr5intr5:mov al,70h ;写写ICW2:设定从片设定从片IR0的中断向量号为的中断向量号为70Hout 0a1h,aljmp intr6intr6:mov al,02h ;写入写入ICW3:设定从片连于主片的设定从片连于主片的IR2out 0a1h,aljmp intr7intr7:mov al, 01h ;写入写入ICW4:

28、设定普通全嵌套方式,普通中断结束方式设定普通全嵌套方式,普通中断结束方式out 0a1h,al中断控制器的初始化程序段8259A的操作命令字的操作命令字OCW nOCW用于设置用于设置8259的工作状态的工作状态n在初始化后写入,在初始化后写入,8259A工作期间,可以随工作期间,可以随时接受操作命令字时接受操作命令字OCWnOCW共有共有3个:个:OCW1OCW3nOCW的写入顺序可任意的写入顺序可任意,需要哪个,需要哪个OCW就就写入那个写入那个OCWn写入地址要求:写入地址要求:nOCW1必须写入奇地址端口必须写入奇地址端口(A0=1)nOCW2,OCW3必须写入偶地址端口必须写入偶地址

29、端口(A0=0) OCW1中断屏蔽字中断屏蔽字 nMi=1 中断请求线中断请求线IRi被屏蔽被屏蔽(不允许中断不允许中断) =0 允许该允许该IRi中断中断 nOCW1将写入将写入IMR寄存器。寄存器。nA0=1时读时读OCW1可读出设置的可读出设置的IMR内容。内容。 A0 D7D6 D5 D4 D3 D2 D1 D0 1 M7 M6 M5 M4 M3 M2 M1 M035OCW2RSLEOI00L2L1L0D7D6D5D4D3D2D1D0R、SL和和EOI配合使配合使用用产生中断结束产生中断结束EOI命命令和改变优先权顺序令和改变优先权顺序L2L0的的3位编码位编码指定指定IR引脚引脚 O

30、CW2中断结束和优先级循环中断结束和优先级循环 nL2L0: 优先级编码优先级编码nR: 优先级自动循环优先级自动循环nSL: 指定优先级指定优先级nEOI: 结束中断命令结束中断命令 R SL EOI 0 0 1 非指定非指定EOI 命令命令(NSEOI),全嵌套方式,全嵌套方式 0 1 1 指定指定EOI 命令命令(SEOI),全嵌套方式,按,全嵌套方式,按L2-L0编码复位编码复位ISR 1 0 1 NSEOI 命令,优先级自动循环命令,优先级自动循环 1 0 0 自动自动EOI,设置优先级自动循环,设置优先级自动循环 0 0 0 自动自动EOI,取消优先级自动循环,取消优先级自动循环(

31、固定优先级固定优先级) 1 1 1 SEOI 命令,按命令,按L2-L0编码循环优先级编码循环优先级(L2-L0设为最低优先级设为最低优先级) 1 1 0 按按L2-L0编码循环优先级编码循环优先级(L2-L0设为最低优先级设为最低优先级) A0 D7D6 D5 D4 D3 D2 D1 D0 0 R SL EOI 0 0 L2 L1 L037OCW30ESMMSMM01PRRRISD7D6D5D4D3D2D1D0ESMM、SMM设置中断屏蔽方式设置中断屏蔽方式P、RR和和RIS规定随后读取的规定随后读取的状态字状态字含义含义OCW3屏蔽方式和读出控制字屏蔽方式和读出控制字 nESMM: 允许使

32、能特殊屏蔽方式允许使能特殊屏蔽方式nSMM: 特殊屏蔽方式特殊屏蔽方式ESMM SMM1 1 特殊屏蔽方式置位特殊屏蔽方式置位1 0 特殊屏蔽方式复位特殊屏蔽方式复位0 x 非特殊屏蔽方式非特殊屏蔽方式P(Polling): =1 查询方式查询方式 =0 非查询方式非查询方式A0 D7D6 D5 D4 D3 D2 D1 D0 0 0 ESMM SMM 0 1 P RR RISRR: 读寄存器RIS: ISR/IRR选择RR RIS1 1 读ISR1 0 读IRR0 x 无效39读取读取8259状态状态n查询方式允许查询方式允许8259A不工作于中断方式,而是以查不工作于中断方式,而是以查询方式

33、工作询方式工作nCPU先写一个先写一个D2=1的的OCW3,再对同一地址读入,即可得,再对同一地址读入,即可得到如下状态字节(查询字):到如下状态字节(查询字): I x x x x R2 R1 R0 I=1表示有中断请求,中断请求号为表示有中断请求,中断请求号为R2-R0 此查询步骤可反复执行,以响应多个同时发生此查询步骤可反复执行,以响应多个同时发生 的中断。的中断。 nCPU可读出可读出IRR、ISR、IMR和查询字和查询字nA0为低,由为低,由OCW3中中RR和和RIS位设定读取位设定读取IRR或或ISR,由,由OCW3中中P位设定读取查询字位设定读取查询字n而而A0引脚为高电平时读取

34、的都是引脚为高电平时读取的都是IMR40命令字和状态字的区别方法命令字和状态字的区别方法 利用读写信号区别写入的控制寄存器和利用读写信号区别写入的控制寄存器和读出的状态寄存器读出的状态寄存器 利用地址信号区别不同利用地址信号区别不同I/O地址的寄存器地址的寄存器 由控制字中的标志位说明是哪个寄存器由控制字中的标志位说明是哪个寄存器 由芯片内顺序控制逻辑按一定顺序识别由芯片内顺序控制逻辑按一定顺序识别不同的寄存器不同的寄存器 由前面的控制字决定后续操作的寄存器由前面的控制字决定后续操作的寄存器接口电路中常用的方法接口电路中常用的方法8259A编程举例编程举例n按以下要求初始化按以下要求初始化82

35、59A:n接口地址为接口地址为20H和和21H;n中断为上升沿触发;单片中断为上升沿触发;单片8259A;不写;不写ICW4;n与与IR0-IR3对应的中断向量码为对应的中断向量码为08H-0BH;nIR4-IR7不使用。不使用。n根据要求,各初始化参数及工作参数如下:根据要求,各初始化参数及工作参数如下:nICW1 = 00010010 = 12HnICW2 = 08H 中断向量码中断向量码 nOCW1 = 11110000 = 0F0H 中断屏蔽字中断屏蔽字 8259A编程举例(续)编程举例(续)初始化程序如下:INIT8259A:MOVDX,20H;A0=0,写ICW1MOVAL,12H

36、;上升沿触发,单片,不写ICW4OUTDX,ALMOVDX,21H;A0=1,写ICW2,OCW1MOVAL,08H;ICW2OUTDX,ALMOVAL,0F0H;OCW1:屏蔽IR4-IR7OUTDX,AL438259A在在IBM PC /XT系列机上的应用系列机上的应用448259A在在IBM PC/AT系列机上的应用系列机上的应用45应用注意事项应用注意事项n利用上升沿做为中断请求利用上升沿做为中断请求IRQ的有效信号的有效信号nIRQ0IRQ7的中断向量号依次为的中断向量号依次为08H0FH,IRQ8IRQ15依次为依次为70H77Hn采用普通全嵌套优先权方式,中断优先权从高到采用普通

37、全嵌套优先权方式,中断优先权从高到低顺序为低顺序为IRQ0IRQ2、IRQ8IRQ15、IRQ3IRQ7,且不能改变,且不能改变n采用普通中断结束采用普通中断结束EOI方式,需要在中断服务程方式,需要在中断服务程序最后发送普通序最后发送普通EOI命令命令n一般采用普通屏蔽方式,通过写入一般采用普通屏蔽方式,通过写入IMR允许中断允许中断,但注意不要破坏原屏蔽状态,但注意不要破坏原屏蔽状态PC机外部中断程序设计机外部中断程序设计1)主程序)主程序保存原中断向量保存原中断向量设置自己的中断向量设置自己的中断向量初始化堆栈指针初始化堆栈指针设置设置8259A的中断屏蔽字(其他的已由操作系统设置)的中

38、断屏蔽字(其他的已由操作系统设置)STI2)中断服务程序)中断服务程序保存所用到的寄存器内容保存所用到的寄存器内容中断服务程序主体中断服务程序主体恢复进入时保存的寄存器内容恢复进入时保存的寄存器内容发发EOI命令(必要时可提前)命令(必要时可提前)STI(必要时可提前)(必要时可提前)IRET编写外部可屏蔽中断服务程序,需注意:编写外部可屏蔽中断服务程序,需注意:n不要忘记发送中断结束命令不要忘记发送中断结束命令n一般只能采用存储单元传递参数一般只能采用存储单元传递参数n不要使用不要使用DOS系统功能调用系统功能调用n中断服务程序尽量短小中断服务程序尽量短小47中断程序举例中断程序举例nPC机

39、中主机中主8259A的的I/O地址为地址为20H和和21H,中断,中断向量码为向量码为08H;n中断请求从中断请求从IR6引入,故引入,故中断类型号为中断类型号为0EH;n主程序如下:主程序如下:;保存原来的中断向量保存原来的中断向量movah,35hmoval,0eh;中断类型码;中断类型码int21h;取原中断向量(在;取原中断向量(在es:bx中)中)movsave_ip,bx;保存原来的中断向量;保存原来的中断向量movsave_cs,es;设置自己的中断向量pushdsmovdx,offset my_intmovax,seg my_intmovds,ax;DS:DX的内容为my_in

40、t的首地址movah,25hmoval,0ehint21h ;设置自己的中断向量popds;初始化堆栈指针movsp,my_stack_top ;设置8259A的中断屏蔽字inal,21handal,10111111b;开放IR6中断out21h,alsti n子程序如下:子程序如下:my_int proc farpusha popamoval,20h;EOI命令,命令,00100000B out20h,al;写;写OCW2stiiretmy_int endp51例:可屏蔽中断服务程序举例例:可屏蔽中断服务程序举例n8259A的的IRQ0(向量号为(向量号为08H)中断请求)中断请求来自定时器

41、来自定时器8253,每隔,每隔55ms产生一次产生一次n本程序的本程序的08H号中断服务程序,每次中断号中断服务程序,每次中断显示一串信息,显示显示一串信息,显示10次次n用内存单元(共享变量)在主程序与外部用内存单元(共享变量)在主程序与外部中断服务程序之间传递参数:中断次数中断服务程序之间传递参数:中断次数n显示信息也安排在共同的数据段中显示信息也安排在共同的数据段中数据段数据段intmsg db A 8259A Interrupt !db 0dh,0ah,0counter db 0 ;中断次数记录单元;中断次数记录单元举例保存中断向量保存中断向量mov ax,3508h ;获取原中断向量

42、;获取原中断向量int 21hpush bx;保存偏移地址保存偏移地址push es;保存段基地址保存段基地址设置中断向量设置中断向量cli;关中断;关中断push ds;设置新中断向量;设置新中断向量mov ax,seg new08hmov ds,axmov dx,offset new08hmov ax,2508h ;al:中断向量号中断向量号08Hint 21hpop ds设置中断寄存器设置中断寄存器in al,21h ;读出读出IMRpush ax;保存原保存原IMR内容内容and al,0feh;允许允许IRQ0,其他不变,其他不变out 21h,al;设置新;设置新IMR内容内容mo

43、v counter,0 ;设置中断次数初值设置中断次数初值sti;开中断开中断循环等待中断循环等待中断;本例的主程序仅循环等待中断;本例的主程序仅循环等待中断start1: cmp counter,10jb start1;中断中断10次退出次退出中断中断就在主程序循环当中就在主程序循环当中new08h proc;中断服务程序;中断服务程序sti;开中断开中断push ax;保护寄存器保护寄存器push bxpush dsmov ax,data;取数据段的段地址取数据段的段地址mov ds,ax ;设置数据段设置数据段DS进入中断服务程序进入中断服务程序中断处理中断处理inc counter;中

44、断次数加中断次数加1mov si,offset intmsg ;显示信息显示信息call dpstri ;调用显示子程序;调用显示子程序显示字符串显示字符串dpstriproc;显示字符串子程序显示字符串子程序push ax;入口参数:入口参数:DS:SI=字符串首址字符串首址push bxdps1:lodsb;字符串读取字符串读取AL=DS:SI;然后;然后SI=SI+1cmp al,0jz dps2显示字符串显示字符串(续)(续)mov bx,0;调用调用ROM-BIOS功能显示功能显示al中的字符中的字符mov ah,0ehint 10hjmp dps1dps2:pop bxpop ax

45、retdpstriendp退出中断服务程序退出中断服务程序mov al,20h;发送;发送EOI命令命令out 20h,alpop ds;恢复寄存器恢复寄存器pop bxpop axiret;中断返回中断返回new08h endp主程序结束主程序结束cli;关中断;关中断pop ax;恢复;恢复IMRout 21h,alpop dx;恢复原中断向量恢复原中断向量pop dsmov ax,2508hint 21hsti;开中断;开中断mov ax,4c00hint 21h ;返回;返回DOSA 8259A Interrupt !A 8259A Interrupt ! A 8259A Interr

46、upt ! A 8259A Interrupt ! A 8259A Interrupt ! A 8259A Interrupt !A 8259A Interrupt ! A 8259A Interrupt ! A 8259A Interrupt ! A 8259A Interrupt ! 63驻留中断服务程序驻留中断服务程序驻留驻留TSR(Terminate and Stay Resident)程序)程序n用户程序运行后仍然保存在主存中,可以用户程序运行后仍然保存在主存中,可以让其他程序使用让其他程序使用n利用利用DOS功能调用功能调用31H代替代替4CH终止程序终止程序n小型驻留程序常编写成

47、小型驻留程序常编写成COM程序程序n驻留程序也可以编写成驻留程序也可以编写成EXE程序程序n需要驻留内存的程序段要写在前面需要驻留内存的程序段要写在前面64教学要求n1. 熟悉熟悉8088的中断类型、中断响应的中断类型、中断响应过程、中断向量表过程、中断向量表n2. 掌握内部中断服务程序的编写掌握内部中断服务程序的编写n3. 理解理解8259A的内部结构、寄存器的内部结构、寄存器作用、中断过程作用、中断过程n4. 掌握掌握8259A的普通全嵌套优先权、的普通全嵌套优先权、普通中断结束、边沿触发方式普通中断结束、边沿触发方式65教学要求(续)n5. 了解的了解的8259A的的ICW和和OCW,注意命令字和状

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论