《第6章80C51的中断系统及定时计数器课件.ppt》由会员分享,可在线阅读,更多相关《第6章80C51的中断系统及定时计数器课件.ppt(73页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第6 6章章 80C5180C51的中断系统及定时的中断系统及定时/计数器计数器 6.1 中中断概断概述述6.2 中断处理过程中断处理过程6.3 80C51的中断系统及其控制的中断系统及其控制6.4 80C51的中断源的扩展的中断源的扩展6.5 80C51的定时的定时/计数器及其应用计数器及其应用6.1 6.1 中断概述中断概述1.1.中断的概念中断的概念CPUCPU在正常执行程序过程中,由于一些突发事在正常执行程序过程中,由于一些突发事件或故障的产生,导致件或故障的产生,导致CPUCPU暂时中止当前操作,暂时中止当前操作,而转去执行处理突发事件或故障的相应程序,而转去执行处理突发事件或故障
2、的相应程序,并且在该程序执行完成之后,返回原程序继续并且在该程序执行完成之后,返回原程序继续执行,这样的过程叫做中断执行,这样的过程叫做中断 。原来正常执行的程序称为主程序;用来处理突发事件或故障的程序称为中断处理子程序或中断服务子程序;导致中断产生的原因称为中断源;主程序被中断源打断,转去执行中断服务子程序的位置称为断点。2.2.中断的作用中断的作用用于实现突发事件和故障处理用于实现突发事件和故障处理用于实现同步操作用于实现同步操作可用于实现实时处理可用于实现实时处理用于操作系统对硬件的管理用于操作系统对硬件的管理3.3.中断源的分类中断源的分类从中断执行过程的角度来看,可以分成两类:从中断
3、执行过程的角度来看,可以分成两类:(1 1)处理器预先考虑的中断)处理器预先考虑的中断(2 2)处理器没有预先考虑而需要扩展的中断)处理器没有预先考虑而需要扩展的中断6.2 6.2 中断处理过程中断处理过程 1.1.简单中断(只有一个中断源)简单中断(只有一个中断源)(1)中断源识别和中断入口地址查找)中断源识别和中断入口地址查找(2)保护断点)保护断点 程序计数器或指令指针入栈,由硬件自动完成。程序计数器或指令指针入栈,由硬件自动完成。(3)执行中断服务子程序)执行中断服务子程序保护现场,程序主体,恢复现场保护现场,程序主体,恢复现场(4)中断返回)中断返回 2.2.复杂中断的执行复杂中断的
4、执行 系统中多个中断同时发生和发生时正在执行中断系统中多个中断同时发生和发生时正在执行中断服务子程序,服务子程序,则出现了复杂中断管理的问题。则出现了复杂中断管理的问题。(1)中断优先级)中断优先级 给不同的中断源设置不同优先权等级,多个中断给不同的中断源设置不同优先权等级,多个中断源同时申请中断,处理器优先响应优先级高的中断。源同时申请中断,处理器优先响应优先级高的中断。这就是处理器的中断排队原则。这就是处理器的中断排队原则。(2)中断嵌套)中断嵌套 高级中断是否可以打断低级中断;高级中断是否可以打断低级中断;低级中断是否可以打断高级中断;低级中断是否可以打断高级中断;同级中断是否可以打断同
5、级中断;同级中断是否可以打断同级中断;6.3 80C516.3 80C51的中断系统及其控制的中断系统及其控制1.80C511.80C51的中断系统结构及中断源的中断系统结构及中断源 有有5个中断源个中断源 定时定时/计数器计数器0(T0)和定时和定时/计数器计数器1(T1)中断中断 串行通信接口中断串行通信接口中断(TX,RX)外部中断外部中断0和外部中断和外部中断1 中断请求中断请求中断允许中断允许中断优先中断优先外部中断外部中断触发方式触发方式2.2.中断源和中断申请标志位中断源和中断申请标志位单片机有单片机有6个中断申请标志位,分布在个中断申请标志位,分布在TCON 和和SCON中。中
6、。复位后所有中断申请标志位清零,表示没有中断申复位后所有中断申请标志位清零,表示没有中断申请。请。每个标志位可以按位寻址,编程时可以用标志每个标志位可以按位寻址,编程时可以用标志位名称。位名称。(1)TCONTCON的地址是的地址是88H位地位地址址8FH8EH8DH8CH8BH8AH89H88H位名位名称称TF1 TF0 IE1IT1IE0IT0TF1TF1:定时:定时/计数器计数器1(T1)1(T1)中断申请标志位,当计数器计数溢中断申请标志位,当计数器计数溢出时,该位置为出时,该位置为1 1。在中断被响应后,该位由硬件自动清除。在中断被响应后,该位由硬件自动清除。在查询方式下由软件清除。
7、在查询方式下由软件清除。TF0 TF0:定时:定时/计数器计数器0(T0)0(T0)中断申请标志位。具体操作同中断申请标志位。具体操作同TF1TF1。IE1IE1:外部中断:外部中断1 1中断标志。在外部中断设为下降沿触发时,中断标志。在外部中断设为下降沿触发时,引脚的下降沿设置该位为引脚的下降沿设置该位为1 1,中断被响应后,该位自动清零;中断被响应后,该位自动清零;在外部中断设为低电平触发时,该位的值与引脚的电平相反。在外部中断设为低电平触发时,该位的值与引脚的电平相反。IE0IE0:外部中断外部中断0 0中断标志位。具体操作同中断标志位。具体操作同IE1IE1。IT1IT1:外部中断:外
8、部中断1 1触发方式选择位。触发方式选择位。IT1=1IT1=1,引脚为下降沿触,引脚为下降沿触发发;IT1=0IT1=0,引脚为低电平触发,引脚为低电平触发。IT0 IT0:外部中断:外部中断0 0触发方式选择位。具体操作同触发方式选择位。具体操作同IT1IT1。当定时当定时/计数器计数溢出时,在最近机器周期的计数器计数溢出时,在最近机器周期的S5P2期间向中断标志位进位,从而设置中断标志位期间向中断标志位进位,从而设置中断标志位TF0或者或者TF1为为1。中断标志位置中断标志位置1后,会一直保持到中断被响应,然后,会一直保持到中断被响应,然后单片机内部硬件自动对它清零;查询方式下,即没后单
9、片机内部硬件自动对它清零;查询方式下,即没有使用中断,只能用软件清零有使用中断,只能用软件清零。定时/计数器中断外部中断 分别是从(P3.2)和(P3.3)引脚输入。当ITX=0时,外部中断X为低电平触发,ITX=1时为下降沿触发。(X=0,1)下降沿触发时:在每个机器周期的S5P2期间扫描外部中断输入引脚的电平状态。在连续两次扫描到高电平和低电平时,连续两次扫描到高电平和低电平时,设置中断标志位设置中断标志位IExIEx为为1 1,表示外部有中断申请,该中断申请该中断申请信号会一直保持到该外部中断被处理器响应后,信号会一直保持到该外部中断被处理器响应后,由硬件自动由硬件自动清除。清除。低电平
10、触发时,引脚变为低电平时,IEx为1,表示有外部中断申请,并一直保持为1,直到外部中断引脚变为高电平,中断标志IEx位才清0。电平触发时,外部中断申请的电平必须保持外部中断输入引脚为低电平,直到中断被响应,而且必须在中断被响应后变成高电平,以撤销中断申请。若低电平时间太短,则可能导致中断不会被响应;若太长,在中断子程序执行完成后仍为低电平,IEx会保持为1不变,会被认为是新的中断申请,导致一次中断申请多次响应。TI:串口发送完成中断标志。:串口发送完成中断标志。TI=1,表示一帧数据,表示一帧数据发送完毕。发送完毕。RI:串口接收数据中断标志。:串口接收数据中断标志。RI=1,表示串口接收,表
11、示串口接收到一帧新的数据。到一帧新的数据。(2 2)SCONSCON中的标志位及串口中断中的标志位及串口中断 SCON的地址是的地址是98H 位地位地址址9FH9EH9DH9CH9BH9AH99H98H位名位名称称 TIRI串口发送中断:串口发送中断:把数据写入把数据写入SBUFSBUF后,硬件自动逐位从后,硬件自动逐位从TXTX引脚发出引脚发出数据,最后一个数据发送完成后,在最近机器周数据,最后一个数据发送完成后,在最近机器周期的期的S5P2S5P2期间,置位期间,置位TITI中断标志位,表示数据发中断标志位,表示数据发送完毕。送完毕。该标志位一直有效,且不会硬件自动清该标志位一直有效,且不
12、会硬件自动清除,只能软件清除。除,只能软件清除。串口接收中断:当当RXRX上有数据输入时,串行通信接口电上有数据输入时,串行通信接口电路自动接收数据,在接收到完整的一帧路自动接收数据,在接收到完整的一帧数据后,在最近机器周期的数据后,在最近机器周期的S5P2S5P2期间,期间,置位置位RIRI中断标志位,表示接收到新的串中断标志位,表示接收到新的串口数据。口数据。该标志位一直有效,且不会硬该标志位一直有效,且不会硬件自动清除,只能软件清除。件自动清除,只能软件清除。3中断使能控制中断使能寄存器IE的地址是A8H 位地址位地址AFH AEHADHACHABHAAHA9H A8H位名称位名称EA
13、ESET1EX1ET0EX0 EA:全局中断使能控制位。只有EA=1,所有中断才可能被响应;EA=0,所有中断都不能被响应。ES:串口中断使能控制位。ES=1,允许响应串口发送中断和接收中断;ES=0,禁止响应串口发送中断和接收中断。ET1:定时/计数器1中断使能控制位。ET1=1,允许响应定时/计数器1中断,ET1=0禁止响应定时/计数器1中断。EX1:外部中断1使能控制位。EX1=1,允许响应外部中断1,EX1=0禁止 响应外部中断1。ET0:定时/计数器0中断使能控制位。具体操作同ET1。EX0:外部中断0使能控制位。具体操作同EX1。4 4中断优先权管理和中断嵌套原则中断优先权管理和中
14、断嵌套原则 单片机有两个优先权等级,其中断优单片机有两个优先权等级,其中断优先处理的原则是:先处理的原则是:高级中断和低级中断同时申请中断时,优先响高级中断和低级中断同时申请中断时,优先响应高级中断;应高级中断;同级有多个中断同时发生时,按以下自然优先同级有多个中断同时发生时,按以下自然优先级顺序处理。级顺序处理。中断源中断源自然自然优优先先级级外部中断外部中断0 0 高高低低定定时时/计计数器数器0 0中断中断(T0T0)外部中断外部中断1 1 定定时时/计计数器数器1 1中断中断(T1T1)串口中断串口中断中断嵌套的原则是:中断嵌套的原则是:高级中断可以打断低级中断,低级中断不能打断高级中
15、断可以打断低级中断,低级中断不能打断高级中断,同级中断不能打断同级中断。高级中断,同级中断不能打断同级中断。中断优先级寄存器中断优先级寄存器IPIP的地址是的地址是B8HB8H位地址位地址BFHBFHBEHBEHBDHBDHBCHBCHBBHBBHBAHBAHB9HB9HB8HB8H位名称位名称PSPSPT1PT1PX1PX1PT0PT0PX0PX0 PS:串口中断优先权设置位。PS=1,串口中断设为高级中断;PS=0,串口中断设为低级中断。(下同)PT1:定时/计数器1中断优先权设置位。PX1:外部中断1优先权设置位。PT0:定时/计数器0中断优先权设置位。PX0:外部中断0优先权设置位。5
16、 5中断服务程序的执行中断服务程序的执行 当前面所有的中断响应的条件都满足时,处当前面所有的中断响应的条件都满足时,处理器会在结束当前指令后的下一个机器周期,由理器会在结束当前指令后的下一个机器周期,由硬件执行一条硬件执行一条LCALLLCALL指令。自动转到满足中断条件指令。自动转到满足中断条件的的中断源入口中断源入口地址去执行中断服务程序。在地址去执行中断服务程序。在80C5180C51单片机中,中断程序的入口地址是固定的。单片机中,中断程序的入口地址是固定的。入口地址入口地址中断源中断源0000H0000H非中断源,程序复位后开始执行的非中断源,程序复位后开始执行的地址地址0003H00
17、03H外部中断外部中断0 0000BH000BH定时定时/计数器计数器0 00013H0013H外部中断外部中断1 1001BH001BH定时定时/计数器计数器1 10023H0023H串行通信口串行通信口6.6.中断服务子程序的编写中断服务子程序的编写 ORG 0030H;地址由用户自己设定;地址由用户自己设定INT_EX0_HADLE:;此例中外部中断;此例中外部中断0子程序从地址子程序从地址0030H开始开始CLR EA;保护现场之前,关中断;保护现场之前,关中断PUSHPSW;保护状态寄存器;保护状态寄存器PSWPUSHACC;保护累加器;保护累加器PUSH;保护中断服务子程序中其他使
18、用到的寄存器;保护中断服务子程序中其他使用到的寄存器SETEA;保护现场完成后,开中断。;保护现场完成后,开中断。;此处也可不写,表示不允许中断嵌套,;此处也可不写,表示不允许中断嵌套,;中断服务子程序的主体,由用户编写;中断服务子程序的主体,由用户编写CLREA;恢复现场之前,关中断。;恢复现场之前,关中断。;若前面没有开中断,则此句可不写;若前面没有开中断,则此句可不写POP;恢复现场;恢复现场POP ACCPOP PSWSETEA;中断完成后,开中断。;中断完成后,开中断。RETI;中断返回,中断服务子程序结束。;中断返回,中断服务子程序结束。7.7.中断撤销中断撤销外部中断:外部中断:
19、下降沿触发的外部标志是在下降沿触发的外部标志是在中断响应后硬件自动清除的;中断响应后硬件自动清除的;低电平触发的外部中断标志低电平触发的外部中断标志只能通过使外部信号变为只能通过使外部信号变为1 1来来撤销申请。撤销申请。定时定时/计数器:计数器:在中断响应后硬件自动清除在中断响应后硬件自动清除的;在查询方式时需由软件的;在查询方式时需由软件清清0 0。串口中断:串口中断:均由软件清除。均由软件清除。8.8.中断响应时间中断响应时间处理器收到中断请求后,下一个机器周期是否转去执行中断服务子程序,还受到以下影响:若当前机器周期不是处理器正在执行的指令的最后一个机器若当前机器周期不是处理器正在执行
20、的指令的最后一个机器周期,则需要等到指令执行完成。周期,则需要等到指令执行完成。若正在执行若正在执行RETI指令或者是其他读写与中断有关的寄存器指令或者是其他读写与中断有关的寄存器IE、IP的指令,则需要在执行完该指令后,再执行一条指令,然的指令,则需要在执行完该指令后,再执行一条指令,然后再转入中断服务子程序后再转入中断服务子程序。中断返回后至少执行一条指令后才能响应新的中断中断返回后至少执行一条指令后才能响应新的中断。中断申请到执行第一条中断服务程序的最短时间是3个机器周期(优先权扫描1机器周期,LCALL指令2个机器周期)。若若遇到不是执行指令的最后一个机器周期和正在执行遇到不是执行指令
21、的最后一个机器周期和正在执行RETRET、RETIRETI或或任何访问任何访问IEIE或或IPIP寄存器指令时,则需要最长的等待时间不超过寄存器指令时,则需要最长的等待时间不超过8 8个机器周期(个机器周期(3 3个最短周期,和个最短周期,和5 5个最长等待周期。)个最长等待周期。)中断过程汇总这里以外部中断0(下降沿触发)为例说明中断申请和中断响应的全过程1.首先是中断触发信号的产生,即INT0引脚出现下降沿;2.此下降沿使得中断标志位IE0为1;3.当EA 和EX0均为1的时候,又没有比INT0优先级高的中断在进行时,CPU在执行完当前的指令后,会转到中断处理子程序中去运行,同时将中断标志
22、位IE0清零。4.中断服务子程序执行完毕后,遇到RETI指令,返回主程序继续之前的任务。中断过程汇总(续1)定时器和串口的中断申请和中断响应过程与外部中断类似,但也有不同的地方。首先是中断信号的产生条件不同,定时器是计数满的时候发出中断请求,使得中断标志位TF0或TF1为1;串口是在接收到数据或者是数据发送完毕时产生中断请求,使中断标志位RI和TI置1.另一个不同点是中断标志位的撤销方法不同。串口中断被响应后不会自动撤销中断标志位,需要用软件进行撤销。中断过程汇总(续2)外部中断设为低电平触发时,中断标志位不能由硬件清除,也不能由软件清除,只能当外部信号变回高电平时,中断标志位才能清除。这种情
23、况下,通常要在中断处理程序中输出一个信号,通知外部中断源停止发送中断请求信号。这通常需要硬件的配合。9.9.中断系统的应用中断系统的应用 初始化的内容包括初始化的内容包括打开全局中断、中断中断控制打开全局中断、中断中断控制位、中断源的优先权。位、中断源的优先权。例:使用外部中断例:使用外部中断0,下降沿触发,定时器,下降沿触发,定时器1中断,串中断,串口接收中断,其他中断关闭不用,串口中断具有最高口接收中断,其他中断关闭不用,串口中断具有最高优先级。优先级。MOVIE,#00011001B MOVIP,#00010000B SETBIT0 SETBEA6.4 80C516.4 80C51的中断
24、源的扩展的中断源的扩展 一种通过外部中断入口和并口结合扩展中断一种通过外部中断入口和并口结合扩展中断的方法。的方法。ORG0000HAJMP MAIN_START ORG0003H AJMP INT_EX0_HANDLE ORG0030H INT_EX0_HANDLE:CLR EAPUSH PSW ;保护状态寄存器;保护状态寄存器PSWPUSH ACC ;保护累加器;保护累加器PUSH JNBP1.0,INT_EEX0;查询扩展外部中断;查询扩展外部中断0JNBP1.1,INT_EEX1;查询扩展外部中断;查询扩展外部中断1JNBP1.2,INT_EEX2;查询扩展外部中断;查询扩展外部中断2
25、JNBP1.3,INT_EEX3;查询扩展外部中断;查询扩展外部中断3END_INT_EX0_HANDLE:POP ;恢复现场恢复现场POP ACC;POP PSW;SET EA;中断完成后中断完成后,开中断。开中断。RETI INT_EEX0:;扩张外部中断扩张外部中断0处理处理AJMP END_INT_EX0_HANDLE:INT_EEX1:;扩张外部中断扩张外部中断1处理处理AJMP END_INT_EX0_HANDLE:INT_EEX2:;扩张外部中断扩张外部中断2处理处理AJMP END_INT_EX0_HANDLE:INT_EEX3:;扩张外部中断扩张外部中断3处理处理AJMP E
26、ND_INT_EX0_HANDLE:ORG 0100HMAIN_START:SETB EX0;打开外部中断打开外部中断0SETB EA;开全局中断开全局中断6.5 80C51的定时/计数器及其应用计数器常用的实现方法:使用专门设计的硬件电路实现。使用软件来实现。使用可编程定时/计数器来实现。80C51系列单片机,集成了2个可编程16位定时/计数器。每个定时/计数器独立工作,可以工作在计数和定时两种模式,有4种工作方式。1.1.定时定时/计数器的结构计数器的结构2.2.定时定时/计数器的时钟源计数器的时钟源选择内部时钟时,时钟频率固定,常用作定时器;选择内部时钟时,时钟频率固定,常用作定时器;选
27、择外部输入信号时,常用来对外部事件计数。选择外部输入信号时,常用来对外部事件计数。(1 1)选择内部时钟)选择内部时钟 由由80C5180C51单片机主时钟的单片机主时钟的1212分频产生的,如果选择分频产生的,如果选择12MHz12MHz的晶振或者外部输入的晶振或者外部输入12MHz12MHz时钟,则计数器时钟周时钟,则计数器时钟周期为:期为:(2)选择外部时钟)选择外部时钟由引脚由引脚T0(P3.4)、T1(P3.5)输入。计数时钟下降沿输入。计数时钟下降沿有效。有效。由于采样一个下降沿需要两个机器周期,由于采样一个下降沿需要两个机器周期,因此外部计数时钟的最高频率是因此外部计数时钟的最高
28、频率是fosc/24fosc/24。使用外部时钟时,常用来对外部事件计数。设使用外部时钟时,常用来对外部事件计数。设置计数初值为零,然后对外部事件计数,计数结置计数初值为零,然后对外部事件计数,计数结束后,读取计数结果。束后,读取计数结果。3.3.定时定时/计数器的控制寄存器和模式寄存器计数器的控制寄存器和模式寄存器(1)模式寄存器模式寄存器TMODTMOD地址是地址是89H 定定时时/计计数器数器1定定时时/计计数器数器0D7D6D5D4D3D2D1D0名称名称GATEC/TM1M0GATEC/TM1M0GATE:计数器门控位。:计数器门控位。C/T:时钟选择控制位。:时钟选择控制位。M1M
29、0:工作方式选择位。:工作方式选择位。(2)控制寄存器控制寄存器TCONTCON地址是地址是88H位地址8FH8EH8DH8CH8BH8AH89H88H位名称TF1TR1TF0TR0IE1IT1IE0IT0TF1:定时/计数器1中断申请标志位,当计数器计数溢出时,该位为1。在中断被响应后,该位由硬件自动清除。在查询方式下由软件清除。TR1:定时/计数器1的启动控制位。当GATE=0时,TR1=1启动计数器1计数,TR1=0,计数器1停止计数,保持原值;当GATE=1时,TR1=1且INT1=1时,启动计数器1计数,这种设置可以用来测量INT1引脚输入高电平的脉冲宽度。启动计数的指令为:启动计数
30、的指令为:SETB TR1SETB TR1,停止计数指令为:,停止计数指令为:CLR TR1CLR TR1。TF0:定时/计数器0中断申请标志位。具体操作同TF1。TR0:定时/计数器0的启动控制位,具体操作同TR1。4.4.定时定时/计数器的计数器的4 4种工作方式种工作方式(1)(1)方式方式1 1:1616位定时位定时/计数器计数器方式1计数特点给定初值后,计数器从初值开始计数,计数到FFFFH后,下一个下降沿到来后,会向中断标志位TF0进位,表示计数溢出,并可以向CPU申请中断,然后计数从0开始继续计数。计数器计满后不会自动重设初值,如果需要重设初值,需要软件设置。例:某80C51单片
31、机系统的工作时钟为12MHz,定时时间为800us,使用定时器0的方式1工作,则计数初值分开高分开高8位,低位,低8位,位,则则TH0=0FCH,TL0=0DFH。(2)方式方式0:13位定时位定时/计数器计数器 方式方式0使用了使用了TH0的的8个比特位,加上个比特位,加上TL0的低的低5个比个比特位,构成了一个特位,构成了一个13位计数器。此位计数器。此 工作方式是为了工作方式是为了MCS-48兼容而设置的。兼容而设置的。例如,某80C51单片机系统的工作时钟为6MHz,定时时间为800us,使用定时器0的方式0工作,则计数初值为在在给给T0设设置初置初值时值时,要特,要特别别注意,分开高
32、注意,分开高8位,低位,低5位,此例中,位,此例中,TH01EH,TL070H,而是而是TH0=11110011=0F3H,TL0=10000=10H。(3)方式方式2:自动重装的:自动重装的8位定时位定时/计数器计数器方式2计数特点方式2中,TL0用作8位计数器,TH0用作初值寄存器。TL0在时钟下降沿加1计数,计数溢出后,向TF0进位,并可以申请中断,同时把TH0的数据装载到TL0中,然后TLO从新的初值开始计数。因此叫做自动重装方式。例:某80C51单片机系统的工作时钟为3MHz,要求定时时间为800us,使用定时器0的方式2工作时,则计数初值为设设置置TL0=38H,TH0=38H。(
33、4)方式方式3:只有计数器只有计数器T0可以工作在方式可以工作在方式3。T0T0方式方式3 3下的下的T1T1方式方式2 2结构结构 5.定时定时/计数器的初始化计数器的初始化(1)(1)设置中断使能寄存器设置中断使能寄存器IEIE。(2)(2)设置计数器模式寄存器设置计数器模式寄存器TMODTMOD。(3)(3)计算和设置计数初值计算和设置计数初值(4)(4)如果计数器工作在中断模式,则这时需要打开如果计数器工作在中断模式,则这时需要打开全局中断。全局中断。(5)(5)启动计数器工作。启动计数器工作。(6)(6)编写计数器主体程序编写计数器主体程序6.6.定时定时/计数器的应用计数器的应用(
34、1)(1)通过定时器扩展外部中断源通过定时器扩展外部中断源例:把外部中断源接到定时例:把外部中断源接到定时/计数器计数器0 0的外部时钟输的外部时钟输入脚入脚T0T0(P3.4P3.4)。设置定时)。设置定时/计数器计数器0 0为方式为方式2 2自动重装自动重装方式,计数器模式,计数初值为方式,计数器模式,计数初值为0FFH0FFH,中断使能打开。,中断使能打开。当外部时钟输入产生下降沿时,计数溢出,当外部时钟输入产生下降沿时,计数溢出,TF0TF0置位,置位,产生中断。由于工作在方式产生中断。由于工作在方式2 2,所以自动重装初值,所以自动重装初值0FFH0FFH,外部再次输入下降沿,则产生
35、新的中断。,外部再次输入下降沿,则产生新的中断。由此就扩由此就扩展了一个下降沿有效的外部中断源。展了一个下降沿有效的外部中断源。ORG 0000HAJMP MAIN_STARTORG 000BH AJMP INT_T0_EEX0_HANDLE ORG 0030HINT_T0_EEX0_HANDLE:CLR EA PUSH PSWPUSH ACCPUSH ;外部扩展中断源处理子程序外部扩展中断源处理子程序POP POP ACCPOP PSWRETIORG 0100HMAIN_START:SETB ET0 MOV IP,#00H ANL TMOD,#F0H ORL TMOD,#00000110BM
36、OV TH0,#0FFHMOV TL0,#0FFHSETB TR0 SETB EA STOP:AJMP$(2 2)定时器模式的应用)定时器模式的应用例例:设设单单片片机机的的晶晶振振频频率率为为12MHz,现现要要求求从从P1.0输输出出周周期期为为500us(频频率率为为2kHz),占占空空比比50%的的方波。方波。晶振频率为晶振频率为12MHz,则计数器时钟周期为,则计数器时钟周期为1us,由于周期为,由于周期为500us,占空比,占空比50%,则高低电,则高低电平时间各为为平时间各为为250us,定时时间为,定时时间为250us。方法一:使用计数器方法一:使用计数器0 0,方式,方式0
37、0,查询方式,查询方式计数初值:设置TH0=11111000B=0F8H,TL0=00110B=06H。工作在方式字:TMOD=00000000B=00H。查询方式下,不需要初始化查询方式下,不需要初始化IEIE。初始化使P1.0=0,然后每次定时溢出时,使P1.0翻转即可。TF0TF0需要在程序中软件清零。需要在程序中软件清零。ORG 0000HAJMP MAIN_STARTORG 0100HMAIN_START:MOV TMOD,#00H:设置计数器模式 MOV TH0,#0F8H ;设计数初值 MOV TL0,#06HCLR P1.0SETB TR0 ;启动计数器 WAIT:JNB TF
38、0,$CLR TF0MOV TH0,#0F8H MOV TL0,#06HCPL P1.0AJMP WAIT END设置设置T0工作方式工作方式0设置设置T0初值初值P1.0清零清零启动启动T0TF0=1?P1.0翻转翻转设置设置T0初值初值YNTF0清零清零方法二:使用定时方法二:使用定时/计数器计数器1 1,方式,方式1 1,中断方式,中断方式计数初值:则TH1=0FFH,TL1=06H。工作方式字:定时器模式,软件启动,则TMOD=00010000B=10H。使用中断方式,设置ET1=1,允许定时/计数器1中断。其他使能位不变。在初始化最后打开全局中断使能位EA。初始化使P1.0=0。在中
39、断服务子程序中,使P1.0翻转即可。ORG 0000HAJMP MAIN_STARTORG 001BHAJMP INT_T1_HANDLE ORG 0100HMAIN_START:MOV TMOD,#10H SETB ET1 MOV TH1,#0FFH MOV TL1,#06CLR P1.0SETB EASETB TR1WAIT:AJMP$END主程序主程序设置设置T1工作方式工作方式1设置设置T1初值初值P1.0清零清零启动启动T1打开打开T1中断允许中断允许打开全局中断打开全局中断等待等待ORG 0030HINT_T1_HANDLE:MOV TH1,#0FFHMOV TL1,#06HCPL
40、 P1.0RETI中断服务子程序中断服务子程序P1.0翻转翻转设置设置T0初值初值中断返回中断返回方法三:使用定时方法三:使用定时/计数器计数器1 1,方式,方式2 2,中断方式,中断方式在方法一和方法二中,每次需要软件重转计数初值,因此实际产生的方波周期不是500ms。使用方式2就可以解决这个问题。方式2的计数初值为 则TL1=06H,TH1=06H。TMOD=00100000B=20H。使用中断方式,设ET1=1,在初始化最后打开全局中断使能位EA。初始化使P1.0=0。在中断服务子程序中,使P1.0翻转。ORG 0000HAJMP MAIN_STARTORG 001BHAJMP INT_
41、T1_HANDLE ORG 0100H MAIN_START:MOV TMOD,#20H SETB ET1 MOV TH1,#06H MOV TL1,#06HCLR P1.0 SETB EA SETB TR1 WAIT:AJMP$END 主程序主程序设置设置T1工作方式工作方式2设置设置T1初值初值P1.0清零清零启动启动T1开启开启T1中断允许中断允许开启中断总开关开启中断总开关等待等待ORG 0030HINT_T1_HANDLE:CPL P1.0RETIP1.0翻转翻转中断返回中断返回中断服务子程序中断服务子程序举一反三如果要求输出方波的占空比不是50%,应如何修改该程序?如果方波的频率为
42、1,应如何修改该程序?(3)计数器模式的应用例:在某个会场上,专门设置了人员入口和出口,为了安全需要,会场内只允许1000人同时在场。当人数到达1000人时,入口亮红灯,门卫阻止人员进入。使用定时/计数器0统计外部事件用作计数器,需要选择外部时钟,不需要使用中断;计数值最大为1000,使用方式1和方式0都可以,在此选用方式1。把人数统计的高8位放在30H,低8位放在31H。TMOD=00000101=05H,计数初值为0。ORG 0000HORG 0000HAJMP MAIN_STARTAJMP MAIN_STARTORG 0100HORG 0100HMAIN_START:MAIN_START
43、:MOV TMOD,#05HMOV TMOD,#05HMOV TH0,#0MOV TH0,#0 MOV TL0,#0MOV TL0,#0CLR P1.0CLR P1.0SETB TR0SETB TR0COUNT:COUNT:MOV 30H,TH0MOV 30H,TH0MOV 31H,TL0MOV 31H,TL0MOV A,30HMOV A,30HSUBB A,SUBB A,#03H#03HJC COUNTJC COUNT MOV A,31HMOV A,31H SUBB A,#0E8HSUBB A,#0E8HJC COUNTJC COUNT SETB P1.0SETB P1.0STOP:AJMP
44、 STOPSTOP:AJMP STOPENDEND 举一反三如果用中断方式该如何实现?将原来的程序拆分成主程序和中断服务子程序COUNT标号前的部分为主程序,后面的为中断服务子程序主程序中加入打开T0中断允许,全局中断允许,等待等几个环节T0的初值设置问题中断服务子程序中将红灯点亮,关闭中断允许。本 章 小 结本章的内容由3个部分组成。第一部分第一部分:由突发事件的处理引出中断的概念;然后展开讨论中断的作用;对比正常程序和中断程序的差异,根据中断执行的过程不同对中断源进行了分类,读者需要仔细体会两种分类的差异,在微机原理部分还会讲到两种中断源的执行过程的不同;详细讨论了中断执行过程中的中断源识
45、别、中断入口地址寻找、断点保护和接续、现场保护和恢复,以及中断返回。最后介绍了中断嵌套和中断优先级的意义。第二部分第二部分:详细讨论了80C51单片机的中断系统。主要包括中断系统的结构图,图6.3包含了80C51中断系统的所有内容,读者需要认真仔细地分析该图的每处细节,结合该图进行后面的学习。此部分根据中断执行的过程,依次分析了中断源、中断标志位、中断使能控制、中断优先级设置、中断入口地址、中断服务子程序的编写方法和中断申请的撤销。讨论了中断执行的时间,介绍了通过中断实现单步操作的方法和中断扩展的方法。读者需要熟练掌握IE,IP,TCON,SCON中各比特位的作用和意义。第三部分第三部分:分析了80C51单片机的定时/计数器的应用。介绍了定时/计数器的内部结构,分析了定时器和计数器两种模式的原理和区别;仔细分析了4种工作方式的工作原理、等效电路结构、定时时间计算方法;通过实例演示了各种工作方式的应用方法。在实际的系统设计中会经常使用到定时器,读者需要熟练掌握TMOD,TCON中各比特位的意义和作用,掌握中断方式和查询方式的编程方法,并多做实验提高实际编程能力。END