您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 第7章微型计算机中断系统-2
7.3.48259A的编程方法可编程中断控制器8259A的工作状态和操作方式由CPU通过命令字进行控制的。8259A有两类命令字:初始化命令字ICW(4个)操作命令字OCW(3个)7个CPU控制寄存器分成两组:一组用做存ICW另一组存OCW7.3.48259A的编程方法两组7个寄存器占用2个I/O端口地址(在PC机中8259A的端口地址为20H和21H):A0命令字0(20H)ICW1、OCW2、OCW31(21H)ICW2、ICW3、ICW4、OCW17.3.48259A的编程方法D4D3命令字1×ICW100OCW201OCW3ICW1、OCW2、OCW3由A0、D4和D3三位状态寻址:ICW2、ICW3、ICW4在ICW1后,按顺序写入。7.3.48259A的编程方法写ICW1A0=0,D4=1写ICW2A0=1SNGL=1IC4=1写ICW3A0=1写ICW4A0=1是否是否按顺序对A0=1端口写入命令字7.3.48259A的编程方法当计算机刚启动时,用初始化程序设定ICW,即由CPU按次序发送24个不同格式的ICW,用来建立起8259A操作的初始工作状态,此后的整个工作过程中该状态保持不变。操作命令字(OCW)用于动态控制中断处理,是在需要改变或控制8259A操作时随时发送的。注意:当发出ICW或OCW时,CPU中断申请引脚INTR应关闭(使用CLI指令)。7.3.48259A的编程方法对8259A的编程分为两类:初始化编程操作过程编程8259A的软件编程必须按照先初始化编程,然后进行操作方式编程的顺序。7.3.48259A的编程方法初始化编程初始化编程的主要任务:(1)复位芯片。(2)设定中断请求信号有效的形式。(3)设定是单片,还是级联。(4)设定中断类型号。(5)设定优先排队规则。(6)设定中断处理结束时的结束规则。7.3.48259A的编程方法ICW1ICW1称为:芯片控制初始化命令字,用于启动8259A中的初始化顺序。该字写入8位的芯片控制寄存器。写ICW1的标记为:A0=0,D4=1。7.3.48259A的编程方法7.3.48259A的编程方法ICW1D7~D5:在8086/8088系统中不用(000)。D4:设置为1,指示ICW1的标志位。D3(LTIM):设定中断请求信号触发的方式。1:电平触发方式;0:边沿触发方式。D2(ADI):在8086/8088系统中不起作用(0)。D1(SNGL):1:单片方式,0D0(IC4):1:设置ICW4,0:不设置ICW4。7.3.48259A的编程方法ICW1ICW1可完成初始化任务的前三项:(1)复位芯片。(2)设定中断请求信号有效的形式。(3)设定是单片,还是级联。注意:在写入ICW1后,除完成ICW1规定的功能外,同时复位芯片,隐含有清IMR、默认中断优先级为IR0IR1……IR7等的功能。7.3.48259A的编程方法举例:PC/XT机设置的ICW1=13H,端口地址为20H。MOVAL,13HOUT20H,AL;单片,上升沿有效,写ICW413H=000100117.3.48259A的编程方法ICW2ICW2:中断类型码命令字。该字写入8位的中断类型寄存器。写ICW2的标记为:A0=1。D7~D3(T7~T3):中断向量类型码。中断类型码的低3位由中断请求的引脚IR0~IR7决定(000~111)。D2~D0:在8086/8088系统中不用(000)。7.3.48259A的编程方法7.3.48259A的编程方法IBMPC/XT机中由8259A管理的8级外部中断IR0~IR7的中断类型码为08H~0FH。举例:设置的ICW2=08H,端口地址为21H。MOVAL,08HOUT21H,ALIR3对应的中断类型码为0BH。7.3.48259A的编程方法ICW3ICW3:主片/从片的初始化命令字。它只用于级联方式。该字写入8位的主/从标志寄存器。写ICW3的标记为:A0=1。(1)对于主8259A(输入端SP#=1)(2)对于从8259A(输入端SP#=0)7.3.48259A的编程方法ICW3(1)对于主8259A(输入端SP#=1D7~D0(S7~S0):当某位为1时,表示该位对应的IRi端接一从片8259A。例如:当ICW3=F0H时,则表示在IR7、IR6、IR5、IR4引脚上接有8259A从片,而IR3、IR2、IR1、IR0引脚上未接从片。注意:清0的位,其对应的IRi上可直接连接外设来的中断请求信号端。7.3.48259A的编程方法7.3.48259A的编程方法ICW3(2)对于从8259A(输入端SP#=0)控制字格式如图所示7.3.48259A的编程方法在IBMPC/XT机中,仅用1片8259A,能提供8级中断请求。在IBMPC/AT机中用2片8259A组成级联方式,最多可以提供15级中断请求。7.3.48259A的编程方法7.3.48259A的编程方法ICW4ICW4:方式控制初始化命令字。该字写入8位的方式控制寄存器。写ICW4控制字标记为:A0=1。是否需要ICW4由应用决定,只有在需要特殊全嵌套方式、缓冲方式、中断自动结束方式时,才设置ICW4,否则,可不设置ICW4。同时,是否需要ICW4,应在ICW1中指出。当不设置ICW4时,缺省为:非特殊全嵌套方式、非缓冲方式、非中断自动结束方式。7.3.48259A的编程方法7.3.48259A的编程方法ICW4D7~D5:8088模式下为000BD4(SFNM):中断嵌套位。0:一般全嵌套方式。1:特殊全嵌套方式。一般全嵌套方式:在处理中断的过程中,只有当更高级的中断请求到来时,才能进行嵌套。特殊全嵌套方式:在处理某一级中断时,允许响应或嵌套同级的中断请求。通常用于多个8259A级联的系统。7.3.48259A的编程方法ICW4D3(BUF):规定8259A是否工作于缓冲方式。0:非缓冲方式1:缓冲方式。D2(M/S#):在缓冲方式下用来表示本片是主片还是从片。0:从片1:主片当BUF=0时则M/S#不起作用。7.3.48259A的编程方法ICW4D1(AEOI):规定8259A中断的结束方式。0:正常中断结束。要求CPU发命令去复位ISRi。IBMPC采用该方式。1:自动结束中断方式。在CPU响应中断请求过程中的第2个INTA脉冲上升沿,自动复位ISR中的相应位。D0(μPM):规定8259A工作于哪种CPU系列。1:工作于8086/8088系统中0:工作于8080/8085系统中7.3.48259A的编程方法注意初始化从写入ICW1开始,然后顺序写入ICW2、ICW3、ICW4。虽然ICW2、ICW3、ICW4地址相同,但顺序是固定的,因而不会发生错误。ICW1、ICW2是必须写入的。是否写入ICW3、ICW4,分别由ICW1的SNGL和IC4位的状态决定。7.3.48259A的编程方法写ICW1A0=0,D4=1写ICW2A0=1SNGL=1IC4=1写ICW3A0=1写ICW4A0=1是否是否按顺序对A0=1端口写入命令字7.3.48259A的编程方法操作过程编程初始化完成后,8259A进入响应中断的工作状态,准备接收中断请求信号。在8259A工作其间,可以通过操作命令字OCW使其以不同的方式操作。操作过程编程主要完成以下任务:对中断请求的屏蔽、优先级循环控制、中断结束方式、对内部控制寄存器的查询等。8259A有三个操作命令字:OCW1、OCW2、OCW3。7.3.48259A的编程方法OCW1写OCW1的标记为:A0=1。OCW1用来写入IMR寄存器。当某一位Mi=1时,则对应于该位的中断请求就受到屏蔽;当某一位Mi=0时,则对应于该位的中断请求得到例如:OCW1=15H,则IR4、IR2和IR0引脚上的中断请求被屏蔽,其他引脚上的中断请求则允许进入系统。7.3.48259A的编程方法7.3.48259A的编程方法OCW2OCW2用来设置中断优先级循环方式和中断结束方式的操作命令字。写OCW2的标记为:A0=0、D3=D4=0。OCW2具有两方面的功能:①可以用来设置8259A采用优先级循环方式;②它可以组成中断结束命令。7.3.48259A的编程方法7.3.48259A的编程方法OCW2R位:决定系统的中断优先级是否按自动循环方式设置。1:采用优先级自动循环方式;0:采用优先级非自动循环方式。优先级自动循环方式用于多个中断源其优先级相等的场合。SL位:决定OCW2中的L2、L1、L0是否有效,如为1则3位都有效,否则为无效。7.3.48259A的编程方法OCW2EOI位:中断结束命令。当EOI为1时,使当前ISR中的对应位ISRi复位。L2、L1、L0有两个功能:SL为1时,L2、L1、L0有效。一是当OCW2为特殊的中断结束命令时,L2、L1、L0将指出要清除当前ISR中的哪一位;二是当OCW2为特殊的优先级循环方式命令时,L2、L1、L0将指出循环开始时哪个中断的优先级最低。7.3.48259A的编程方法中断级别编码特征位A00RSLEOI00L2L1L0D7D6D5D4D3D2D1D000001100201031104001510160117111001EOI方式011特殊EOI(按编码复位ISR)101EOI且优先权自动循环100设置优先权自动循环000清除优先权自动循环111EOI且按编码循环优先权110按编码循环优先权010OCW2无意义指定最低级别指定结束/最低级别7.3.48259A的编程方法OCW3OCW3是多功能操作命令字写OCW3的标记为:A0=0、D4=0、D3=1。7.3.48259A的编程方法OCW3OCW3命令字有3项功能:①设置和撤消特殊屏蔽方式;②设置中断查询方式;③设置对8259A内部寄存器的读出命令。7.3.48259A的编程方法1—查询命令随后读ISR清除特殊屏蔽设置特殊屏蔽无用0ESMMSMM01PRRRIS00011011特征位00011011无用0—非查询随后读IRRD7D6D5D4D3D2D1D0A07.3.48259A的编程方法OCW3D7位:无关位,可设为任意值,一般设为0。D6位:ESMM位,即允许特殊屏蔽方式位。该位为1时SMM位才有意义。D5位:SMM即特殊屏蔽方式位。1:设置特殊屏蔽方式;0:清除特殊屏蔽方式。D4、D3位:是特征位,01B。7.3.48259A的编程方法OCW3D2位:P位。1:该OCW3用做查询命令0:非查询方式。D1、D0位:RR位和RIS位。这两位的组合用于指定对中断请求寄存器(IRR)和中断服务寄存器(ISR)内容的读出。D1D0=10时,表明紧接着要读出IRR的值;D1D0=11时,表明紧接着要读出ISR的值。7.3.48259A的编程方法特殊屏蔽方式的设置与清除ESMM、SMM=11时:选择特殊屏蔽方式ESMM、SMM=10时:清除特殊屏蔽方式选择特殊屏蔽方式:OCW3为01101000B(68H)清除特殊屏蔽方式:OCW3为01001000B(48H)7.3.48259A的编程方法查询的设置与清除P=1时:选择查询方式P=0时:选择非查询方式选择查询方式:OCW3为00001100B(0CH)选择非查询方式:OCW3为00001000B(08H)7.3.48259A的编程方法读8259A的状态(IMR、IRR、ISR)1、读IMR:INAL,21H(A0=1的端口)2、读IRR:MOVAL,00001011BOUT20H,ALINAL,20H3、读ISR:MOVAL,00001010BOUT20H,ALINAL,20H7.3.48259A的编程方法结束7.3.58259A应用举例在IBMPC/XT机中,只用1片8259A中断控制器,用来提供8级中断请求,其中IR0优先级最高,IR7优先级最低。它们分别用于日历时钟中断、键盘中断、保留、网络通信、异步通信中断、硬盘中断、软盘中断及打印机中断。8259A片选地址为20H、21H。7.3.58259A应用举例8259A
本文标题:第7章微型计算机中断系统-2
链接地址:https://www.777doc.com/doc-4726493 .html