您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 第三章8098中断系统
第四章8098中断系统一.堆栈SP(18H,19H)SCALLLCALLRET二.为什么要用中断分时操作实时处理故障处理三.中断程序的结构ORG2000HDCWTIMINTDCWADINTDCWHSIINTDCWHSOINTDCWHSI0INTDCWSOFTINTDCWSIOINTDCWEXINTORG2080HMAIN:LDSP,#0F0HDILDBIOC0,+80HLDBINTMASK,#HCLRBINTPENDINGEILOOP:……(主程序)……TIMINT:PUSHF(定时器中断服务程序)POPFRETADINT:PUSHF(AD转换结束中断服务程序)POPFRETHSIINT:PUSHF……POPFRETHSOINT:PUSHF……POPFRETEXINT:PUSHF……POPFRET四.中断程序一例ORG200EHDCWEXINTORG2080HMAIN:LDSP,#0F0HDILDBINTMAS,#80HCLRBINTPENEILDB20H,#0FFHLOOP:NOPNOPNOPSJMPLOOP;EXINT:PUSHFCMPB20H,#00HJES1ORBP2,#20H;P2.5=1SJMPS2S1:ANDBP2,#0DFH;P2.5=0S2:NOTB20HPOPFRET五.中断源与中断向量8级中断请求源:外部中断2个,内部中断6个中断优先级控制逻辑六.与中断有关的寄存器1.中断登记寄存器(INT_PENDING/09H)当有中断产生,中断登记寄存器相应的位置1,当CPU相应中断后,中断登记寄存器相应的位置清零。2.中断屏蔽寄存器(INT_MASK/08H)中断屏蔽寄存器属于PSW的低八位,独立控制哪些中断申请可以被CPU响应。当中断屏蔽寄存器的某位置1,中断申请可能由CPU响应。当中断屏蔽寄存器的某位清零,即使有中断申请,CPU也不会响应。3.中断允许位I(PSW.9)中断总控制位,当执行关中断指令DI时,PSW.9=0,CPU不响应任何中断;当执行开中断EI时,PSW.9=1,CPU响应在中断屏蔽寄存器开放的中断申请。注意:当中断登记寄存器有多个中断申请,且中断屏蔽寄存器相应位是1,这时根据不同中断的优先级来确定响应哪个中断。七.中断的处理过程1.响应中断的条件a)PSW.9=1b)INT_MAS相应位置1c)INT_PEN相应位置1d)中断优先级高于同时申请的其他中断2.中断的响应过程当CPU响应某个中断,把INT_PENDING中的相应位清零,将当前的PC值压入堆栈,然后CPU根据中断向量表提供的地址,完成一次硬件调用,转到相应的中断服务程序运行,当中断服务程序运行完,由RET指令完成从堆栈中恢复中断时主程序的PC值值,使主程序从中断处接着运行。3.数据保护a)若主程序和中断服务程序有对同一地址的数据的操作,中断服务程序可能改变这些地址中的内容,若想保持主程序中的数据不变,在中断服务程序中对这些数据进行保护。b)若中断服务程序的指令可能影响PSW的标志位,可能影响主程序中的条件判断指令,应在中断服务程序中对PSW保护。八.中断的响应时间从中断源发出中断请求到执行中断服务程序的第一条指令,需要一段响应时间:第一段:中断申请时刻离正在执行的指令的结束时刻不到4个状态周期,当前指令执行完,再执行一条指令,才响应中断。中断申请时刻离正在执行的指令的结束时刻大于等于4个状态周期,当前指令执行完,立即响应中断。第二段:从响应中断到按中断向量调用中断程序,需用21个状态周期。若堆栈设在外部RAM,则需增加3个状态周期。原因:当执行下列指令后,中断必须等到执行完下一条指令后才能得到响应。EI、DI、PUSHF、POPF、TRAP九.使用中断应该注意的问题提供正确的中断向量初始化堆栈指针,保护现场设置中断屏蔽寄存器中断登记寄存器的清零要注意IO部件的预置开关中断EI、DIRET返回主程序
本文标题:第三章8098中断系统
链接地址:https://www.777doc.com/doc-2212103 .html