《中断系统》课件.ppt

上传人:wuy****n92 文档编号:74235724 上传时间:2023-02-25 格式:PPT 页数:64 大小:468KB
返回 下载 相关 举报
《中断系统》课件.ppt_第1页
第1页 / 共64页
《中断系统》课件.ppt_第2页
第2页 / 共64页
点击查看更多>>
资源描述

《《中断系统》课件.ppt》由会员分享,可在线阅读,更多相关《《中断系统》课件.ppt(64页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第七章第七章 中断系统中断系统7.1 7.1 中断的概念中断的概念7.2 89C517.2 89C51的中断系统的中断系统7.3 7.3 中断处理过程中断处理过程7.4 7.4 中断系统的应用中断系统的应用7.1.1 7.1.1 中断的概念中断的概念 所谓所谓中断:中断:是指是指CPUCPU正在处理某件事情的时正在处理某件事情的时候,外部发生了某一事件,请求候,外部发生了某一事件,请求CPUCPU迅速去处迅速去处理。理。CPUCPU暂时中断当前的工作,转入处理所发暂时中断当前的工作,转入处理所发生的事件,处理完毕后,再回来继续执行被中生的事件,处理完毕后,再回来继续执行被中止了的工作,这个过程

2、称为中断。止了的工作,这个过程称为中断。实现这种功能的部件称为实现这种功能的部件称为中断系统中断系统,产生中,产生中断的请求源称为断的请求源称为中断源中断源;原来正在运行的程序;原来正在运行的程序称称为为主程序主程序;主程序被断开的位置称为;主程序被断开的位置称为断点断点。中断服务程序中断服务程序随机产生的随机产生的调用子程序调用子程序保护断点保护断点为外设服务和处理事件为外设服务和处理事件程序中事先安排好的程序中事先安排好的保护断点保护断点为主程序服务为主程序服务表表7-1 7-1 中断服务程序与调用子程序的区别中断服务程序与调用子程序的区别7.1.2 7.1.2 中断技术的优点中断技术的优

3、点分时操作分时操作 能解决快速能解决快速CPUCPU和慢速外设之间的矛盾,和慢速外设之间的矛盾,可使可使CPUCPU、外设同时工作。外设同时工作。实现实时处理实现实时处理 外界变化量可以根据要求,随时向外界变化量可以根据要求,随时向CPUCPU发发出中断请求,要求出中断请求,要求CPUCPU及时处理,及时处理,CPUCPU就可以就可以马上响应,加以处理。马上响应,加以处理。故障处理故障处理 计算机运行过程中,出现无法预料的故障计算机运行过程中,出现无法预料的故障时,能自行处理,而不必停机。时,能自行处理,而不必停机。7.1.3 7.1.3 中断系统的功能中断系统的功能1 1、实现中断及返回、实

4、现中断及返回2 2、实现优先权排队、实现优先权排队3 3、实现中断嵌套、实现中断嵌套RETIRETI主主程程序序继继续续执执行行主主程程序序断点断点响应中断请求响应中断请求返回主程序返回主程序中中断断服服务务程程序序主主程程序序继继续续执执行行主主程程序序断点断点响应低级中断请求响应低级中断请求返回主程序返回主程序高高级级中中断断服服务务程程序序响应低级中断请求响应低级中断请求返回低级中断程序返回低级中断程序RETIRETIRETIRETI图图7-2 7-2 中断流程图中断流程图图图7-3 7-3 中断嵌套流程图中断嵌套流程图7.2 89C517.2 89C51的中断系统的中断系统7.2.2

5、7.2.2 中断请求标志中断请求标志7.2.4 7.2.4 中断优先级控制寄存器中断优先级控制寄存器IPIP7.2.3 7.2.3 中断允许控制寄存器中断允许控制寄存器IEIE7.2.1 7.2.1 中断源中断源图图7-3 89C517-3 89C51单片机的中断系统单片机的中断系统7.2.1 7.2.1 中断源中断源v(1 1)外部中断类外部中断类 有两个中断源:外部中断有两个中断源:外部中断0 0和外部中断和外部中断1 1,相应,相应的中断请求信号输入端是的中断请求信号输入端是INT0INT0和和INT1INT1,有两种有两种触发方式:电平触发方式和脉冲触发方式。触发方式:电平触发方式和脉

6、冲触发方式。v(2 2)定时中断类定时中断类 有两个中断源:定时有两个中断源:定时/计数器计数器0 0溢出中断和定时溢出中断和定时/计数器计数器1 1溢出中断。溢出中断。v(3 3)串行中断类串行中断类 串行口中断请求标志:每当串行口接收或发送串行口中断请求标志:每当串行口接收或发送一组串行数据完毕时,由硬件使一组串行数据完毕时,由硬件使TITI或或RIRI置位,置位,即产生一个串行口中断请求。即产生一个串行口中断请求。5 5个中断请求源:个中断请求源:(1 1)INT0INT0:外部中断:外部中断0 0请求,由请求,由P3.2P3.2脚输入。由脚输入。由IT0IT0决定是低电平有效还是负跳变

7、有效。一旦决定是低电平有效还是负跳变有效。一旦有效,则向有效,则向CPUCPU申请中断,且建立申请中断,且建立IE0IE0标志。标志。(2 2)INT1INT1:外部中断:外部中断1 1请求,由请求,由P3.3P3.3脚输入。由脚输入。由IT1IT1决定是低电平有效还是负跳变有效。一旦决定是低电平有效还是负跳变有效。一旦有效,则向有效,则向CPUCPU申请中断,且建立申请中断,且建立IE1IE1标志。标志。(3 3)TF0TF0:定时器:定时器T0T0溢出中断请求。当溢出中断请求。当T0T0产生溢产生溢出,出,TF0TF0置位,请求中断处理。置位,请求中断处理。(4 4)TF1TF1:定时器:

8、定时器T1T1溢出中断请求。当溢出中断请求。当T1T1产生溢产生溢出,出,TF1TF1置位,请求中断处理。置位,请求中断处理。(5 5)RIRI或或TITI:串行中断请求。当接收或发送完:串行中断请求。当接收或发送完一组数据后就置位一组数据后就置位RIRI或或TITI,请求中断。,请求中断。7.2.2 7.2.2 中断请求标志中断请求标志1 1、定时器控制寄存器、定时器控制寄存器TCONTCON的中断标志的中断标志TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT08F8F88888A8A8C8C89898B8B8D8D8

9、E8EIE0IE0(IE1IE1):):外中断请求标志。外中断请求标志。IT0IT0(IT1IT1):):外中断请求信号方式控制位。外中断请求信号方式控制位。当当IT0IT0(IT1IT1)=1=1时:脉冲触发方式(边沿触发时:脉冲触发方式(边沿触发方式),负跳变有效。当方式),负跳变有效。当IT0IT0(IT1IT1)=0=0时:电时:电平触发方式,低电平有效。平触发方式,低电平有效。TF0TF0(TF1TF1):):定时计数溢出标志位。定时计数溢出标志位。当定时当定时/计数器产生溢出时,由硬件置计数器产生溢出时,由硬件置1 1;当转;当转向中断服务时,由硬件自动清零。向中断服务时,由硬件自

10、动清零。2 2、串行口控制寄存器、串行口控制寄存器SCONSCON的中断标志的中断标志/TI RI/TI RI9F9F98989A9A9C9C99999B9B9D9D9E9ERIRI:串行口接收中断请求标志位。当单片机接:串行口接收中断请求标志位。当单片机接收到一串行数据后,由硬件置收到一串行数据后,由硬件置1 1;当;当CPUCPU转向中转向中断服务程序后,该位必须由软件清零。断服务程序后,该位必须由软件清零。TITI:串行口发送中断请求标志位。当单片机发:串行口发送中断请求标志位。当单片机发送完一串行数据后,由硬件置送完一串行数据后,由硬件置1 1;当;当CPUCPU转向中转向中断服务程序

11、后,该位必须由软件清零。断服务程序后,该位必须由软件清零。7.2.3 7.2.3 中断允许控制寄存器中断允许控制寄存器IEIEEA /ES ET1 EX1 ET0 EX0EA /ES ET1 EX1 ET0 EX0AFAFA8A8AAAAACACA9A9ABABADADAEAEEAEA:中断允许总控制位。:中断允许总控制位。EA=0EA=0,表示,表示CPUCPU禁止所禁止所有中断;有中断;EA=1EA=1时,表示时,表示CPUCPU开放中断。开放中断。EX0EX0(EX1EX1):外部中断允许控制位。):外部中断允许控制位。EX0EX0(EX1EX1)=0=0,禁止外中断;,禁止外中断;EX

12、0EX0(EX1EX1)=1=1,允许外中断。,允许外中断。ET0ET0(ET1ET1):定时):定时/计数器的中断允许控制位。计数器的中断允许控制位。ET0ET0(ET1ET1)=0=0,禁止定时,禁止定时/计数器中断;计数器中断;ET0ET0(ET1ET1)=1=1,允许定时,允许定时/计数器中断。计数器中断。ESES:串行中断允许控制位。:串行中断允许控制位。ES=0ES=0,禁止串行中,禁止串行中断;断;ES=1ES=1,允许串行中断。,允许串行中断。7.2.4 7.2.4 中断优先级控制寄存器中断优先级控制寄存器IPIP/PS PT1 PX1 PT0 PX0/PS PT1 PX1 P

13、T0 PX0BFBFB8B8BABABCBCB9B9BBBBBDBDBEBEPX0PX0:外部中断外部中断0 0优先级设定位;优先级设定位;PX0PX0:定时器定时器T0T0中断优先级设定位;中断优先级设定位;PX1PX1:外部中断外部中断1 1优先级设定位;优先级设定位;PT1PT1:定时器定时器T1T1中断优先级设定位;中断优先级设定位;PSPS:串行中断优先级设定位。:串行中断优先级设定位。当某一控制位被置当某一控制位被置0 0,则该中断源被定义为,则该中断源被定义为低优先级;若被置低优先级;若被置1 1,则该中断源被定义为高优,则该中断源被定义为高优先级。中断优先级控制寄存器先级。中断

14、优先级控制寄存器IPIP的各个控制位,的各个控制位,都可以通过编程来置位或清零。都可以通过编程来置位或清零。中断优先级的控制原则:中断优先级的控制原则:(1 1)低优先级中断请求不能打断高优先级的)低优先级中断请求不能打断高优先级的中断服务,但高优先级可打断低优先级的中中断服务,但高优先级可打断低优先级的中断服务,实现中断嵌套。断服务,实现中断嵌套。(2 2)一个中断一旦得到响应,与它同级的中)一个中断一旦得到响应,与它同级的中断请求不能中断它。断请求不能中断它。(3 3)同级的多个中断请求同时出现,则按)同级的多个中断请求同时出现,则按CPUCPU查询次序确定哪个中断请求先被响应。查询次序确

15、定哪个中断请求先被响应。查询次序为:查询次序为:外部中断外部中断00定时定时/计数器中断计数器中断00外部中断外部中断1 1定时定时/计数器中断计数器中断11串行中断。串行中断。7.3 7.3 中断处理过程中断处理过程7.3.1 7.3.1 中断响应中断响应7.3.2 7.3.2 中断处理中断处理7.3.3 7.3.3 中断返回中断返回7.3.4 7.3.4 中断请求的撤除中断请求的撤除7.3.5 7.3.5 中断响应时间中断响应时间7.3.1 7.3.1 中断响应中断响应1 1、CPUCPU的中断响应条件的中断响应条件(1 1)首先要有中断源发出中断申请;)首先要有中断源发出中断申请;(2

16、2)中断总允许位)中断总允许位EA=1,EA=1,即即CPUCPU允许所有中断源允许所有中断源申请中断;申请中断;(3 3)申请中断的中断源的中断允许位为)申请中断的中断源的中断允许位为1 1,即,即此中断源可以向此中断源可以向CPUCPU申请中断。申请中断。注:当出现下面一种情况时,中断会被阻断:注:当出现下面一种情况时,中断会被阻断:(1 1)CPUCPU正在执行一个同级或高一级的中断服正在执行一个同级或高一级的中断服务程序;务程序;(2 2)当前的机器周期不是正在执行的指令的最)当前的机器周期不是正在执行的指令的最后一个周期,即正在执行的指令还未完成前,后一个周期,即正在执行的指令还未完

17、成前,任何中断请求都得不到响应;任何中断请求都得不到响应;(3 3)正在执行的指令是返回指令或者对专用)正在执行的指令是返回指令或者对专用寄存器寄存器IEIE、IPIP进行读进行读/写的指令,此时在执写的指令,此时在执行行RETIRETI或者读写或者读写IEIE或或IPIP之后,不会马上响之后,不会马上响应中断请求,至少在执行一条其他指令之应中断请求,至少在执行一条其他指令之后才会响应。后才会响应。2 2、中断响应过程、中断响应过程 中断源中断源 入口地址入口地址 外部中断外部中断0 0003H0 0003H 定时器定时器T0T0中断中断 000BH 000BH 外部中断外部中断1 0013H

18、1 0013H 定时器定时器T1T1中断中断 001BH 001BH 串行口中断串行口中断 0023H 0023H7.3.2 7.3.2 中断处理中断处理 中断处理:中断服务程序从入口地址开始执行,中断处理:中断服务程序从入口地址开始执行,直至遇到指令直至遇到指令“RETI”“RETI”为止,称中断处理。为止,称中断处理。编写中断服务程序需注意以下几点:编写中断服务程序需注意以下几点:(1 1)各入口地址间隔)各入口地址间隔8 8个字节,需在入口地址单个字节,需在入口地址单元处存放一条无条件转移指令。元处存放一条无条件转移指令。(2 2)若要在执行当前中断程序时禁止更高优先)若要在执行当前中断

19、程序时禁止更高优先级中断源中断,要先关闭级中断源中断,要先关闭CPUCPU中断,或禁止更中断,或禁止更高中断源的中断,而在中断返回前再开中断。高中断源的中断,而在中断返回前再开中断。(3 3)在保护现场和恢复现场时,为了不使现场)在保护现场和恢复现场时,为了不使现场数据受到破坏,在保护现场和恢复现场时,数据受到破坏,在保护现场和恢复现场时,CPUCPU不响应新的中断请求。不响应新的中断请求。7.3.3 7.3.3 中断返回中断返回中断源发中断请求中断源发中断请求中断响应条件中断响应条件是否满足?是否满足?中断是否中断是否受阻?受阻?把把PCPC断点地址压入堆栈断点地址压入堆栈相应中断源的中断入

20、口地址相应中断源的中断入口地址送入送入PCPC转向中断服务程序转向中断服务程序硬硬件件自自动动完完成成关中断关中断保护现场保护现场开中断开中断中断服务中断服务关中断关中断恢复现场恢复现场开中断开中断中断返回中断返回中断地址由中断地址由堆栈弹入堆栈弹入PC中断服务程序中断服务程序7.3.4 7.3.4 中断请求的撤除中断请求的撤除n定时器溢出中断,定时器溢出中断,CPUCPU在响应中断后,用硬在响应中断后,用硬件清除中断请求标志件清除中断请求标志IF0IF0或或IF1IF1。n边沿触发的外部中断,边沿触发的外部中断,CPUCPU在响应中断后,在响应中断后,用硬件清除中断请求标志用硬件清除中断请求

21、标志IE0IE0或或IE1IE1。n串行口中断,串行口中断,CPUCPU在响应中断后,没有硬件在响应中断后,没有硬件清除清除TITI、RIRI,用户必须用软件来清除。,用户必须用软件来清除。n电平触发的外部中断,电平触发的外部中断,CPUCPU在响应中断后,在响应中断后,由硬件自动清除中断申请标志由硬件自动清除中断申请标志IE0IE0或或IE1IE1,但,但不能彻底撤除中断请求。不能彻底撤除中断请求。7.3.4 7.3.4 中断请求的撤除中断请求的撤除图图7-5 7-5 外部中断撤除电路外部中断撤除电路 CLR P1.0 CLR P1.0 SETB P1.0 SETB P1.0INT0INT0

22、INT1INT1P1.0P1.089C5189C51Q QD DCPCPS SD D外部中断外部中断请求信号请求信号D触发器触发器 D D触发器锁存中断请求用的低电平,并通过输出触发器锁存中断请求用的低电平,并通过输出端端Q Q送到送到INT0INT0;D D触发器锁存中断请求低电平,只要触发器锁存中断请求低电平,只要P1.0P1.0输出一个负脉冲,就使输出一个负脉冲,就使D D触发器置触发器置1 1,撤销请求。,撤销请求。附:附:D D触发器的真值表。触发器的真值表。7.3.5 7.3.5 中断响应时间中断响应时间 中断响应时间:是从查询中断请求标志位中断响应时间:是从查询中断请求标志位开始

23、转向中断入口地址所需的机器周期数。开始转向中断入口地址所需的机器周期数。89C51 89C51单片机的最短响应时间是单片机的最短响应时间是3 3个机周。个机周。查询标志位查询标志位1 1机周,机周,LCALLLCALL指令指令2 2机周。机周。一般,外中断响应时间:大于一般,外中断响应时间:大于3 3个机周,小个机周,小于于8 8个机周。个机周。如出现同级或高级中断正在响应或服务中如出现同级或高级中断正在响应或服务中等待的时候,响应时间就不好计算了。等待的时候,响应时间就不好计算了。7.4 7.4 中断系统的应用中断系统的应用中断系统中需要人为控制的部分:中断系统中需要人为控制的部分:(1 1

24、)CPUCPU的开中断和关中断;的开中断和关中断;(2 2)各中断源中断请求的允许和禁止;)各中断源中断请求的允许和禁止;(3 3)各中断源优先级别的设定;)各中断源优先级别的设定;(4 4)外部中断请求的触发方式。)外部中断请求的触发方式。在保护现场和恢复现场之前要关中断,在保护现在保护现场和恢复现场之前要关中断,在保护现场和恢复现场之后要开中断,中断服务程序的格场和恢复现场之后要开中断,中断服务程序的格式为:式为:CLR EA CLR EA CLR EA CLR EA PUSH ACC POP PSW PUSH ACC POP PSW PUSH PSW POP ACC PUSH PSW P

25、OP ACC SETB EA SETB EA SETB EA RETI SETB EA RETI 【例【例7-17-1】利用定时器利用定时器T0T0定时,在定时,在P1.0P1.0端输出端输出一方波,方波周期为一方波,方波周期为20ms20ms,已知晶振频率为,已知晶振频率为12MHz12MHz。主程序如下:主程序如下:ORG 0000H ORG 0000H LJMP 2000H LJMP 2000H T0T0的中断服务程序的中断服务程序 ORG 000BH ORG 000BH AJMP 0070H AJMP 0070H ORG 0070H ORG 0070H MOV TL0 MOV TL0,

26、0F0H 0F0H;重赋初值;重赋初值 MOV TH0 MOV TH0,0D8H0D8H CPL P1.0 CPL P1.0 ;输出取反;输出取反 RETI RETI ORG 2000H ORG 2000H MOV TMOD MOV TMOD,01H01H;设置;设置T0T0为模式为模式1 1 MOV TL0 MOV TL0,0F0H0F0H;赋初值;赋初值 MOV TH0 MOV TH0,0D8H 0D8H MOV IE MOV IE,82H82H;CPUCPU开中断,开中断,T0T0开中断开中断 SETB TR0 SETB TR0 ;启动;启动T0T0 HERE HERE:SJMP HER

27、E SJMP HERE ;循环等待定时到;循环等待定时到 【例【例7-27-2】用定时器用定时器T1T1定时,在定时,在P1.0P1.0端输出一端输出一方波,周期为方波,周期为2min2min,已知晶振频率为,已知晶振频率为12MHz12MHz。解解:(方法:(方法1 1)采用中断方法。设定时器)采用中断方法。设定时器T1T1采采用模式用模式1 1定时定时10ms10ms,用,用60H60H单元做毫秒计数单单元做毫秒计数单元,用元,用61H61H单元做秒计数单元,用单元做秒计数单元,用4FH4FH位做位做1 1分计时到标志。分计时到标志。T1T1中断服务程序入口地址为中断服务程序入口地址为00

28、1BH001BH。主程序如下:主程序如下:ORG 0000H ORG 0000H LJMP 2000H LJMP 2000H T1T1的中断服务程序的中断服务程序 ORG 001BH ORG 001BH AJMP 0100H AJMP 0100H ORG 0100H ORG 0100H MOV TH1 MOV TH1,0D8H0D8H;重赋初值;重赋初值 MOV TL1 MOV TL1,0F0H 0F0H DJNZ 60H DJNZ 60H,TT1 TT1 ;判;判1s1s定时到否?定时到否?MOV 60H MOV 60H,100100 DJNZ 61H DJNZ 61H,TT1TT1 M0V

29、 61H M0V 61H,6060;判;判1min1min定时到否?定时到否?SETB 4FH SETB 4FH ;到;到1min1min,置标志位,置标志位4FH=14FH=1 TT1 TT1:RETI RETI ;中断返回;中断返回 ORG 2000H ORG 2000H ;主程序;主程序 MOV TMOD MOV TMOD,10H10H;设置;设置T1T1为定时模式为定时模式1 1 MOV TH1 MOV TH1,0D8H0D8H;赋初值;赋初值 MOV TL1 MOV TL1,0F0H0F0H MOV IE MOV IE,88H 88H;CPUCPU开中断,开中断,TT1TT1开中断开

30、中断 SETB TR1 SETB TR1 ;启动;启动T1T1工作工作 MOV 60H MOV 60H,100100;赋毫秒计数初值;赋毫秒计数初值 MOV 61H MOV 61H,60 60;赋秒计数初值;赋秒计数初值 CLR 4FH CLR 4FH ;清标志位;清标志位 TT TT:JNB 4FHJNB 4FH,TT TT ;等;等1min1min时间到时间到 CLR 4FH CLR 4FH ;清标志位;清标志位 CPL P1.0 CPL P1.0 ;输出反相;输出反相 AJMP TT AJMP TT ;反复循环;反复循环 END END(方法(方法2 2)采用软、硬相结合的方法。电路连接

31、)采用软、硬相结合的方法。电路连接如图如图7-87-8,使,使P1.2P1.2与与T0T0(P3.4P3.4)相连,)相连,P1.0P1.0仍仍然用做输出波形,定时器然用做输出波形,定时器T1T1做做10ms10ms定时,定时定时,定时器器T0T0设为模式设为模式1 1计数,定时器计数,定时器T1T1控制控制P1.2P1.2输出输出方波,方波,T0(P3.4)T0(P3.4)做计数输入端。做计数输入端。T0 T0的计数初值的计数初值X X应为应为 X=65536-3000=62536=F448H X=65536-3000=62536=F448H 主程序如下:主程序如下:ORG 2000H OR

32、G 2000H MOV TMOD MOV TMOD,15H 15H ;设置;设置T1T1为模式为模式1 1定时,定时,T0T0为模式为模式1 1计数计数 MOV TH1 MOV TH1,0D8H 0D8H ;赋;赋T1T1定时定时10ms10ms初值初值 MOV TL1 MOV TL1,0F0H0F0H89C5189C51P3.4P3.4P1.2P1.2P1.0P1.0 MOV TH0 MOV TH0,0F4H0F4H;赋;赋T0T0计数计数30003000初值初值 MOV TL0 MOV TL0,48H48H MOV IE MOV IE,8AH8AH;CPUCPU开中断,开中断,T0 T0、

33、T1T1开中断开中断 SETB TR1 SETB TR1 SETB TR0 SETB TR0 LI LI:SJMP L1SJMP L1;等;等10ms10ms到到T1T1的中断服务的中断服务 程序程序T1T1的中断服务程序(由的中断服务程序(由001BH001BH转来)转来)ORG 0100H ORG 0100H MOV TH1 MOV TH1,0D8H 0D8H ;重赋定时初值;重赋定时初值 MOV TL1 MOV TL1,0F0H0F0H CPL P1.2 CPL P1.2 RETI RETIT0T0的中断服务程序(由的中断服务程序(由000BH000BH转来)转来)ORG 0200H O

34、RG 0200H MOV TH0 MOV TH0,0F4H 0F4H ;重赋计数初值;重赋计数初值 MOV TL0 MOV TL0,48H48H CPL P1.0 CPL P1.0 RETI RETIn【例【例7-37-3】计价器的计程方法:车轮每转一圈计价器的计程方法:车轮每转一圈产生一个脉冲,从外中断产生一个脉冲,从外中断INT0INT0引脚输入,行驶引脚输入,行驶里程为轮胎周长里程为轮胎周长X X圈数。假设周长为圈数。假设周长为2m2m,试编,试编程计算行驶里程:数据存放到程计算行驶里程:数据存放到32H32H,31H31H,30H30H。n解:编程如下:解:编程如下:ORG 0000H

35、 ;ORG 0000H ;入口地址入口地址 LJMP START LJMP START ;转向主程序初始化;转向主程序初始化 ORG 0003H ORG 0003H ;INT0INT0中断入口地址中断入口地址 LJMP INT LJMP INT ;转向中断服务程序;转向中断服务程序 ORG OO30H ORG OO30H ;主程序初始化;主程序初始化START:MOV SP,#60H START:MOV SP,#60H ;置堆栈指针;置堆栈指针 SETB IT0 SETB IT0 ;置;置INT0INT0边沿触发方式边沿触发方式 MOV IP,#01H MOV IP,#01H ;置;置INT0

36、INT0高优先级高优先级 MOV IE,#81H ;CPU MOV IE,#81H ;CPU开中断,开中断,INT0INT0开中断开中断 MOV 30H,#00H MOV 30H,#00H ;里程计数器清零;里程计数器清零 MOV 31H,#00H MOV 31H,#00H ;MOV 32H,#OOH MOV 32H,#OOH LJMP LJMP$;等待中断;等待中断 ORG 0100H ORG 0100H;中断程序中断程序,中断一次里程加,中断一次里程加2 2INT:PUSH ACC INT:PUSH ACC ;保护现场;保护现场 PUSH PSW PUSH PSW MOV A,30H MO

37、V A,30H ;读里程计数器低;读里程计数器低8 8位位 ADD A,#02 ADD A,#02 ;低;低8 8位计数器加位计数器加2m2m MOV 30H,A MOV 30H,A ;回存;回存 CLR A CLR A ;A A清零清零ADDC A,31H ;ADDC A,31H ;中中8 8位计数器加进位位计数器加进位MOV 31H,A MOV 31H,A ;回存;回存CLR A ;ACLR A ;A清零清零 ADDC A,32H ADDC A,32H ;高;高8 8位计数器加进位位计数器加进位MOV 32H,A ;MOV 32H,A ;回存回存POP PSW POP PSW ;恢复现场;

38、恢复现场POP ACCPOP ACCRETIRETI【例【例7-47-4】现有现有5 5个中断源个中断源EX1EX1、EX20EX20、EX21EX21、EX22EX22、EX23EX23,高电平时表示请求中断,要,高电平时表示请求中断,要求执行相应的中断服务程序,试编制程序。求执行相应的中断服务程序,试编制程序。解:解:89C5189C51有有5 5个中断源,可供用户使用的外个中断源,可供用户使用的外部中断只有部中断只有2 2个,因此设法扩展外部中断源。个,因此设法扩展外部中断源。INT0INT0INT1INT189C5189C51P1.3P1.3P1.2P1.2P1.1P1.1P1.0P1

39、.0+5V+5VEX23EX23EX1EX1EX22EX22EX21EX21EX20EX20R R5.1K 5.1K 图图7-6 7-6 多外部中断源的硬件连接多外部中断源的硬件连接 其中其中EX1EX1因其重要单独占用一个中断源因其重要单独占用一个中断源INT0INT0,且,且为高优先级,其余为高优先级,其余4 4个中断源个中断源EX1EX1、EX20EX20、EX21EX21、EX22EX22、EX23EX23通过或非门合用一个外部中断,并通过或非门合用一个外部中断,并分别连接到,在中断服务程序中查询就可判别分别连接到,在中断服务程序中查询就可判别是哪一个申请中断。是哪一个申请中断。E20

40、=1E20=1E21=1E21=1E23=1E23=1返回返回E20E20中断服务子程序中断服务子程序E21E21中断服务子程序中断服务子程序E23E23中断服务子程序中断服务子程序N NY YY YY YN NN N图图7-7 7-7 软件查询中断源流程图软件查询中断源流程图 查询流程图如图查询流程图如图7-77-7。查询次序为。查询次序为E20E20E23E23。在查。在查到一个高级中断申请后,就转去为这个中断申请服务,到一个高级中断申请后,就转去为这个中断申请服务,服务结束后,就返回继续查询较低级的中断申请,直服务结束后,就返回继续查询较低级的中断申请,直到查不到其他中断申请时返回,并再

41、等待到查不到其他中断申请时返回,并再等待INT1INT1上出现上出现新的中断申请信号。新的中断申请信号。ORG 0013H ORG 0013H ;INT1INT1中断入口地址中断入口地址 LJMP PINT0 LJMP PINT0;转;转INT1INT1中断服务程序中断服务程序 PINT0 PINT0:CLR EA CLR EA ;CPUCPU关中断关中断 PUSH ACC PUSH ACC;保护现场;保护现场 PUSH DPH PUSH DPH PUSH DPL PUSH DPL SETB EA SETB EA ;CPUCPU开中断开中断 JB P1.0 JB P1.0,LWK20 LWK2

42、0;P1.0=1P1.0=1,EX20 EX20请求中断请求中断 JB P1.1 JB P1.1,LWK21 LWK21;P1.1=1P1.1=1,EX21 EX21请求中断请求中断 JB P1.2 JB P1.2,LWK22 LWK22;P1.2=1P1.2=1,EX22 EX22请求中断请求中断 SJMP LWK23 SJMP LWK23 ;P1.3=1 P1.3=1,EX23 EX23请求中断请求中断LERT:CLR EA ;CPULERT:CLR EA ;CPU关中断关中断 POP ACC POP ACC ;恢复现场;恢复现场 POP DPH POP DPH POP DPL POP D

43、PL SETB EA SETB EA ;CPUCPU开中断开中断 RETI RETI ;中断返回;中断返回LWK20LWK20:LCALL WORK20 LCALL WORK20 ;E20E20中断服务子程序中断服务子程序 SJMP LERT SJMP LERT LWK21LWK21:;E21E21中断服务子程序中断服务子程序 LWK22LWK22:;E22E22中断服务子程序中断服务子程序 LWK23LWK23:;E23E23中断服务子程序中断服务子程序 几个需注意问题几个需注意问题:1 1、为防止保护现场和恢复现场过程中,现场、为防止保护现场和恢复现场过程中,现场数据受到破坏,在保护现场和

44、恢复现场期间数据受到破坏,在保护现场和恢复现场期间CPUCPU禁止中断,待保护现场和恢复现场结束后,再禁止中断,待保护现场和恢复现场结束后,再开中断。开中断。2 2、在、在INT1INT1中断服务程序中,只判中断服务程序中,只判P1.0P1.0、P1.1P1.1和和P1.2P1.2而不需再判而不需再判P1.3.P1.3.3 3、执行各自的中断功能服务子程序后,必须返、执行各自的中断功能服务子程序后,必须返回回INT1INT1恢复现场、中断返回处,否则出错。恢复现场、中断返回处,否则出错。【例【例7-57-5】已知某已知某89C5189C51单片机采用单片机采用6MHz6MHz晶振,晶振,现要求

45、现要求P1.0P1.0输出一个输出一个5KHz5KHz的方波,同时对外的方波,同时对外部输入的脉冲信号进行计数,每当计满部输入的脉冲信号进行计数,每当计满200200时,时,使内部数据存储单元使内部数据存储单元60H60H内容增内容增1 1,当增到,当增到100100时停止计数,并使时停止计数,并使P1.2P1.2输出高电平,输出高电平,定时器定时器T1T1做串行口的波特率发生器做串行口的波特率发生器。解:定时器解:定时器T0T0为工作模式为工作模式3 3,TH0TH0作为作为8 8位定时器位定时器用,用,TL0TL0作为作为8 8位计数器用,利用位计数器用,利用T0T0(P3.4P3.4)引

46、脚作为外部脉冲计数输入,用引脚作为外部脉冲计数输入,用TL0TL0计数,把计数,把TL0TL0置初值置初值38H38H(256-200=38H256-200=38H);用);用TH0TH0作为作为8 8位定时器,由位定时器,由P1.0P1.0输出输出5KHz5KHz方波,即每隔方波,即每隔100s100s使使P1.0P1.0的电平变化一次,定时初值为的电平变化一次,定时初值为CEHCEH(256-100/2=206256-100/2=206)。)。主程序如下:主程序如下:MOV TL0 MOV TL0,38H 38H;赋计数初值;赋计数初值 MOV TH0 MOV TH0,0CEH0CEH;赋

47、定时初值;赋定时初值 MOV TL1 MOV TL1,BANDBAND;根据波特率要求设;根据波特率要求设 定常数定常数BANDBAND MOV TH1 MOV TH1,BANDBAND MOV TMOD MOV TMOD,27H27H;T1T1为模式为模式2 2定时,定时,T0 T0为模式为模式3 3计数计数 MOV TCON MOV TCON,50H50H;启动;启动T0T0、T1T1工作工作 MOV IE MOV IE,9AH9AH;开放;开放CPUCPU中断,开放中断,开放 串口、串口、T0T0、T1T1中断中断 MOV 60H MOV 60H,0 0 ;60H60H单元清零单元清零

48、HERE HERE:SJMP HERE SJMP HERE ;循环等待;循环等待TL0TL0计数溢出中断服务程序(由计数溢出中断服务程序(由000BH000BH转来)转来)MOV TLO MOV TLO,38H 38H;重赋初值;重赋初值 INC 60H INC 60H MOV A MOV A,60H60H CJNE A CJNE A,100100,LPLP SETB P1.2 SETB P1.2 CLR ET0 CLR ET0 ;关;关T0T0中断中断 CLR TR0 CLR TR0 LP LP:RETIRETITH0TH0溢出中断服务程序(由溢出中断服务程序(由001BH001BH转来)转

49、来)MOV TH0 MOV TH0,0CEH 0CEH ;重赋初值;重赋初值 CPL P1.0 CPL P1.0 ;P1.0P1.0输出取反输出取反 RETI RETI【例【例7-67-6】已知甲乙两台已知甲乙两台89C5189C51单片机所使用的单片机所使用的晶振均为晶振均为11.0592MHz11.0592MHz。现要求两机之间进行。现要求两机之间进行串行通信,甲机发送,乙机接收。传输波特串行通信,甲机发送,乙机接收。传输波特率定为率定为96009600。甲机以。甲机以78H78H、77H77H中的内容为发中的内容为发送数据的起始地址,以送数据的起始地址,以76H76H、75H75H中的内

50、容为中的内容为发送数据的末地址。甲机首先发送数据的起发送数据的末地址。甲机首先发送数据的起始地址和末地址,然后再开始发送数据。乙始地址和末地址,然后再开始发送数据。乙机以接收到的第机以接收到的第1 12 2字节作为存放接收数据字节作为存放接收数据的起始地址,第的起始地址,第3 34 4字节作为存放接收数据字节作为存放接收数据的末地址,第的末地址,第5 5字节为起始数据。字节为起始数据。解:设定时器解:设定时器1 1按模式按模式1 1工作,串行口也按模式工作,串行口也按模式 1 1工作。工作。程序如下:程序如下:甲机发送:甲机发送:ORG 2000H ORG 2000HTANTAN:MOV TM

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁