单片机中断定时器串行口的应用概论.ppt

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

5.1 片上外设综述 5.2 中断系统(INT ISR) 5.3 定时/计数器 (Timer/Counter) 5.4 串行通信口 (USART);5.1 片上外设综述;常用的片上外设有哪些?;学习片上外设的使用需要先了解下其产生的背景,然后学习这些外设的工作原理、寄存器说明和编程使用技巧,并且需要多次反复动手实验才能取得良好的效果。;5.2 MCS-51单片机的中断系统;背景知识: 微处理器/单片机的CPU是一直按照用户编写的程序按部就班的执行程序,包括各种顺序、条件判断、有限或者无限循环工作等。例如下例: 在一项工作中,CPU先要读取某个温度传感器的信息,然后计算下一步应该输出的结果,再进而送给某执行器执行,这个循环可以无限循环工作下去。这种方式一般称为查询输入-计算-输出的工作方式。;然而某次工作中突然发生了某个意外事件,需要CPU中断当前正在进行的工作,转而需要先处理这个意外的紧急事件。处理妥当完毕后才能再回去继续处理原来中断停下来的工作。 这种“意外”事件是大量普遍存在的,可能是想不到也可能是没必要反复查询检查的,只有当其发生的时候再去处理就可以。这类事件需要单独的应急响应机制,如同人类世界需要专门的公共突发事件管理机构一样,单片机也需要这样的管理机构,因此,中断控制系统诞生了。;应急突发事件的产生和处理流程大致如下: 某某地方发生了突发事件;(事件来源) 打报告向应急事件处理中心快速报告; 应急中心根据事件的必要性、严重性决定是否需要处理以及排队处理的优先程度; 决定处理的事件则请专门的处理部门进行处理,处理完毕清除本次意外事件的申请报告。;;以计数器计数为例;关于中断的名词和术语 1.中断源:能够引发中断并向CPU申请处理的突发事件来源,51单片机有5个中断源 INT0,T0,INT1,T1,UART 2.中断控制系统:负责管理中断时间的一整套机构,具体包括中断标志位、中断允许、中断优先级等,都是以寄存器位的形式体现。 3.中断服务子程序:由人工实现编写好的,用于处理对应突发事件的专门子程序,当中断时间发生并且被允许紧急处理时,中断系统会自动调动CPU去执行该段子程序这个过程是无需人工干???的。;中断响应的流程:中断源发生中断并且被批准处理后,中断系统会暂停CPU当前程序执行,把暂停工作的程序地址暂时保存在系统堆栈中(断点地址保存),然后自动调度CPU的PC转向特定中断源对应的中断向量入口地址,到那里去寻找响应的中断服务子程序。待子程序处理完毕后再RETI返回,将堆栈中的保存的断点地址返回给PC继续执行原先CPU中断掉的程序任务。;中断源;?5个中断源 2个优先级;1、定时/计数器控制寄存器TCON;;中断控制寄存器;2、中断优先级寄存器 IP;中断的汇编程序设计样例;外部中断式键盘电路原理图;ORG 0000H (主程序入口) AJMP MAIN ORG 0003H (INT0中断入口地址) AJMP KEYINT ORG 0030H MAIN: MOV SP,#60H SETB IT0 SETB EX0 SETB EA SJMP $ (主程序的断点地址) ORG 0100H ;中断键盘的C处理代码示例;;REG51.H头文件的内容 (片段);STC51开发板的外部查询式和中断式按键电路;例5.1 外部按键中断程序演示 实现功能要求:INT1按一下,P2口发光二极管全亮;INT0按一下,发光管全灭;用中断方式编程实现。;ORG 0000H LJMP MAIN ORG 0003H MOV P2,#0FFH RETI ORG 0013H MOV P2,#00H RETI ORG 0030H ;外部按键中断的C语言demo程序 #include REG51.h void main( ) { P2 = 0xFF; EX0 = 1; EX1 = 1; IT0 = 1; IT1 = 1; EA = 1; while(1) { } ?主程序挂起SJMP $ };void key1( ) interrupt 0 { P2 = 0xFF; } void key2( ) interrupt 2 { P2 = 0x00; } 对比C语言程序和汇编程序发现了哪些差异之处?;再做一个略微复杂一点的: 1)让INT1按键每按一下,P2口灯从右至左依次点亮。 2)自己尝试着做一个更复杂点的任务: 让INT1键每按一次,数码管的最低位显示的数字字符加1,从0开始到9结束,重新返回零。如果能实现,那么能否实现数码管的最低两位显示按键次数,初值为00,最高99.以数码管字符形式体现。;5.3 定时/计数器(Timer/Counter);应用领域对定时

文档评论(0)

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

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

1亿VIP精品文档

相关文档