- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
mcs-96系列单片微机的中断系统
1 未提出要明确的事实
在许多文献中,mcs-96系列相机的中断优先性软件方法已被强调,但没有必要深入研究这一事实。事实上, 该系列单片机的中断系统颇具特色, 其中断优先级的控制极具灵活性, 用户可采用软、硬件结合的方法随心所欲地安排各类中断源的优先级。
2 外中断及采用一定强度的优先级别比较技术
MCS—96系列单片机中断系统的硬件优先级排队电路为各类中断源规定了优先级顺序。这种中断优先级的结构有如下特点。
(1) 硬件排队电路并不能保证各中断源的优先级。这是因为在某个中断源的中断请求被CPU响应后, INT-PENDING中的相应位即被清零, 这意味着正在被服务的中断源不能参加有新的中断请求后的优先权比较, 倘未采取一定措施, 就会造成级别高的中断服务被级别较低的中断申请所打断的后果。譬如外中断 (优先级最高) 和定时器溢出中断 (优先级最低) 同时产生, 在系统已开放中断的情况下, 外中断的申请将首先被CPU所响应, 进入其中断服务程序后, 定时器溢出的中断申请又被优先权编码电路加以比较, 由于INT-PRNDING中对应外中断的位已被清零, 这时参与优先级比较的仅有定时器溢出中断, 因而外中断的服务过程被打断, CPU转向定时器溢出的中断服务程序, 直到服务完毕后, 才返回为外中断继续服务。不难看出, 在多个中断源提出中断申请的情况下, 事实上最先得到完整服务的将是级别最低的中断源, 级别最高的中断服务反而要等到最后才可完成。这也意味着最高级别的中断源实质上变成了最低级别。
(2) 可采用软、硬件结合的方法实现特定的优先级别顺序。虽然如上所述, 硬件排队电路不能保证按指定优先级的高低顺序实现中断嵌套, 但可采取一定的软件措施来实现设计人员所预想的优先级排队顺序。
3 实现指定优先顺序的软件措施
为实现特定的中断优先级顺序, 需在软件上采取相应的措施, 下面分四种情况予以讨论。
3.1 中断服务程序
硬件电路规定了8种中断源的优先级顺序, 即外中断的优先级最高, 串行口中断次之, ……, 而定时器溢出中断的级别最低。实现硬件所规定的这种优先级有两种含义:一是在多个中断源提出中断申请时, CPU优先响应级别最高的请求;二是高级别的申请可打断低级别的服务过程, 但反之不可, 其具体做法如下:
(1) 首先在主程序中设置INT—MASK, 执行指令LDB INT—MASK, #0FFH, 使其内容为全1, 以开放全部的中断, 使任一中断源或多个中断源提出中断申请时, CPU全部予以响应。
(2) 在每一中断服务程序的开始便执行DI或PUSHF指令, 以禁止所有的中断, 而后将INT-MASK中优先级低于本次中断的所有位清零, 而高于本次中断的所有位置1, 再执行EI指令开放中断。如此做之后, 在该中断服务程序执行的过程中, 低级别的中断不可能实现中断嵌套而高级别的中断则可以。在中断服务程序的结尾处, 应再次将INT-MASK置为FFH, 以使CPU在中断返回后能再次响应任何中断。这样就保证了硬件所规定的优先权顺序。
下面是采用上述方法的HSO中断服务程序的开始和结束处所需使用的指令示例。
PUSHF指令的作用是保护PSW的内容并关总中断开关;由于HSO事件中断对应INT-MASK中的D3位, 因此LDB INT-MASK, #0F0H指令的作用是只允许高于HSO事件的中断;POPF的指令是恢复PSW, 这样也使INT-MASK=0FFH, 因为在主程序中原已将FFH送入该寄存器。
3.2 中断服务程序情况
做法比较简单, 在进入中断服务程序后便关中断 (使PSW.9=0) , 直至中断服务程序结束时才开中断。程序示例如下:
PUSHF使PSW.9=0, 从而禁止了所有中断。在中断服务程序的运行过程中不准开放中断, 直到程序结束。这样就保证了任何中断申请都不能打断正在进行的服务过程。
3.3 总中断源
这是指用户安排特定的中断源的中断申请能够打断任何中断服务程序而实现中断嵌套, 保证在任何情况下这一指定的中断源都能得到优先的服务。具体做法是在每一中断服务程序的开始先关总中断, 而后设置INT-MASK, 只开放设定为最高级别的中断。
假设指定A/D转换结束中断能够中断任何服务过程, 则外中断的中断服务程序设计如下:
3.4 中断分级设置
可根据系统的实际需要, 重新安排各中断源的优先级, 使之不同于硬件所规定的中断优先级。具体做法是在每一中断服务程序的开始即关中断, 然后对INT-MASK进行设置, 只开放预定的高级别的中断。假设需设定优先级由高至低的顺序依次为:定时器溢出中断、外中断、A/D转换结束中断, 则对应的三个中断服务程序可设计如下:
在A/D转换结束的中断服务程序中开放了定时器溢
文档评论(0)