第6章2015中断介绍.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
*/76 【例6-3】外部中断2的使用。 外部中断2~4的使用方法与外部中断0和1的使用方法类似,区别在于外部中断2~4只能是下降沿触发,并且,要注意开放中断的方法。 */76 $INCLUDE (STC15.INC) ;包含STC15F2K60S2寄存器定义文件 ;主程序: ORG 0000H ;主程序入口 LJMP MAIN ORG 0053H ;外部中断2入口 LJMP INT_X2 ORG 0100H ;主程序 MAIN: MOV SP,#7FH ORL INT_CLKO, #10H ;开放外部中断2 SETB EA ;CPU开中断 SJMP $ ;原地踏步,等待中断发生 ;外部中断2处理子程序: INT_X2: ;在这里编写中断处理程序 RETI ;返回 END 位号 D7 D6 D5 D4 D3 D2 D1 D0 位名称 - EX4 EX3 EX2 LVD_WAKE T2CLKO T1CLKO T0CLKO */76 对应的C语言程序如下: #include “stc15.h” //包含寄存器定义头文件 void main (void) { INT_CLKO |= 0x10; //允许外部中断2 EA =1; //允许总的中断 while(1); //等待中断 } void X2_ISR (void) interrupt 10 //外部中断2函数 { //在这里编写中断处理程序 } */76 外部中断源扩展: (1)当外部中断源不够,可采用硬件申请与软件查询结合的方法,把多个中断源通过硬件“线或”或经或非门引入外中断源输入端(或),同时又连到某I/O口。这样,每个源都可能引起中断。 (2)在中断服务程序中通过软件查询便可确定哪一个是正在申请的中断源,其查询的次序则由中断源优先级决定,这就可实现多个外部中断源的扩展。 解释:“线与”和“线或”都是指一种逻辑电路,把几个OC门的输出用线连在一起,只要其中一个输出低电平,全线就被拉到低电平,负逻辑“线与”. */76 */76 【例6-4】如图所示的中断线路可实现系统的故障显示,当系统的各部分工作正常时,4个故障源输入端全为低电平,指示灯全熄灭。若当某部分出现故障,则对应的输入线由低电平变为高电平,从而引起单片机中断,试设计判定故障源的程序,并进行相应的灯光显示。 图6-3 利用中断线路显示系统故障 */76 解:通过或非门,将上升沿转换为下降沿,利用下降沿中断方式实现。 ORG 0000H LJMP MAIN ;转主程序 ORG 0003H LJMP INT_X0 ;转中断服务程序 ORG 0100H MAIN: MOV SP,#7FH MOV P2,#0FFH ;指示灯全熄灭 SETB IT0 ; 为下降沿触发中断方式 SETB EX0 ;允许中断 SETB EA ;CPU开中断 SJMP $ ;等待中断 INT_X0: MOV A,P1 ;对应关系:LED0--P2.0--P1.0,其他类推 CPL A ANL A,#0FH MOV P2,A RETI END */76 对应的C语言版程序: #include “stc15.h” //包含寄存器定义头文件 void main (void) { unsigned char i; P2=0x0f; //熄灭所有的指示灯 IT0=1; //外部中断0为下降沿触发方式 EX0=1; //允许外部中断0 EA =1; //允许总的中断 while(1); //等待中断 } void X0_ISR (void) interrupt 0 //外部中断函数 { P2=~P1; } */76 五、中断使用过程中需要注意的问题 在嵌入式系统中,中断是一种很有效的事件处理方式。 但是,如果使用中断不当,往往会出现一些意想不到的结果。为了获得正确的结果可能要花费

文档评论(0)

富贵礼包 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档