《第14章-中断的魅力-51单片机教学课件.ppt》由会员分享,可在线阅读,更多相关《第14章-中断的魅力-51单片机教学课件.ppt(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Yang XZhang Y编著编著莱莱诺克斯诺克斯Nokes LWang YLiu X主审主审电子工业出版社电子工业出版社 2011.21 欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX第第14章章 中断的魅力中断的魅力2中断的比喻中断的比喻3欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编著
2、:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX任何一件事情的发生都会中断小林看电视的进程而去响应和处理事件。例如,邮递员上门送信,小林必须去开门签收信件,当事件处理完后,小林回去接着看电视。这里,小林比喻的就是单片机,而5个可能发生的事件为单片机的5个中断源外部中断0、外部中断1、Timer0中断、Timer1中断、串行通信中断。4.1 “打扰打扰”单片机单片机14.1.1 外部中断一例外部中断一例4欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller
3、编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX两支发光二极管D1(绿色)和D2(红色)与单片机的P0.0和P0.1相连,在外部中断1(P3.3(/INT1),13管脚)上有一个按钮开关S1。按下按钮开关S1可以模拟外部中断信号的发生:当开关S闭合时,P3.3=0,外部中断1产生。14.1.2 中断服务的指挥中断服务的指挥中断向量表中断向量表6欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编著:杨欣YangX张延强ZhangY主审:莱诺克斯No
4、kesL王玉凤WangY刘湘黔LiuX当外部中断1发生时,单片机怎么知道要去“EXT1_RED”段去执行呢?这都是指令“ORG13H”的功劳,该指令重新设置了一个新的地址13H,这就使得中断服务子程序段“EXT1_RED”从13H开始存储在程序存储器中。当指令“MOVIE,#84H”使能外部中断1后,一旦外部中断1发生,单片机会自动到程序存储器的地址13H上去执行程序。换句话说,外部中断1发生时,程序计数器PC被硬件修改成0013H,而PC指向的地址正是单片机取下一条指令的地址,于是单片机会从13H开始执行中断服务子程序段“EXT1_RED”直到遇到指令“RETI”为止。14.1.2 中断服务
5、的指挥中断服务的指挥中断向量表中断向量表7欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuXAT89S51单片机有5个中断源:外部中断0(/INT0)、外部中断1(/INT1)、Timer0中断(TF0)、Timer1中断(TF1)、串行通信中断(RI/TI)。当中断使能后,任何一个中断发生时单片机都会到表14-1所示的对应地址上去执行中断服务子程序。14.1.2 中断服务的指挥中断服务的指挥中断向量
6、表中断向量表8欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuXAT89S51单片机有5个中断源:外部中断0(/INT0)、外部中断1(/INT1)、Timer0中断(TF0)、Timer1中断(TF1)、串行通信中断(RI/TI)。当中断使能后,任何一个中断发生时单片机都会到中断向量表所示的对应地址上去执行中断服务子程序。14.2.1 中断的响应及处理中断的响应及处理10欢迎访问“电路飞翔网”获取更
7、多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX一个潜在的问题:每一个中断服务子程序的存放空间都非常有限,例如,外部中断0的中断向量为0003H,而Timer0中断向量地址为000BH,可见外部中断0的中断服务子程序只有000BH-0003H=8个字节的空间来存放,这8个字节的空间实在也放不了几条指令。解决这个问题:可以把指令“ORG”与跳转指令“JMP”结合来实现中断服务子程序的跳转,从而在另一个更为广阔的的空间中来放置中断
8、服务子程序。14.2.2 中断使能寄存器中断使能寄存器IE11欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX单片机上电复位之后,默认所有中断都被屏蔽(关闭),这意味着即使任何一种中断产生,单片机也不会去响应。为了使单片机能对中断进行响应,或者说使能中断,需要对中断使能寄存器IE进行操作。中断使能寄存器IE是一个特殊功能寄存器,位于特殊功能寄存器区的地址A8H上(图7-25)。14.3 外部中断外部
9、中断0和外部中断和外部中断114.3.1 外部中断信号输入端外部中断信号输入端/INT0和和/INT113欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuXAT89S51单片机的/INT0端(12管脚)和/INT1端(13管脚)是外部中断信号进入单片机的通道。P3.2和P3.3即是一般I/O口,又分别是外部中断0和外部中断1的中断信号输入端。通常我们使用/INTx代表任意一个外部中断。14.3.2 外
10、部中断的低电平触发外部中断的低电平触发15欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX使单片机产生外部中断的信号有两种方式,一是低电平触发,二是下降沿触发。当单片机上电复位后,使能外部中断时就默认以低电平方式触发。在低电平触发模式下,外部中断信号输入端/INT0和/INT1出现低电平就会触发外部中断0或外部中断1。外部中断产生时,单片机会立即停止正在执行的指令,并根据中断向量表中的中断向量转入相
11、应的地址执行外部中断服务子程序。在单片机进入中断服务子程序执行并在中断结束指令“RETI”之前,这个低电平必须撤走,否则将会使单片机执行完指令“RETI”后因/INT0或/INT1仍为低电平而再次进入中断服务子程序。14.3.3 外部中断的下降沿触发外部中断的下降沿触发16欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX除了低电平触发外,边沿触发也是一种常用的触发外部中断的模式。在该模式下,/INT
12、0端或/INT1端出现下降沿即可使单片机产生中断。与低电平触发不同,下降沿触发方式不是单片机默认的中断触发方式,所以需要指令来设置单片机工作在该模式下。方法是通过Timer控制寄存器TCON中的IT0位和IT1位来分别控制/INT0和/INT1触发方式。指令“SETBTCON.2”可使TCON的IT1位置1,即外部中断1由下降沿触发。14.3.2 利用利用Timer中断作信号发生器中断作信号发生器18欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编著:杨欣YangX张延强ZhangY主审:
13、莱诺克斯NokesL王玉凤WangY刘湘黔LiuX14.5 串行通信中断串行通信中断14.5.1 串行通信中断应用串行通信中断应用19欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX单片机串行通信:当设置好串行口控制寄存器SCON的相关位和利用Timer1产生一定的波特率后,单片机即可通过串行口接收或发送数据。发送使用指令“MOVSBUF,A”将累加器A的数据装入缓冲区SBUF后自动发送,我们通过检
14、测SCON中的TI位来判断数据是否发送完成。接收则使用指令“MOVA,SBUF”将接收缓冲区中的数据载入累加器A中,并通过检测SCON中的RI位判断接收的完成情况。单片机串行口发送和接收过程存在一个与Timer应用中相似的问题,就是单片机在判断SCON的TI位或RI位时只能“一心一意”地进行而无法再进行其他操作。而串行通信中断的出现较好地解决了系统中既需要单片机响应串行通信的操作,也同时兼顾其他操作。14.5.2 发送中断和接收中断的判断发送中断和接收中断的判断20欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051micr
15、ocontroller编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX实例:单片机的主程序是一个串行口发送数据的程序,程序将P0口上DIP开关S1产生的8位状态信号从串行口TXD端发送出去。如果这时RXD端接收到数据也会产生中断,这就需要在中断服务子程序中加一个判断的过程,如果判断出TI位被置1则是发送数据完成产生的中断,如果是RI位被置1则是接收到数据产生的中断。14.5.2 发送中断和接收中断的判断发送中断和接收中断的判断21欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe805
16、1microcontroller编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX单从中断的产生无法判断究竟是哪种情况,于是在“SERIAL”中首先通过“JB TI,SENT”来判断,如果是TI=1,说明是主程序发送数据完成产生的中断,如果TI=0,说明是RI=1产生的中断,即串行口接收到数据。4.7 应用体验应用体验解放了的解放了的CPU14.7.1 轮询与中断轮询与中断22欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编著:杨欣YangX张延
17、强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX轮询:主程序由“MAIN1”、“MAIN2”、“MAIN3”、“MAIN4”等组成,在主程序执行过程中单片机还需要关注按钮开关是否按下、Timer是否计数完成、串行数据是否接收/发送完成等事件。为了确保这些事件的发生不会被遗漏,单片机需要依次对它们进行循环查询,如果事件发生就要执行相应的服务程序。服务程序执行完成,单片机会继续查询下一个事件是否发生。14.7.1 轮询与中断轮询与中断24欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcont
18、roller编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX除了使单片机提高执行效率之外,中断还有两个优点:中断下,单片机可以选择特定的中断进行响应和处理。通过中断使能寄存器IE相应的位来使能某个或某些中断,屏蔽那些不需要响应和处理的中断。而轮询下,单片机必须响应和处理每一个设备。中断下,如果有多个中断同时发生,单片机可以根据程序的设定来优先响应和处理某一中断。而轮询下,单片机逐一对设备进行访问,有需要服务的就服务,没有优先顺序之分。14.7.2 中断优先级中断优先级25欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyou
19、needtoknowaboutthe8051microcontroller编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX如果有两个或两个以上的中断同时产生,单片机该先服务方便呢?AT89S51单片机有一个默认的中断优先级,外部中断0的中断优先级最高,串行通信中断优先级最低,其他中断的优先级依次按表中排列依次降低。例如,Timer0中断和外部中断1如果同时产生,单片机会先去响应Timer0中断并处理它的中断服务子程序。完成之后再响应外部中断1,进入相应的中断服务子程序。14.7.2 中断优先级中断优先级26欢迎访问“电路飞翔网”获取更多信息实例解读
20、51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX如果想改变中断优先级顺序,可通过对中断优先级控制寄存器IP设置来完成。寄存器IP位于特殊功能寄存器区的地址B8H上(图7-25),是专门用于设置单片机中断优先级的寄存器。14.7.3 利用利用Timer中断实现拉幕式显示中断实现拉幕式显示28欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编
21、著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX把中断与其他功能结合在一起,单片机可以完成更丰富的任务。程序14-7实现了一个拉幕式的显示效果,18这8个数字将从最右端的数码管依次向左移动,如图14-16右侧的效果所示。14.7 应用体验应用体验解放了的解放了的CPU29欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX14.8.1 音符与频率音符与频率31
22、欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX一闪一闪亮晶晶,用五线谱以及谱号来标记,能从附录J中查到钢琴任意一个琴键的发音频率,也就知道了一闪一闪亮晶晶每一个音符的发音频率,如果使用单片机的I/O口依次按节奏输出这些频率的信号,经过放大后就可用扬声器把音乐还原出来了。14.8.2 电子琴电路设计电子琴电路设计32欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyounee
23、dtoknowaboutthe8051microcontroller编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX利用前面介绍的小键盘来代替琴键,可与单片机构成一台简易的电子琴。16个按键的小键盘可作16个琴键,演奏一些简单的乐曲已经够用了。此外,单片机的P1.0作输出端口,通过三极管Q1驱动扬声器把音符还原出来。14.8.3 电子琴程序设计电子琴程序设计33欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编著:杨欣YangX张延强ZhangY
24、主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX可以给16个琴键(小键盘)按表设计发音频率,这样就形成了C调的3(mi)到(fa)共16个音阶。表14-3中的频率是根据附录J截取出来,并对频率进行了四舍五入。14.8.3 电子琴程序设计电子琴程序设计34欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX为了产生表示的不同频率信号,我们将使用Timer作定时器进行计时,并用Timer中断来实现输
25、出信号的延时。于是表14-3中还给出了这16个不同频率信号的Timer计数初始值。14.8.3 电子琴程序设计电子琴程序设计35欢迎访问“电路飞翔网”获取更多信息实例解读51单片机完全学习与应用Allyouneedtoknowaboutthe8051microcontroller编著:杨欣YangX张延强ZhangY主审:莱诺克斯NokesL王玉凤WangY刘湘黔LiuX程序14-8为电子琴的单片机程序,“LSCAN”段扫描键盘并在“CALCU”段中得到键号,再根据查表法得到键值,也就是用于形成特定频率输出信号的计数初始值。计数初始值装入Timer寄存器后,Timer启动,实现特定频率的方波从P1.0输出从而使扬声器发出与琴键相应的音符来。