《单片机原理及接口技术—基于C51+Proteus仿真》_第5章 80C51单片机的中断系统最终.pptVIP

《单片机原理及接口技术—基于C51+Proteus仿真》_第5章 80C51单片机的中断系统最终.ppt

  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文档。上传文档
查看更多

*while(1) {temp=a;temp=~temp;P1=temp;}}voidint0()interrupt0 //外部中断0服务程序{a=a+1;} 【例5-3】设计二个外部中断嵌套程序,电路如图5-5所示。在80C51单片机的P0口连接8只LED,在外部中断0输入引脚P3.2和外部中断1输入引脚P3.3各接一个按钮开关K1和K2。要求如下:(1)K1和K2均未按下时,P0口连接的8只LED呈间隔点亮后交替;(2)按下K1,产生高优先级的外部中断0请求,在*中断服务程序中使8只LED自上而下流水点亮,显示3遍。(3)按下K2,产生低优先级的外部中断1请求,在中断服务程序中使8只LED自下而上流水点亮,显示3遍。图5-5二个外部中断嵌套电路*参考程序如下:#includereg51.h#includeintrins.h #defineucharunsignedcharuchardisplay[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};voidDelay(unsignedintx)//延时1ms函数{ucharj;while(x--){for(j=0;j125;j++);}}voidmain() //主函数{EA=1; //开放总中断EX0=1; //允许外部中断0中断EX1=1; //允许外部中断1中断*IT0=1; //外部中断0为负跳变触发方式IT1=1; //外部中断1为负跳变触发方式PX0=1; //外部中断0中断具有高优先级PX1=0; //外部中断1中断具有低优先级while(1) {P0=0x55;Delay(500);P0=0xaa;Delay(500);}}voidint0()interrupt0 //外部中断0服务程序{ucharm,a;for(m=0;m3;m++){for(a=0;a8;a++) {P0=display[a];*Delay(500);}}} voidint1()interrupt2 //外部中断0服务程序{ucharn;P0=0x7f;Delay(500);for(n=0;n23;n++){P0=_cror_(P0,1);Delay(500); }}*【例5-4】设计单片机响应8个外部中断的例子,电路图如图5-6所示。8只开关K1-K8一端接地,另一端连接80C51单片机的P2口,同时连接8输入与非门74LS30的8个输入端。74LS30输出端经反相器74LS04连接至单片机外部中断0输入引脚P3.2,当某个开关按下,表示某个相应外部中断发生,此时地电位信号通过按下的开关送与非门74LS30输入端,74LS30输出的高电平经反相器74LS04取反,生成的低电平信号作为外部中断0的请求信号。单片机响应外部中断0后,在中断程序中通过P2口查询发生的外部中断号。要求编程实现如下要求:(1)K1~K8均未按下时,P1口连接的8只LED呈间隔点亮;(2)若8只开关对应P1口连接的8个LED,当按下某一个开关,则相应的LED点亮。*图5-6单片机响应8个外部中断*参考程序如下:#includereg51.h#includeintrins.h #defineucharunsignedcharsbitKEY1=P2^0; sbitKEY2=P2^1;sbitKEY3=P2^2;sbitKEY4=P2^3;sbitKEY5=P2^4;sbitKEY6=P2^5;sbitKEY7=P2^6;sbitKEY8=P2^7;uchara=0x55;voidDelay(unsignedintx){ucharj;*while(x--){for(j=0;j125;j++);}}voidmain() {EA=1; EX0=1; IT0=1; P1=a;Delay(500); while(1) {P1=a;Delay(500);}}*voidint0()interrupt0 {P2=0xff;

您可能关注的文档

文档评论(0)

kd8w + 关注
实名认证
文档贡献者

kd8w

1亿VIP精品文档

相关文档