中断-课程中心-山东大学.PPT

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中断-课程中心-山东大学

2、使用中断常出现的问题 4)中断程序尽量短小 中断处理子程序应尽量短小, 这样其执行速度更快。 例如, 接收串行中断的处理程序应该从SBUF中读一个字节,并且将其复制到用户定义的临时缓冲区中,然后退出中断程序; 而缓冲区中数据的进一步处理应由主程序来处理。 中断的时间消耗越少,那么在中断发生时就可以更快的响应和处理其他的中断。 * 2、使用中断常出现的问题 5)注意中断标志的清除问题 某些中断的中断标志不是在响应相应中断时由硬件自动清除的, 用户需要在中断处理程序返回前,使用指令将中断标志位清“0”, 否则,中断返回后,还将产生一次新的中断。 例如串行通信中断、ADC中断、SPI中断、低电压检测中断以及PCA中断。 * 第6章 作业 6.6, 6.7, * ① ② ③ ④ * * * * 6.2.2 单片机中断处理过程 1、单片机响应中断的条件和过程 当中断源向CPU发出中断请求时, 如果中断条件满足, CPU将进入中断响应周期。单片机响应中断的条件是: ①中断源有请求。(相应中断标志位为1) ②相应的中断允许位设置为1。 ③CPU中断允许总控制位开放 (EA=1); ④无同级或高级中断正在处理。(二级中断嵌套) * 在每个指令周期的最后一个时钟周期,CPU对各中断源采样,并设置相应中断标志位。 CPU在下一指令周期的最后一个时钟周期按优先级顺序查询各中断标志, 若查到某中断标志为1, 将在下一指令周期按优先级的高低顺序响应中断并进行处理。 (二级允许控制) 1、单片机响应中断的条件和过程 CPU响应中断时,将执行如下操作: ①当前正被执行的指令执行完毕; ② (下一条指令)PC值被压入堆栈;(断点保护(自动)) ③现场保护; ④阻止同级别其他中断; ⑤将中断服务程序ISR的入口地址(中断向量地址)装载到程序计数器PC; ⑥执行相应的中断服务程序ISR。 ⑦中断服务程序ISR中, 汇编以RETI(中断返回)指令结束,C语言以最外层}结束。将PC值从堆栈中取回, 之后从程序的断点处继续执行。 * (恢复断点) (有恢复现场) 1、单片机响应中断的条件和过程 由表6.2看, 每个中断服务程序入口地址之间只相隔8个单元, 一般中断服务程序的长度都超过8个字节, 这时可将中断服务程序存放到存储器的其他区域, 然后在中断入口处安排一条转移指令LJMP,转向中断服务程序。 例如: ORG 0003H ;外部中断0入口地址 LJMP X0_ISR ··· ;其他程序代码 X0_ISR: ;外部中断0服务程序 ··· RETI * 1、单片机响应中断的条件和过程 使用C语言编写单片机中断应用程序时, 用中断号区分每一个中断。例如, void X0_ISR(void) interrupt 0{} //外部中断0中断函数 void T0_ISR (void) interrupt 1{} //定时器T0 中断函数 void X1_ISR(void) interrupt 2{} //外部中断1中断函数 void T1_ISR (void) interrupt 3{} //定时器T1中断函数 void UART1_ISR (void) interrupt 4{} //串行口1中断函数 void ADC_ISR (void) interrupt 5{} //ADC中断函数 void LVD_ISR (void) interrupt 6{} //低电压检测LVD中断函数 * C语言编写中断应用程序时,用中断号区分中断 void PCA_ISR (void) interrupt 7{} //PCA中断函数 void UART2_ISR (void) interrupt 8{} //串行口2中断函数 void SPI_ISR (void) interrupt 9{} //SPI通信中断函数 void X2_ISR(void) interrupt 10{} //外部中断2中断函数 void X3_ISR(void) interrupt 11{} //外部中断3中断函数 void T2_ISR (void) interrupt 12{} //定时器T2中断函数 void X4_ISR(void) interrupt 16{} //外部中断4中断函数 //IAP15W4K58S4的以上中断号同STC15F2K60S2 * void UART3_ISR (void) interrupt 17{} //串口3中断函数 void UART4_ISR (vo

文档评论(0)

suijiazhuang1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档