单片机原理及控制技术第5章定时器、中断系统以及串行口.pptVIP

单片机原理及控制技术第5章定时器、中断系统以及串行口.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文档。上传文档
查看更多
MCS-51单片机为外部的中断提供了两个中断请求输入端。但在实际应用系统中,外部中断请求源可能比较多,这就需要扩展外部中断源。常用的中断扩展方法有三种:利用定时器溢出中断法、查询法以及利用8259中断控制器扩展。 1.利用定时器扩展中断源 MCS-51内部集成了两个定时器,若将定时器设置为计数器方式,计数初值设为满量程,同时将定时器的输入端T0或T1用于输入外部中断请求信号。每当T0或T1引脚上出现负边沿的时候,计数器就会产生溢出中断。利用这个特性,可以把P3.4和P3.5作为外部中断请求输入线,TF0和TF1作为外部中断请求标志,其中断入口地址000BH和001BH就是扩展的外部中断源的入口地址。 5.2.6、中断源的扩展 例:定时器T0中断源用作外部中断源 初始化程序如下: MOV TMOD,#06H ;T0为方式2,计数方式 MOV TH0,#0FFH ;装入计数初值 MOV TL0,#0FFH SETB EA SETB ET0 ;开放定时器T0中断 SETB TR0 ;启动定时器T0定时 2.利用查询方式扩展中断源 若系统中有多个外部中断源,采用定时器溢出中断来扩展外部中断源已不能满足实际应用的需要,这时可采用中断和查询相结合的方式来扩展外部中断源。这种方法是将多个中断源按照重要程度进行排队,把最高优先级的中断源接到MCS-51的一个外部中断输入端,其余的中断源通过或门连接到另一个外部中断输入端,同时还连接到一个并行I/O口。中断请求由硬件电路产生,而中断源的识别由程序查询来处理,查询的次序决定了中断源的优先级。 例:现有5个外部中断源EX1~EX5,如下图所示。中断请求信号低电平有效,编写查询外部中断请求线EX1~EX5上中断请求的程序。 EX 2 EX 3 EX 4 EX 5 INT 1 P 1 . 0 P 1 . 1 P 1 . 2 P 1 . 3 MCS - 51 EX1 INT 0 汇编程序如下: ORG 0000H LJMP MAIN ORG 0003H LJMP INT0 ORG 0013H LJMP INT1 MAIN:MOV SP,#60H CLR IT1 CLR IT0 SETB EX0 SETB EXI SETB EA SJMP $ ORG 1000H INT0:PUSH PSW PUSH ACC ACALL EX1 POP ACC POP PSW RETI ORG 1200H INT1:PUSH PSW PUSH ACC ORL P1,#0FH MOV A,P1 JB P1.0,N1 ACALL EX2 N1:JB P1.1,N2 ACALL EX3 N2:JB P1.2,N3 ACALL EX4 N3:JB P1.3,N4 ACALL EX5 N4:POP ACC POP PSW RETI END #includereg51.h #define uchar unsigned char #define uint unsigned int sbit p1_0=P1^0; sbit p1_1=P1^1; sbit p1_2=P1^2; sbit p1_3=P1^3; void main() {TCON=0x00; IE=0x85; IP=0x01; while(1); } void int0_int(void) interrupt 0 { EX1() } void int1_int(void) interrupt 2 { if(p1_0==0) { EX2() } else if(p1_1==0) { EX3() } else if(p1_2==0) { EX4() } else if(p1_3==0) { EX5() } } C51程序如下: §5.3 MCS-51单片机的串行接口 MCS-51内部除了含有4个并行I/O接口之外,还有一个可编程的全双工串行通信接口,具有UART的全部功能。该接口电路不仅能同时进行数据的发送和

文档评论(0)

132****9295 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档