- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章8098中断系统.
第四章 8098中断系统
堆栈
SP 18H,19H
SCALL
LCALL
RET
为什么要用中断
分时操作
实时处理
故障处理
中断程序的结构
ORG 2000H
DCW TIMINT
DCW ADINT
DCW HSIINT
DCW HSOINT
DCW HSI0INT
DCW SOFTINT
DCW SIOINT
DCW EXINTORG 2080H
MAIN: LD SP,#0F0H
DI
LDB IOC0,+80H
LDB INTMASK,# H
CLRB INTPENDING
EI
LOOP: ……
主程序
……
TIMINT: PUSHF
定时器中断服务程序
POPF
RET
ADINT: PUSHF
AD转换结束中断服务程序
POPF
RET
HSIINT: PUSHF
……
POPF
RET
HSOINT: PUSHF
……
POPF
RET
EXINT: PUSHF
……
POPF
RET
中断程序一例ORG 200EH
DCW EXINTORG 2080H
MAIN: LD SP,#0F0HDILDB INTMAS,#80HCLRB INTPENEILDB 20H,#0FFH
LOOP: NOPNOPNOPSJMP LOOP
;
EXINT: PUSHFCMPB 20H,#00HJE S1ORB P2,#20H;P2.51SJMP S2
S1: ANDB P2,#0DFH;P2.50
S2: NOTB 20HPOPFRET
中断源与中断向量
8级中断请求源:外部中断2个,内部中断6个
中断优先级控制逻辑
与中断有关的寄存器
中断登记寄存器INT_PENDING/09H
当有中断产生,中断登记寄存器相应的位置1,当CPU 相应中断后,中断登记寄存器相应的位置清零。
中断屏蔽寄存器INT_MASK/08H
中断屏蔽寄存器属于PSW 的低八位,独立控制哪些中断申请可以被CPU响应。当中断屏蔽寄存器的某位置1,中断申请可能由CPU响应。当中断屏蔽寄存器的某位清零,即使有中断申请,CPU也不会响应。
中断允许位IPSW.9
中断总控制位,当执行关中断指令DI时,PSW.90,CPU不响应任何中断;当执行开中断EI时,PSW.91,CPU响应在中断屏蔽寄存器开放的中断申请。
注意:当中断登记寄存器有多个中断申请,且中断屏蔽寄存器相应位是1,这时根据不同中断的优先级来确定响应哪个中断。
中断的处理过程
响应中断的条件
PSW.91
INT_MAS 相应位置1
INT_PEN 相应位置1
中断优先级高于同时申请的其他中断
中断的响应过程
当CPU 响应某个中断,把INT_PENDING 中的相应位清零,将当前的PC 值压入堆栈,然后CPU 根据中断向量表提供的地址,完成一次硬件调用,转到相应的中断服务程序运行,当中断服务程序运行完,由RET 指令完成从堆栈中恢复中断时主程序的PC 值值,使主程序从中断处接着运行。
数据保护
若主程序和中断服务程序有对同一地址的数据的操作,中断服务程序可能改变这些地址中的内容,若想保持主程序中的数据不变,在中断服务程序中对这些数据进行保护。
若中断服务程序的指令可能影响PSW 的标志位,可能影响主程序中的条件判断指令,应在中断服务程序中对PSW 保护。
中断的响应时间
从中断源发出中断请求到执行中断服务程序的第一条指令,需要一段响应时间:
第一段:中断申请时刻离正在执行的指令的结束时刻不到4 个状态周期,当前指令执行完,再执行一条指令,才响应中断。中断申请时刻离正在执行的指令的结束时刻大于等于4 个状态周期,当前指令执行完,立即响应中断。
第二段:从响应中断到按中断向量调用中断程序,需用21 个状态周期。若堆栈设在外部RAM,则需增加3 个状态周期。
原因:当执行下列指令后,中断必须等到执行完下一条指令后才能得到响应。
EI、DI、PUSHF、POPF、TRAP
使用中断应该注意的问题
提供正确的中断向量
初始化堆栈指针,保护现场
设置中断屏蔽寄存器
中断登记寄存器的清零
要注意IO部件的预置
开关中断EI、DI
RET返回主程序
文档评论(0)