《第6章内部资源及应用教案.ppt》由会员分享,可在线阅读,更多相关《第6章内部资源及应用教案.ppt(78页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第6章内部资源及应用 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望6.1.1 6.1.1 中断技术概述中断技术概述1.1.中断的概念中断的概念当中央处理器当中央处理器CPUCPU正在执行某程序时,由于某种原因,外正在执行某程序时,由于某种原因,外界向界向CPUCPU发出了发出了暂停目前工作去处理更重要事件的请求,暂停目前工作去处理更重要事件的请求,程序程序被打断,被打断,CPUCPU响应该请求并转入相应的处理程序,处理程序完响应该请求并转入相应的处理程序,处理程
2、序完成以后,再返回到原来程序被打断的位置,继续原来工作,成以后,再返回到原来程序被打断的位置,继续原来工作,这一过程称为这一过程称为中断中断。实现中断功能的部件称为。实现中断功能的部件称为中断系统中断系统。2.2.中断技术的作用中断技术的作用计算机内有限的计算机内有限的CPUCPU资源要处理多项任务,实现多种外部资源要处理多项任务,实现多种外部设备之间外部数据传送,必然引起设备之间外部数据传送,必然引起CPUCPU资源短缺的局面。计算资源短缺的局面。计算机引入中断技术后,机引入中断技术后,解决了这种资源竞争的问题解决了这种资源竞争的问题,因此中断,因此中断技术实质上是一种资源共享技术。基于这种
3、资源共享思想,技术实质上是一种资源共享技术。基于这种资源共享思想,中断技术主要用于中断技术主要用于分时操作、实时处理、故障及时处理分时操作、实时处理、故障及时处理等。等。23.3.中断系统功能中断系统功能中断系统一般要完成以下功能。1 1)现场保护和现场恢复)现场保护和现场恢复某人看书某人看书 执行主程序执行主程序 日常事务日常事务电话铃响电话铃响 中断信号中断信号INT=0INT=0 中断请求中断请求暂停看书暂停看书 暂停执行主程序暂停执行主程序 中断响应中断响应书中记号书中记号 当前当前PCPC入栈入栈 保护断点保护断点电话谈话电话谈话 执行执行I/OI/O程序程序 中断服务中断服务继续看
4、书继续看书 返回主程序返回主程序 中断返回中断返回日日常常事事务务程程序序中中断断服服务务程程序序3主程序被断开的位置称为主程序被断开的位置称为断点断点,为了,为了CPUCPU完成中断服完成中断服务后,能够返回到原主程序的位置,就要保护断点务后,能够返回到原主程序的位置,就要保护断点处的现场状态,即将断点处的处的现场状态,即将断点处的PCPC值、相关寄存器的值、相关寄存器的内容、标志位等状态压入堆栈保存,该操作被称为内容、标志位等状态压入堆栈保存,该操作被称为保护断点和现场保护断点和现场。中断服务结束后,在返回主程序前,要将被保护的中断服务结束后,在返回主程序前,要将被保护的断点和现场恢复,即
5、弹出堆栈中被保存的内容至各断点和现场恢复,即弹出堆栈中被保存的内容至各相关寄存器,相关寄存器,该操作被称为现场恢复该操作被称为现场恢复。汇编语言程。汇编语言程序员在使用中断时,需要仔细考虑现场的保护和恢序员在使用中断时,需要仔细考虑现场的保护和恢复,高级程序员无需关心该问题,复,高级程序员无需关心该问题,C C编译器会自动完编译器会自动完成现场保护和恢复。成现场保护和恢复。42 2)中断优先权排队)中断优先权排队通常微型计算机系统有多个中断源,当有两个以通常微型计算机系统有多个中断源,当有两个以上的中断源同时向上的中断源同时向CPUCPU提出中断请求时,提出中断请求时,CPUCPU面临首先面临
6、首先为哪个中断源先服务的问题,微型计算机内都为这些为哪个中断源先服务的问题,微型计算机内都为这些中断源规定了中断响应的先后顺序中断源规定了中断响应的先后顺序优先级别,即优先级别,即不同的中断源享有不同的优先响应权利,称为不同的中断源享有不同的优先响应权利,称为中断优中断优先权先权,CPUCPU对多个中断源响应的优先权由高到低的排对多个中断源响应的优先权由高到低的排队,称为队,称为优先权排队优先权排队。CPUCPU总是首先响应优先权级别总是首先响应优先权级别高的中断请求。高的中断请求。5日常事务日常事务程序程序中断服务中断服务程序程序1 1中断服务中断服务程序程序2 23 3)中断嵌套)中断嵌套
7、当当CPUCPU正在执行某一中断服务程序时,可能有优先级别正在执行某一中断服务程序时,可能有优先级别更高的中断源发出中断请求,此时,更高的中断源发出中断请求,此时,CPUCPU将暂停当前的优先将暂停当前的优先级别低的中断服务,转而去处理优先级更高的中断申请,处级别低的中断服务,转而去处理优先级更高的中断申请,处理完后,再回到原低级中断处理程序,这一过程称为理完后,再回到原低级中断处理程序,这一过程称为中断嵌中断嵌套套,该中断系统称为,该中断系统称为多级中断系统多级中断系统。没有中断嵌套功能的中。没有中断嵌套功能的中断系统称为断系统称为单级中断系统单级中断系统。66.1.2 80C516.1.2
8、 80C51单片机中断系统单片机中断系统80C5180C51中断系统由中断源、中断标志、中断允许控制、中断优中断系统由中断源、中断标志、中断允许控制、中断优先级控制、中断查询硬件以及相应的特殊功能寄存器组成。先级控制、中断查询硬件以及相应的特殊功能寄存器组成。71.1.中断源中断源80C5l80C5l共有共有3 3类类5 5个中断源,分别是个中断源,分别是2 2个外部中断源、个外部中断源、2 2个定时个定时中断源、中断源、1 1个串行口接收个串行口接收/发送中断源。发送中断源。1 1)外部中断)外部中断外部中断是由外部请求信号或掉电等异常事故引起的,共有外部中断是由外部请求信号或掉电等异常事故
9、引起的,共有2 2个中断源:外部中断个中断源:外部中断0 0和和1 1,分别由引脚,分别由引脚 (P3.2P3.2)和)和 (P3.3P3.3)引入。)引入。2 2)定时中断)定时中断80C5l80C5l单片机内有两个定时器单片机内有两个定时器/计数器计数器T0T0、T1T1,通过一种计数,通过一种计数结构,实现定时结构,实现定时/计数功能,当计数值发生溢出时,表明已计数功能,当计数值发生溢出时,表明已经达到预期定时时间或计数值,定时器经达到预期定时时间或计数值,定时器/计数器的中断请求计数器的中断请求标志位标志位TF0TF0或或TF1TF1被置被置1 1,也就向,也就向CPUCPU发出了中断
10、请求的申请。发出了中断请求的申请。3 3)串行口中断)串行口中断当串行口接收或发送完一组数据时,便产生一个中断请求,当串行口接收或发送完一组数据时,便产生一个中断请求,特殊功能寄存器特殊功能寄存器SCONSCON中的中的RIRI或或TITI被置被置1 1。82.2.中断请求标志中断请求标志 要实现中断,要实现中断,首先中断源要提出中断请求首先中断源要提出中断请求,单片机内中断,单片机内中断请求的过程是特殊功能寄存器请求的过程是特殊功能寄存器TCONTCON和和SCONSCON相关状态位相关状态位中断中断请求标志位置请求标志位置1 1的过程,当的过程,当CPUCPU响应中断时,中断请求标志位才响
11、应中断时,中断请求标志位才由硬件或软件清由硬件或软件清0 0。1 1)TCONTCON中的中断标志位中的中断标志位 该寄存器用于保存外部中断请求,以及作为定时器的计数该寄存器用于保存外部中断请求,以及作为定时器的计数溢出标记。既可以对其整个字节寻址,又溢出标记。既可以对其整个字节寻址,又可对其位寻址可对其位寻址。寄存。寄存器地址器地址88H88H,位地址,位地址8FH8FH88H88H,这个寄存器既有,这个寄存器既有定时器定时器/计数器计数器的控制功能的控制功能又有又有中断控制功能中断控制功能,其中与中断有关的控制位共,其中与中断有关的控制位共6 6位:位:IE0IE0和和IE1IE1、IT0
12、IT0和和IT1IT1以及以及TF0TF0和和TF1TF1。91.1.中断标志位:中断标志位:TF1 TF1、TF0TF0、IE1IE1、IE0IE0、RIRI 、TITI 登记各中断源请求信号:登记各中断源请求信号:=1=1,有中断请求;,有中断请求;=0 =0,无中断请求。,无中断请求。CPU CPU响应中断后,该中断标志自动清零。响应中断后,该中断标志自动清零。TITI,RIRI标志必标志必须软件清零。须软件清零。位地址位地址 8FH8FH8EH8EH8DH8DH 8CH8CH 8BH8BH 8AH8AH 89H89H 88H88H位符号位符号 TF1TF1TR1TR1TF0TF0 TR
13、0TR0 IE1IE1 IT1IT1 IE0IE0 IT0IT0定时控制寄存器定时控制寄存器TCONTCON位地址和为符号位地址和为符号104 4中断优先级控制位:中断优先级控制位:PSPS、PT1PT1、PX1PX1、PT0PT0、PX0PX0 2 2级优先级:级优先级:=1=1为高优先级,为高优先级,=0=0为低优先级。为低优先级。同一优先级别按内部查询顺序排列优先级:同一优先级别按内部查询顺序排列优先级:高高 INT0INT0、T0T0、INT1INT1、T1T1、SI/O SI/O 低。低。3.3.中断允许控制位:中断允许控制位:EAEA、ESES、ET1ET1、EX1EX1、ET0E
14、T0、EX0EX0 =1 =1开中断;开中断;=0=0关中断。关中断。例:允许例:允许CPUCPU响应响应INT0INT0的中断请求的中断请求汇编语言汇编语言C C语言语言SETB EX0 SETB EX0 EX0=1;EX0=1;SETB EASETB EAEA=1;EA=1;2.2.外部中断触发方式选择位:外部中断触发方式选择位:IT0IT0、IT1IT1 =1 =1:下降沿触发中断请求;:下降沿触发中断请求;=0=0:低电平触发中断请求。:低电平触发中断请求。112 2)SCONSCON中的串行中断标志位中的串行中断标志位SCONSCON寄存器地址寄存器地址98H98H,位地址,位地址9
15、FH-98H9FH-98H,其中的低,其中的低2 2位位RIRI和和TITI锁存串行口的接收中断和发送中断的申请标志位。锁存串行口的接收中断和发送中断的申请标志位。SM0SM0,SM1SM1:选择串行口:选择串行口4 4种工作方式。种工作方式。SM2SM2 :多机控制位,用于多机通讯。:多机控制位,用于多机通讯。RENREN :允许接收控制位,:允许接收控制位,REN=1REN=1允许接收;允许接收;REN=0REN=0禁止接收。禁止接收。TB8TB8 :发送的第发送的第9 9位数据位,可用作校验位和地址位数据位,可用作校验位和地址/数据标识位数据标识位RB8RB8 :接收的第:接收的第9 9
16、位数据位或停止位位数据位或停止位TITI :发送中断标志,发送一帧结束,:发送中断标志,发送一帧结束,TI=1TI=1,必须软件清零,必须软件清零RIRI :接收中断标志,接收一帧结束,:接收中断标志,接收一帧结束,RI=1RI=1,必须软件清零,必须软件清零位地址位地址9FH9FH9EH9EH9DH9DH9CH9CH 9BH9BH 9AH9AH99H99H 98H98H位符号位符号SM0SM0SM1SM1SM2SM2RENREN TB8TB8RB8RB8TITIRIRI12寄存器名称寄存器名称D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0定时器定时器控制控制寄存器寄存器TC
17、ON(88HTCON(88H)TF1TF1TF0TF0IE1IE1 IT1IT1 IE0IE0 IT0IT0位地址位地址8FH8FH8EH8EH 8DH8DH 8CH8CH 8BH8BH 8AH8AH 89H89H 88H88H串行口串行口控制控制寄存器寄存器SCON(98HSCON(98H)SM0SM0SM1SM1 SM2SM2 RENREN TB8TB8 RB8RB8 TITIRIRI位地址位地址9FH9FH9EH9EH 9DH9DH 9CH9CH 9BH9BH 9AH9AH 99H99H 98H98H中断允中断允许许寄存器寄存器IE(A8H)IE(A8H)EAEAESESET1ET1EX
18、1EX1 ET0ET0 EX0EX0位地址位地址AFHAFHACHACH ABHABH AAHAAH A9HA9H A8HA8H中断优中断优先级先级寄存器寄存器IP(B8H)IP(B8H)PSPSPT1PT1 PX1PX1 PT0PT0 PX0PX0位地址位地址BCHBCHBBHBBH BAHBAH B9HB9H B8HB8H133.3.中断控制中断控制中断控制主要通过中断控制主要通过中断允许中断允许寄存器寄存器IEIE和中断和中断优先级优先级寄存器寄存器IPIP实现。实现。1 1)中断允许控制)中断允许控制中断源申请后,中断能否被响应,取决于中断源申请后,中断能否被响应,取决于CPUCPU对
19、中断源的开放或屏蔽状对中断源的开放或屏蔽状态,由内部的中断允许寄存器态,由内部的中断允许寄存器IEIE进行控制,进行控制,IEIE的地址是的地址是A8HA8H,位地址为,位地址为AFHAFHA8HA8H。2 2)中断优先级控制)中断优先级控制80C5180C51有有两个中断优先级两个中断优先级,每个中断源均可通过软件设置为高优先级或,每个中断源均可通过软件设置为高优先级或低优先级中断,实现低优先级中断,实现2 2级中断嵌套。高优先级中断请求可以中断一个正在执级中断嵌套。高优先级中断请求可以中断一个正在执行的低优先级中断服务,除非正在执行的低优先级中断服务程序设置了禁止行的低优先级中断服务,除非
20、正在执行的低优先级中断服务程序设置了禁止CPUCPU中断某些高优先级的中断。正在执行的中断服务程序不能被另一个同级中断某些高优先级的中断。正在执行的中断服务程序不能被另一个同级或低优先级的中断所中断,正在执行高优先级的中断服务程序,不能被任何或低优先级的中断所中断,正在执行高优先级的中断服务程序,不能被任何中断源中断,一直执行到返回指令中断源中断,一直执行到返回指令RETIRETI,返回主程序,而后再执行一条指令,返回主程序,而后再执行一条指令后,才能响应新的中断申请。后,才能响应新的中断申请。中断允中断允许许寄存器寄存器IE(A8H)IE(A8H)EAEAESESET1ET1EX1EX1 E
21、T0ET0 EX0EX0位地址位地址AFHAFHACHACH ABHABH AAHAAH A9HA9H A8HA8H14 特殊功能寄存器特殊功能寄存器IPIP为中断优先级控制寄存器,其地址为为中断优先级控制寄存器,其地址为B8HB8H,位地址为,位地址为BFHBFHB8HB8H,各位内容如表所示。,各位内容如表所示。中断优先级控制寄存器中断优先级控制寄存器PX0PX0:外部中断:外部中断0 0中断优先级控制位。中断优先级控制位。PX0=lPX0=l,外部中断,外部中断0 0定义为高优先定义为高优先级中断;级中断;PX0=0PX0=0,为低优先级中断。,为低优先级中断。PT0PT0:定时器:定时
22、器0 0中断优先级控制位。中断优先级控制位。PT0=1PT0=1,定时器,定时器T0T0中断定义为高优先中断定义为高优先级中断;级中断;PT0=0PT0=0,为低优先级中断。,为低优先级中断。PX1PX1:外部中断:外部中断1 1中断优先级控制位。中断优先级控制位。PX1=lPX1=l,外部中断,外部中断1 1定义为高优先级定义为高优先级中断;中断;PX1=0PX1=0,为低优先级中断。,为低优先级中断。PT1PT1:定时器:定时器1 1中断优先级控制位。中断优先级控制位。PT1=1PT1=1,定时器,定时器T1T1中断定义为高优先中断定义为高优先级中断;级中断;PT1=0PT1=0,为低优先
23、级中断。,为低优先级中断。PSPS:串行口中断优先级控制位。:串行口中断优先级控制位。PS=1PS=1时,串行口中断定义为高优先级中断;时,串行口中断定义为高优先级中断;PS=0PS=0时,为低优先级中断。时,为低优先级中断。当系统复位后,当系统复位后,IPIP的所有位被清的所有位被清0 0,所有的中断源均被定,所有的中断源均被定义为低优级中断。义为低优级中断。IPIP的各位都可用程序置位和复位,也可用的各位都可用程序置位和复位,也可用位操作指令或字节操作指令更新位操作指令或字节操作指令更新IPIP的内容,以改变各中断源的内容,以改变各中断源的中断优先级。的中断优先级。当同一优先级的几个中断源
24、同时向当同一优先级的几个中断源同时向CPUCPU提出中断请求时,提出中断请求时,CPUCPU通过内部硬件查询逻辑电路,按查询顺序判定优先响应哪通过内部硬件查询逻辑电路,按查询顺序判定优先响应哪一个中断请求,其查询顺序如下:外部中断一个中断请求,其查询顺序如下:外部中断0 0、定时中断、定时中断0 0、外部中断外部中断1 1、定时中断、定时中断1 1、串行中断。、串行中断。154.4.中断处理过程中断处理过程一个完整的中断处理过程包括中断请求、中断响应、中断服一个完整的中断处理过程包括中断请求、中断响应、中断服务、中断返回几个部分。务、中断返回几个部分。1 1)中断响应)中断响应 中断响应指系统
25、满足中断条件,中断响应指系统满足中断条件,CPUCPU对中断请求做出反应,对中断请求做出反应,程序执行程序执行转向中断服务程序入口地址的过程转向中断服务程序入口地址的过程。CPU CPU要响应中断请求,除了前面介绍的要有中断请求、中要响应中断请求,除了前面介绍的要有中断请求、中断被允许基本条件外,如果出现下列情况之一,则中断响应断被允许基本条件外,如果出现下列情况之一,则中断响应将被阻止:将被阻止:情况一:情况一:CPUCPU正在处理同级的或更高优先级的中断。正在处理同级的或更高优先级的中断。情况二:当前的机器周期不是所执行指令的最后一个机器周情况二:当前的机器周期不是所执行指令的最后一个机器
26、周 期,期,CPUCPU不会响应任何中断请求。不会响应任何中断请求。情况三:正在执行的指令是情况三:正在执行的指令是RETIRETI或是访问或是访问IEIE或或IPIP的指令。的指令。CPUCPU 完成这类指令后,至少还要再执行一条指令才会响完成这类指令后,至少还要再执行一条指令才会响 应新的中断请求,以便保证程序能够正确地返回。应新的中断请求,以便保证程序能够正确地返回。如果存在上述任何一个情况,如果存在上述任何一个情况,CPUCPU都会丢弃中断查询结果,都会丢弃中断查询结果,否则将在随后的机器周期开始响应中断。否则将在随后的机器周期开始响应中断。16 CPU CPU在每个机器周期的在每个机
27、器周期的S5P2S5P2(S5S5的第的第2 2个时钟周期)对个时钟周期)对 或或 进进行采样,并设置中断标志位的状态,而其他中断源的中断请求发生在单片行采样,并设置中断标志位的状态,而其他中断源的中断请求发生在单片机内部,直接设置相应的中断标志位的状态。机内部,直接设置相应的中断标志位的状态。CPUCPU在每个机器周期的在每个机器周期的S6S6按按顺序查询每个中断请求标志位,如果有中断请求满足所有中断允许条件,顺序查询每个中断请求标志位,如果有中断请求满足所有中断允许条件,则则CPUCPU将在下个机器周期的将在下个机器周期的S1S1按中断优先级响应激活最高级中断请求。按中断优先级响应激活最高
28、级中断请求。CPU CPU响应中断时,先置位相应的高响应中断时,先置位相应的高/低优先级状态触发器,指出低优先级状态触发器,指出CPUCPU开开始处理的中断优先级别,然后由硬件生成一条长调用指令始处理的中断优先级别,然后由硬件生成一条长调用指令LCALLLCALL,其格式,其格式为:为:LCALL addr16LCALL addr16,其中,其中addr16addr16是在程序存储区中与各中断请求对应的中是在程序存储区中与各中断请求对应的中断入口地址,也称为中断向量地址。断入口地址,也称为中断向量地址。CPU CPU执行该执行该LCALLLCALL指令,由硬件自动清除有关中断请求标志位(指令,
29、由硬件自动清除有关中断请求标志位(TITI和和RIRI除外),将程序计数器除外),将程序计数器PCPC的内容压入堆栈以保护断点(但不保护的内容压入堆栈以保护断点(但不保护PSWPSW),),再将被响应的中断入口地址装入再将被响应的中断入口地址装入PCPC,开始进入中断服务。程序存储区中为,开始进入中断服务。程序存储区中为各中断服务程序只分配了各中断服务程序只分配了8 8个单元,一般情况下难以安排下一个完整的中个单元,一般情况下难以安排下一个完整的中断服务程序。因此通常总是在各中断区入口地址处放置一条无条件转移指断服务程序。因此通常总是在各中断区入口地址处放置一条无条件转移指令令LJMP add
30、r16LJMP addr16,使程序执行转向在其他地址存放的中断服务程序。,使程序执行转向在其他地址存放的中断服务程序。172 2)中断响应时间)中断响应时间 一个中断,从查询中断请求标志位到转向中断区一个中断,从查询中断请求标志位到转向中断区入口地址要经历一段时间,入口地址要经历一段时间,即为中断响应时间即为中断响应时间。不。不同中断情况,中断响应时间也是不一样的。同中断情况,中断响应时间也是不一样的。最短的响应时间为最短的响应时间为3 3个机器周期。如果中断响应个机器周期。如果中断响应受阻,不同情况需要不同的响应时间,最长响应时受阻,不同情况需要不同的响应时间,最长响应时间为间为8 8个机
31、器周期。一般情况下,在一个单中断系统个机器周期。一般情况下,在一个单中断系统里,外部中断响应时间总是在里,外部中断响应时间总是在3 38 8个机器周期之间。个机器周期之间。如果出现有同级或高级中断正在响应或服务中需等如果出现有同级或高级中断正在响应或服务中需等待的时候,那么响应时间就无法计算了。待的时候,那么响应时间就无法计算了。3 3)中断服务流程)中断服务流程中断服务程序从入口地址开始执行,到返回中断服务程序从入口地址开始执行,到返回指令指令RETIRETI为止,中间经历了关中断、保护现场和为止,中间经历了关中断、保护现场和断点、开中断、中断服务、关中断、恢复现场、断点、开中断、中断服务、
32、关中断、恢复现场、开中断、返回断点几个阶段。开中断、返回断点几个阶段。中断服务流程图中断服务流程图18由于由于80C5180C51单片机内不具有自动关中断的功能,因此单片机内不具有自动关中断的功能,因此进入服务子程序后,必须通过指令关闭中断,为下一步保进入服务子程序后,必须通过指令关闭中断,为下一步保护现场和断点做准备。护现场和断点做准备。保护现场保护现场就是在程序进入中断服务程序入口之前,将就是在程序进入中断服务程序入口之前,将相关寄存器内容、标志位状态等压入堆栈,避免在运行中相关寄存器内容、标志位状态等压入堆栈,避免在运行中断服务程序时,破坏这些数据或状态,保证中断返回后,断服务程序时,破
33、坏这些数据或状态,保证中断返回后,主程序能够正常运行。然后,再打开中断,允许响应别的主程序能够正常运行。然后,再打开中断,允许响应别的中断请求。接着可以执行中断服务,中断服务是用户最终中断请求。接着可以执行中断服务,中断服务是用户最终要实现的具体功能。在返回主程序之前,关闭中断,恢复要实现的具体功能。在返回主程序之前,关闭中断,恢复现场,再用指令开中断,以便现场,再用指令开中断,以便CPUCPU响应新的中断请求。中响应新的中断请求。中断服务程序的最后一条指令是断服务程序的最后一条指令是RETIRETI,用来返回断点。,用来返回断点。保护现场和恢复现场可通过堆栈操作指令保护现场和恢复现场可通过堆
34、栈操作指令PUSH PUSH directdirect和和POP direct POP direct 实现,要保护的现场内容,取决于实现,要保护的现场内容,取决于用户的对具体情况的需求。用户的对具体情况的需求。C51C51编译器会自动完成编译器会自动完成ACCACC、B B、DPHDPH、DPLDPL、PSWPSW、R0R0R7R7的保护和恢复。的保护和恢复。C51C51程序员无需保护现场和恢复现场。程序员无需保护现场和恢复现场。195.5.中断请求的撤除中断请求的撤除 中断响应后,中断响应后,TCONTCON和和SCONSCON中的中断请求标志应及时清除。否则中断请中的中断请求标志应及时清除
35、。否则中断请求将仍然存在,并引起错误的中断响应。不同的中断请求,其撤除方法求将仍然存在,并引起错误的中断响应。不同的中断请求,其撤除方法也不一样。也不一样。对于对于定时中断定时中断,中断响应后,中断响应后,硬件自动硬件自动对中断标志位对中断标志位TF0TF0或或TFlTFl清清0 0,中断请求中断请求自动撤除自动撤除,无需采取其他措施。,无需采取其他措施。对于对于脉冲触发脉冲触发的的外部中断外部中断请求,在中断响应后,也同样通过请求,在中断响应后,也同样通过硬件自动硬件自动对中断请求标志位对中断请求标志位IE0IE0或或IE1IE1清清0 0,即中断请求的撤除也是自动的。,即中断请求的撤除也是
36、自动的。对于对于电平触发电平触发的的外部中断外部中断请求,情况则不同。中断响应后,硬件不能请求,情况则不同。中断响应后,硬件不能自动对中断请求标志位自动对中断请求标志位IE0IE0或或IE1IE1清清0 0。中断撤除,要靠撤除。中断撤除,要靠撤除 或或引脚上的低电平才能有效。引脚上的低电平才能有效。对于对于串行中断串行中断,其中断标志位,其中断标志位TITI和和RIRI,不进行自动清,不进行自动清0 0。因为在中。因为在中断响应后,还要测试这两个标志位的状态,以判定是接收操作还是发断响应后,还要测试这两个标志位的状态,以判定是接收操作还是发送操作,然后才能清除。所以串行中断请求的送操作,然后才
37、能清除。所以串行中断请求的撤除是通过软件方法撤除是通过软件方法,在中断服务程序中实现的。在中断服务程序中实现的。206.1.3 C516.1.3 C51中断服务函数中断服务函数中断系统十分重要,中断系统十分重要,C51C51编译器允许在编译器允许在C C语言源程序中语言源程序中声明中断和编写中断服务程序,从而减轻了采用汇编程序声明中断和编写中断服务程序,从而减轻了采用汇编程序编写中断服务程序的繁琐程度。通过使用编写中断服务程序的繁琐程度。通过使用interruptinterrupt关键字关键字实现。定义中断服务程序的一般格式如下:实现。定义中断服务程序的一般格式如下:void void 函数名
38、函数名()interrupt n using m()interrupt n using musing musing m指明该中断服务程序所对应的工作寄存器组,指明该中断服务程序所对应的工作寄存器组,m m取值范围为:取值范围为:0 03 3。指定工作寄存器组的缺点是,所有被。指定工作寄存器组的缺点是,所有被中断调用的过程都必须使用同一个寄存器组,否则参数传中断调用的过程都必须使用同一个寄存器组,否则参数传递会发生错误。通常不设定递会发生错误。通常不设定using musing m,除非保证中断程序中,除非保证中断程序中未调用其他子程序。未调用其他子程序。P187P188P187P188例子例子
39、216.2 6.2 定时器定时器/计数器计数器 80C51 80C51的单片机内有的单片机内有2 2个个1616位可编程的定时器位可编程的定时器/计数器,它们具有计数器,它们具有4 4种工作方式,其控制字和状态均在相应的特殊功能寄存器中,通过对种工作方式,其控制字和状态均在相应的特殊功能寄存器中,通过对控制寄存器的编程,就可方便地选择适当的工作方式。控制寄存器的编程,就可方便地选择适当的工作方式。6.2.1 6.2.1 定时器定时器/计数器计数器0 0、1 1的结构及工作原理的结构及工作原理1.1.定时器定时器/计数器计数器0 0、1 1的结构的结构定时器定时器/计数器计数器T0T0、T1T1
40、的内部结构框图如图的内部结构框图如图1 1所示:所示:图图1 1 定时器定时器/计数器内部结构逻辑图计数器内部结构逻辑图222.加1计数器定时器/计数器T0、T1都有一个16位的加1计数器,它们分别由8位特殊功能寄存器TH0、TL0和TH1、TL1组成。加1计数器的初值可以通过程序进行设定,设定不同的初值,就可以获得不同的计数值或定时时间。3.定时控制寄存器(TCON)定时控制寄存器TCON是个8位寄存器,它不仅参与定时控制,还参与中断请求控制。既可以对其整个字节寻址,又可以对其位寻址,各位的地址及其对应的功能参见P192。定时器溢出使定时器溢出使TFx=1TFx=1,引起中断请求,引起中断请
41、求,CPUCPU响应响应TxTx中断后,中断后,自动清自动清0 TFx0 TFx。1 1)启动控制位)启动控制位TR0TR0、TR1TR1=0=0,停止定时器工作停止定时器工作=1=1,启动定时器工作,启动定时器工作2 2)溢出中断标志位)溢出中断标志位TF0TF0、TF1TF1可用软件检测可用软件检测TFxTFx,必须软件清,必须软件清0 0。234.4.工作方式控制寄存器(工作方式控制寄存器(TMODTMOD)工作方式控制寄存器工作方式控制寄存器TMODTMOD,用来设定定时器,用来设定定时器/计数器计数器T0T0、T1T1的工作方式。的工作方式。TMODTMOD寄存器只能进行字节寻址。寄
42、存器只能进行字节寻址。2 2个可独立控制的个可独立控制的1616位定时器位定时器/计数器:计数器:T0T0、T1T11 1)功能选择位)功能选择位C/TC/T:C/T C/T=0=0,定时功能,计数内部机器周期脉冲;,定时功能,计数内部机器周期脉冲;C/T C/T=1=1,计数功能,计数引脚,计数功能,计数引脚T0(T1)T0(T1)输入的负脉冲。输入的负脉冲。2 2)方式选择位)方式选择位M1M1、M0M0:4 4种工作方式:种工作方式:13/16/813/16/8位位T1T1T0T024 图图2 2 定时器定时器/计数器逻辑结构计数器逻辑结构计数功能:计数功能:对外部事件产生的脉冲进行计数
43、。对于对外部事件产生的脉冲进行计数。对于80C5180C51单单片机,当图片机,当图2 2中中C/C/=1=1,T0T0(P3.4P3.4)或)或T1T1(P3.5P3.5)两个信号引)两个信号引脚输入信号脉冲发生负跳变时,加脚输入信号脉冲发生负跳变时,加1 1计数器自动加计数器自动加1 1。定时功能:定时功能:对单片机内部机器周期产生的脉冲进行计数,即对单片机内部机器周期产生的脉冲进行计数,即当图当图2 2中中C/C/=0=0,每个机器周期计数器自动加,每个机器周期计数器自动加1 1。如果单片机的。如果单片机的晶体频率为晶体频率为12MHz12MHz,则计数频率为,则计数频率为1MHz1MH
44、z,或者说计数器每加,或者说计数器每加1 1,可实现可实现1us1us的定时。的定时。256.2.2 6.2.2 定时器定时器/计数器计数器0 0、1 1的四种工作方式的四种工作方式 定时器定时器/计数器计数器T0T0、T1T1可以有四种不同的工作方式:方式可以有四种不同的工作方式:方式0 0、方式、方式1 1、方式方式2 2、方式、方式3 3。1.1.方式方式0 0 当当TMODTMOD中中M1M0M1M0 =00=00时,定时器时,定时器/计数器选定方式计数器选定方式0 0进行工作。进行工作。图图6.7 6.7 定时器定时器/计数器计数器0 0的工作方式的工作方式0 0电路逻辑结构电路逻辑
45、结构26C/C/=1=1时,图中电子开关时,图中电子开关S S1 1,打在下端,定时器,打在下端,定时器/计数计数器处于器处于计数器状态计数器状态,加法计数器对,加法计数器对T0T0引脚上的外部输入脉引脚上的外部输入脉冲计数。计数值:冲计数。计数值:N N=8192-=8192-x x计数初值计数初值x x是是TH0TH0、TL0TL0设定的初值。设定的初值。x x=8191=8191时为最小计时为最小计数值数值l l,x x=0=0时为最大计数值时为最大计数值81928192,即,即计数范围计数范围为为1 181928192(2 21313)。)。C/C/=0=0时,图时,图6.76.7中电
46、子开关中电子开关S1S1,打在上端,振荡脉,打在上端,振荡脉冲的冲的1212分频输出,分频输出,1313位定时器位定时器/计数器处于定时器状态,计数器处于定时器状态,加法计数器对加法计数器对机器周期(机器周期(T Tcycy)脉冲计数)脉冲计数。定时时间:。定时时间:T Td=(8192-d=(8192-x x)T Tcycy 或或 T Td d =(8192-=(8192-x x)T Tcp12cp1227如果晶振频率如果晶振频率f foscosc=12MHz=12MHz,机器周期为,机器周期为1us1us,则定时范围为,则定时范围为1us1us8192us8192us。随着计数的增大,随着
47、计数的增大,TL0TL0的低的低5 5位溢出后自动向位溢出后自动向TH0TH0进位,进位,TH0TH0溢出后,将溢出标志位溢出后,将溢出标志位TF0TF0置位,并向置位,并向CPUCPU发出中断请求发出中断请求。图图6.76.7中控制开关中控制开关S S2 2控制定时器控制定时器/计数器的启动或停止,计数器的启动或停止,开关开关S S2 2的控制信号为的控制信号为:I I=当当GATE=0GATE=0时时,=1=1,信号不起作用,开关,信号不起作用,开关S2S2的状态由决定,即的状态由决定,即TR0=1TR0=1时,启动定时器时,启动定时器/计数器;计数器;TR0 TR0=0=0时,关闭定时器
48、时,关闭定时器/计数器。计数器。当当GATE=1GATE=1时时,上式中,上式中I I=TR0 TR0,开关,开关S2S2的状态由的状态由 TR0 TR0决定,所以仅当决定,所以仅当TR0=1TR0=1且位于高电平时,开关且位于高电平时,开关S2S2闭合,才能启动定时器闭合,才能启动定时器/计数器计数器0 0工作。如果上出现低电平,则停止工作,利用门控位这一工作。如果上出现低电平,则停止工作,利用门控位这一特征,可以测量外信号的脉冲宽度。特征,可以测量外信号的脉冲宽度。282.2.方式方式1 1当当TMODTMOD中中M1M0M1M0 =01=01时,定时器时,定时器/计数器选定方式计数器选定
49、方式1 1进行工作。图进行工作。图4 4是是T0T0工作工作在方式在方式1 1下的逻辑结构图(定时器下的逻辑结构图(定时器/计数器计数器1 1与其完全一致)。与其完全一致)。其逻辑结构与方其逻辑结构与方式式0 0不同的是两个不同的是两个8 8位寄存器位寄存器TH0TH0和和TL0TL0全部构成了一个全部构成了一个1616位的定时器位的定时器/计数器,计数器,其他与工作方式其他与工作方式0 0完全相同完全相同。图图4 4 定时定时/计数器计数器0 0的工作方式的工作方式1 1电路逻辑结构电路逻辑结构在该工作方式下,当作为计数器使用时,其计数范围是在该工作方式下,当作为计数器使用时,其计数范围是1
50、 16553665536(2 21616)作为定时器使用时,定时器的定时时间为:作为定时器使用时,定时器的定时时间为:T Td=(2d=(21616-Count)-Count)T Tcycy 或或T Td d =(2=(21616-Count)12-Count)12T Tcpcp如果晶振频率如果晶振频率f fosc=12MHzosc=12MHz,则定时范围为,则定时范围为1 16553665536。293.3.方式方式2 2以上工作方式以上工作方式0 0、方式、方式1 1计数器具有共同的特点,即计计数器具有共同的特点,即计数器发生溢出现象后,数器发生溢出现象后,自动处于自动处于0 0状态状态,