中断与定时系统教学.ppt

上传人:牧羊曲112 文档编号:5170581 上传时间:2023-06-10 格式:PPT 页数:63 大小:1.58MB
返回 下载 相关 举报
中断与定时系统教学.ppt_第1页
第1页 / 共63页
中断与定时系统教学.ppt_第2页
第2页 / 共63页
中断与定时系统教学.ppt_第3页
第3页 / 共63页
中断与定时系统教学.ppt_第4页
第4页 / 共63页
中断与定时系统教学.ppt_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《中断与定时系统教学.ppt》由会员分享,可在线阅读,更多相关《中断与定时系统教学.ppt(63页珍藏版)》请在三一办公上搜索。

1、第五章 MCS-51中断与定时系统,5.1 中断系统概述,一、中断概念,中断是指CPU在处理某一事件A时,发生另一事件B,请求CPU处理;中断请求 CPU暂时停止当前的工作,转去处理事件B;中断响应,并执行中断服务程序 待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A;中断返回,中断嵌套,若单片机正在处理一个中断程序,此时,又有另一个中断现象发生,单片机将会停止当前的中断程序,而转去执行新的中断程序,新中断程序处理完毕后再回到刚才停止的中断程序处继续执行,执行完这个中断后再返回主程序继续执行。,中断嵌套,中断优先级,二、中断源,引起CPU中断的根源,称为中断源,中断源向C

2、PU提出中断请求。,外部中断0(INT0)中断请求信号由P3.2提供;外部中断1(INT1)中断请求信号由P3.3提供;定时器中断(T0)由片内定时/计数器T0提供;定时器中断(T1)由片内定时/计数器T1提供;串行口中断(RI、TI)由片内串行口提供。,三、中断控制,与中断控制有关的控制寄存器有四个:,1、定时控制寄存器(TCON)功能:定时器/计数器控制功能;中断控制功能。,TCON,(88H),IT0(IT1)外中断触发方式控制位 触发方式有两种:IT0(IT1)=0:电平方式,低电平有效;IT0(IT1)=1:脉冲方式,脉冲负跳变有效。IE0(IE1)外中断请求标志位 当CPU采样到I

3、NT0(INT1)出现有效中断请求时,IE0由硬件自动置位,向CPU发出中断请求。当CPU响应中断请求,进入中断服务程序时自动复位。TF0(TF1)定时器溢出标志 当定时器T0(或T1)溢出时,TF0(TF1)由硬件置位,向CPU发送中断请求。当CPU响应中断请求,进入中断服务程序时,自动复位。,2、串行口控制寄存器(SCON),SCON,(98H),TI 串行口发送中断请求标志位。当串行口发送完一帧数据后,硬件置位;在转向中断服务程序后,用软件清零。RI 串行口接收中断请求标志位。当串行口接收完一帧数据后,硬件置位;在转向中断服务程序后,用软件清零。,3、中断允许控制寄存器(IE),IE,(

4、A8H),EA 中断允许总控制位 EA=0,中断总禁止;EA=1,中断总允许。EX0(EX1)外部中断允许控制位 EX0(EX1)=0,禁止外中断;EX0(EX1)=1,允许外中断。,ET0(ET1)定时器中断允许控制位 ET0(ET1)=0,禁止定时器中断;ET0(ET1)=1,允许定时器中断。ES 串行中断允许控制位 ES=0,禁止串行中断;ES=1,允许串行中断。,IE,(A8H),4、中断优先级控制寄存器(IP),IP,(B8H),四、中断响应过程,1、中断请求,T0溢出,T1溢出,MOV SBUF,A,MOV A,SBUF,2、中断查询,中断标志位:IE1、IE0、TF1、TF0、R

5、I、TI,MCS-51中断系统的逻辑结构,3、中断响应,LCALL addr16(指向相应的中断入口地址),保存断点地址,将当前PC值压栈;中断程序的入口地址 PC,0000H,000AH,000BH,0013H,001AH,001BH,0022H,0023H,002AH,INT0,T0,INT1,T1,串行口,0003H,0012H,51单片机复位后PC=0000H,系统从0000H地址开始执行程序。通常在此单元处安排一条跳转指令,避开系统分配的中断服务程序地址段。每个中断程序只有8个字节单元,不够存放实际的中断服务程序,故各中断程序的入口地址处通常也安排一条跳转指令,指向实际的中断服务程序

6、处。,LJMP MAIN,LJMP EXINT0,LJMP TIMER0,LJMP TIMER1,LJMP EXINT1,LJMP SERIES,.,ORG 0000HSTART:LJMP MAIN;跳转到主程序 ORG 0003H;外中断0入口地址 LJMP EXINTO;转中断服务程序MAIN:CLR IT0;设为电平触发方式 SETB EA;开总中断 SETB EX0;开外中断0;开始编写主程序 EXINT0:PUSH PSW;保护现场 PUSH ACC;开始编写中断服务程序 POP ACC POP PSW RETI;中断返回,中断系统程序结构,CPU正在处于一个同级或高级的中断服务程序

7、中;查询中断请求的机器周期不是当前执行指令的最后一个机器周期,即需将当前指令执行完才能响应中断;当前指令是返回指令(RET、RETI)或访问IE、IP指令,即只有在这些指令后面至少再执行一条指令时才能接受中断请求。,存在下列情况之一,中断响应无法进行:,正常中断时间为3 8个机器周期,如有同级或高级中断服务,则延长响应时间。,中断响应时间:,3T:中断请求标志查询:1T 产生、执行LCALL:2T,8T:执行RET/RETI(访问IP/IE):2T 主程序中MUL/DIV指令:4T 执行LCALL指令:2T,五、中断请求的撤销,中断响应后,TCON或SCON中的中断请求标志应及时清除。否则就意

8、味着中断请求仍然存在。,1、定时器中断硬件撤除 中断响应后硬件自动清 TF0(TF1)标志位。2、外部中断自动与强制撤除 中断响应后硬件自动清 IE0(IE1)标志位。脉冲请求方式,自动撤除;电平请求方式,强制撤除。,3、串行中断软件撤除 标志位 TI、RI 不能通过硬件清零。只能在中断响应后用软件清除。,例1:外中断源扩展,外中断源多于二个时,采用硬件申请,软件查询方法。,+,XI1,XI2,XI3,XI4,XI0,ORG 0000H LJMP MAIN ORG 0003H LJMP EXINT0;转外部中断0服务程序入口 ORG 0013H LJMP EXINT1;转外部中断1服务程序入口

9、MAIN:SETB IT0;中断初始化 SETB IT1 SETB EX0 SETB EX1 SETB EA SJIMP$;等待中断EXINT0:PUSH PSW;XI0中断服务程序 PUSH ACC POP ACC POP PSW RETI,EXINT1:PUSH PSW;中断服务程序 PUSH ACC JB P1.0,XI1;P1.0为1,转XI1中断服务程序 JB P1.1,XI2;P1.1为1,转XI2中断服务程序 JB P1.2,XI3;P1.2为1,转XI3中断服务程序 JB P1.3,XI4;P1.3为1,转XI4中断服务程序EXRET:POP ACC POP PSW RETI

10、XI1:;XI1中断服务程序 AJMP EXRET XI2:;XI2中断服务程序 AJMP EXRET XI3:;XI3中断服务程序 AJMP EXRET XI4:;XI4中断服务程序 AJMP EXRET,5.2 定时器中断,定时方法概述,5.2.2 MCS-51单片机的定时器功能,51单片机 内部有两个可编程的定时器/计数器,即定时器 T0 和 定时器T1。注意:全称是定时器/计数器,简写为定时器。T0、T1均既有定时功能又有计数功能。T0、T1是16位特殊功能寄存器,由高8位和低8位两个寄存器组成,地址为:T0(TH0、TL0):8CH、8AH T1(TH1、TL1):8DH、8BH,定

11、时器的实质是加1计数器(16位),计数脉冲有两个来源:1、内部时钟脉冲。计数规律是每隔一个机器周期定时器T0(T1)寄存器加1。计数频率是振荡频率的1/12;2、外部计数脉冲。从T0(P3.4)或 T1(P3.5)引脚输入脉冲。当检测到输入电平由高跳变到低时,计数器加1。采样(S5P2)、加1(S3P1)操作,发生在两个机器周期,因此需要2个机器周期才能识别一个从1到0的跳变,故计数脉冲的周期必须大于2个机器周期。,当加到全1时,再来一个脉冲就使计数器回零(溢出):若定时器工作于定时模式,表示定时时间已到;若定时器工作于计数模式,表示计数值已满。此时,均可向CPU发出中断请求。,5.2.3 M

12、CS-51单片机定时器控制与状态寄存器,1、工作方式寄存器(TMOD),字节地址为89H,不可以位寻址。,T1,T0,M1、M2:工作方式选择位,GATE:门控位 GATE=0,仅通过TRx位启动定时器。GATE=1,INTx端口高电平,再通过TRx启动定时器。,2、控制寄存器(TCON),TCON,(88H),启停与中断控制寄存器,由软件置位或清零。当TR0=1时启动,TR0=0时停止。,TR1:与TR0类似,控制T1 的启停。,TF1:与TF0类似,T1 中断请求标志位。,3、中断允许控制寄存器(IE),IE,(A8H),5.2.4 定时/计数器的工作方式,一、方式0,13 位的定时/计数

13、方式。以T0为例:由TL0的低5位和TH0的8位组成。当TL0低5位溢出(全1到全0)时,向TH0进位,而TH0溢出时由硬件自动置标志位TF0=1,并请求中断。,T0 方式 0 逻辑结构图,M1M0=00 当C/T=0,定时方式,开关接通机器周期,对单片机内部的机器周期脉冲进行计数;当C/T=1,计数方式,开关接通T0(P3.4),当计数脉冲发生负跳变计数器加1。当GATE=0,或门输出1,只要TR0=1,开关接通,计数开始,即启动定时器加1;当GATE=1,或门输出0,要通过TR0=1、INT0=1来共同启动定时器加1;当TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。,方式

14、0只用到13位,最大计数脉冲数为 Nmax=213=8192,若为定时模式,使用6MHz晶振,则最大定时时间为Tmax=2132us=16.384ms。,单片机复位后TH0、TL0都是0,故默认情况下每一次溢出后计数脉冲数都固定为8192,定时时间也是固定的。,用户如何指定计数脉冲数或定时时间呢?,用户指定的计数脉冲数:N=213 计数初值C;用户指定的定时时间:t=(213 计数初值C)机器周期,计数初值C 必须事先写入TH0、TL0中。,例如,定时/计数器T0的计数值为1000,则初值为7192,转换成二进制数为1110000011000B,则TH0=11100000B=E0H,TL0=0

15、0011000B=18H。,例:设定时器T0选择工作模式0,定时时间为1ms,系统晶振的频率为focs6MHz,确定T0的初值并送到TH0和TL0中。,解:1103(213C)12/6M 则C76921111000001100B 将低5位送TL0,即TL00CH;将高8位送TH0,即TH00F0H,二、方式1,逻辑结构与方式0类似,变成16 位计数。以T0为例:由TL0作低8位和TH0作高8位。最大计数脉冲数为 Nmax=216=65536 最大定时时间为Tmax=2162us=131.072ms。,用户指定的计数脉冲数:N=216 计数初值C;用户指定的定时时间:t=(216计数初值C)机器

16、周期,计数初值C 必须事先写入TH0、TL0中。,T0 方式 1 逻辑结构图,三、方式2,自动再装入8位计数器;THx、TLx相互独立(x=0,1);TLx作为8位计数器,THx是初值寄存器;TLx溢出后,置位TFx,申请中断;THx初值自动重新装入TLx,使TLx自动进行下一次计数;最大计数脉冲数为 Nmax=28=256 最大定时时间为Tmax=282us=0.512ms。用户定时时间:t=(28计数初值C)机器周期,T0 方式 2 逻辑结构图,四、方式3,只适用于T0。T1无效,停止计数。将T0分成两个独立的8位计数器。TL0组成组成完整的8位定时/计数器。既能定时,又能计数。TL0占用

17、T0全部控制信号及中断请求标志位:GATE、C/T、TR0、TF0。TH0只能组成8位定时器,对内部机器周期进行计数。只能定时。TH0占用T1的TR1、TF1及中断资源。P3.5(T1外部计数脉冲输入口)不能再用。,T0方式 3 逻辑结构图,5.2.5 定时/计数器应用,MCS-51单片机定时/计数器初始化过程如下:,设置工作方式寄存器TMOD;计算计数初值,并装入THx、TLx;开中断,置位EA、ETx;启动定时/计数器,置位TRx。定时/计数器应用有查询、中断两种方式,解:1、计算计数初值C:晶振为6 MHz,所以机器周期Tc为2 s。,定时时间:t=(213计数初值C)机器周期,故计数初

18、值C=213 t/机器周期=213 250/2=8067,使用T1以方式1工作,采用中断方式编程实现上题。,TMOD 确定,控制字10H,定时时间:t=(216计数初值C)机器周期,故计数初值C=216 t/机器周期=216250/2=65411,高8位:FFH,TH1=FFH低8位:83H,TL1=83H,计算计数初值;,开中断;EA=1,ET1=1,启动T1。TR=1,ORG 0000H LJMP MAIN;跳转到主程序 ORG 001BH;T1的中断入口地址 LJMP INTT1;转向中断服务程序MAIN:MOV TMOD,#10H;置T1工作于方式1 MOV TH1,#0FFH;装入计

19、数初值 MOV TL1,#83H SETB EA;CPU开中断 SETB ET1;T1开中断 SETB TR1;启动T1 SJMP$;等待中断 INTT1:MOV TH1,#0FFH;重装入计数初值 MOV TL1,#83H CPL P1.0;P1.0取反输出 RETI;中断返回 END,中断方式,例题:设系统时钟频率为6MHz,编程实现P1.0口上的发光二极管每隔1s亮灭一次。,思路:采用T0,工作于方式1,定时50ms,每溢出20次即1s,P1.0的状态发生改变。,TOMD,控制字01H,定时时间:t=(216计数初值C)机器周期,故计数初值C=216 t/机器周期=21650m/2u=4

20、0536,高8位:9EH,TH1=9EH低8位:58H,TL1=58H,计算计数初值,ORG 0000H MOV TMOD,#01H MOV TH0,#9EH MOV TL0,#58H SETB TR0LOOP:MOV R3,#20DEL1:JBC TF0,DEL2 SJMP DEL1DEL2:MOV TH0,#9EH MOV TL0,#58H DJNZ R3,DEL1 CPL P1.0 SJMP LOOP END,查询方式,例题:测量脉冲宽度。,当GATE=1、TR1=1时,只有INT1引脚上出现高电平时,T1才开始计数,利用这一特点可以测量加在P3.3上的正脉冲宽度。,测量时,先将T1设置

21、为定时方式,GATE设为1,并在INT1引脚为0时将TR1置1,则当INT1引脚变为1时将启动T1,直到INT1引脚再次变为0时将停止T1,此时通过T1的计数值就可以测得脉冲宽度。,若将定时初值设为0,当单片机工作频率为12MHz时,能测量的最大脉冲宽度为655361u=65.536ms。,ORG 0000H;复位地址 AJMP MAIN;跳到主程序 ORG 0030H;主程序入口地址MAIN:MOV TMOD,#90H;T1工作于定时方式1,GATE=1 MOV TL1,#00H;计数初值设为0 MOV TH1,#00H;最大测量脉冲宽度为65.535msRL1:JB P3.3,RL1;等待P3.3变低 SETB TR1;启动T1RL2:JNB P3.3,RL2;等待P3.3变低RL3:JB P3.3,RL3;等待P3.3再次变低 CLR TR1;启动T1 MOV 30H,TH1;读取脉冲宽度 MOV 31H,TL1 SJMP$END,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号