C51中断系统和定时器(堪称经典必看).ppt

上传人:小飞机 文档编号:6502450 上传时间:2023-11-07 格式:PPT 页数:41 大小:403.50KB
返回 下载 相关 举报
C51中断系统和定时器(堪称经典必看).ppt_第1页
第1页 / 共41页
C51中断系统和定时器(堪称经典必看).ppt_第2页
第2页 / 共41页
C51中断系统和定时器(堪称经典必看).ppt_第3页
第3页 / 共41页
C51中断系统和定时器(堪称经典必看).ppt_第4页
第4页 / 共41页
C51中断系统和定时器(堪称经典必看).ppt_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《C51中断系统和定时器(堪称经典必看).ppt》由会员分享,可在线阅读,更多相关《C51中断系统和定时器(堪称经典必看).ppt(41页珍藏版)》请在三一办公上搜索。

1、本章学习目标:理解中断概念,能正确描绘单片机中断响应过程熟记80C51单片机的5个中断源及其中断入口地址能按要求正确设置特殊功能寄存器IE、IP、TCON、SCON和TMOD熟悉中断优先控制的方法能正确描绘定时/计数器的4种工作方式,重点掌握方式1、方式2的应用学会定时/计数初值的计算能读懂教材中的控制实例,学会编写同等难度的中断、定时/计数程序,第2章 单片机的指令系统,第四章 80C51中断系统和定时器,4.1 中断系统,1.中断的概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生或中断请求);CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);待C

2、PU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回)。,4.1.1 中断系统的基本概念,4.1 中断系统,2.中断技术的应用并行处理 CPU可以与多台外设并行工作,并分时与他们进行信息交换,提高了CPU的工作效率。实时控制 单片机应用系统可能随机请求CPU提供服务。有了中断系统,CPU就可以立即响应并予以处理。故障处理 单片机系统在工作时可能会出现一些突发故障,如电源断电,存储器出错,程序执行错误(如除数为0)等,一旦出现故障,CPU就可及时转去执行故障处理程序,而不必停机。3.中断系统 为实现中断功能而配置的硬件和编写的软件就是中断系统。,4.1.1 中断系统的基本

3、概念,4.1 中断系统,能够向CPU发出中断申请的部件称为中断源。80C51单片机有5个中断源。见下表,4.1.2 中断源,4.1 中断系统,单片机通过对4个特殊功能寄存器实施中断控制:1.中断允许寄存器IE 2.中断优先级寄存器IP 3.定时/计数器及外部中断控制寄存器TCON 4.串口控制寄存器SCON,4.1.3 中断控制,4.1 中断系统,1.中断允许寄存器IE功能:控制单片机是否接受中断申请,以及接受哪一种中断申请字节地址:A8H 其格式和每位的含义如下(位操作指令实现):,4.1.3 中断控制,4.1 中断系统,1.中断允许寄存器IE例:同时打开外部中断0和串行口中断,可设置为:方

4、法1:MOV IE,#10010001B方法2:SETB EA SETB ES SETB EX0方法3:ORL IE,#10010001B,4.1.3 中断控制,4.1 中断系统,2.中断优先级寄存器IP功能:对80C51单片机进行高级别或低级别中断的设置IP的字节地址:B8H 格式和每位的含义如下:,4.1.3 中断控制,4.1 中断系统,2.中断优先级寄存器IP 例:令串行口为高优先级中断,外部中断0为低优先级中断。设置方法:法1:MOV IE,#10010001B;开中断 MOV IP,#00010000B;设优先级 法2:MOV IE,#10010001B SETB PS;假设单片机之

5、前进行了初始化说明:此时串口的优先级高于外部中断0的优先级,4.1.3 中断控制,4.1 中断系统,2.中断优先级寄存器IP 如果几个相同级别的中断源同时申请中断,则根据以下自然顺序响应:,4.1.3 中断控制,4.1 中断系统,3.定时/计数器及外部中断控制寄存器TCON 功能:可设置外部中断申请的形式:低电平触发还是下降沿触发,控制定时/计数器的计时开始或停止,是各中断源(串口中断除外)是否申请中断的标志位TCON的字节地址:88H 格式和每位的含义如下:,4.1.3 中断控制,4.1 中断系统,3.定时/计数器及外部中断控制寄存器TCON,4.1.3 中断控制,4.1 中断系统,3.定时

6、/计数器及外部中断控制寄存器TCON,4.1.3 中断控制,4.1 中断系统,4.串口控制寄存器SCON 功能:只有D1和D0位用于中断,作为串口中断请求标志,即串口中断请求寄存器TCON的字节地址:98H 格式和每位的含义如下:RI为接收中断请求标志位:当串口接收完一帧串行数据时,RI自动置1;CPU响应中断后,用软件对RI清0;TI为发送中断请求标志:当串口发送完一帧串行数据时,TI自动置1,请求中断。CPU响应中断后,由软件对TI清零。,4.1.3 中断控制,4.1 中断系统,4.1.4 中断响应(现场保护与恢复),4.1 中断系统,4.1.4 中断响应(二级中断嵌套),4.1 中断系统

7、,编程实例软件构成:主程序+中断服务程序程序编制的关键点:要对题目要求进行精确分析,明确哪些环节应该安排在主程序中,哪些环节应该安排在中断服务程序中,再分别编制主程序和中断服务程序。例:在程序正常运行时P1口的8个LED灯作单灯左移8次而后单灯右移7次,如此循环;中断时(即按键按下)则P1口的8个LED闪烁3次(即全亮全灭3次)。1中断程序的设计主要涉及开中断、设定优先级,外中断还涉及触发方式的设定。2在软件设计中,首先要对主程序和中断服务程序所完成的任务进行划分。根据该课题提出的要求,在主程序中应该完成的任务是8个LED循环左移右移;在中断服务程序中应该完成的功能是8个LED闪烁3次。,4.

8、1 中断系统,4.1 中断系统,ORG 0000HLJMP STARTORG 0003HLJMP INT0ORG 0100HSTART:MOV SP,#60H MOV IE,#81H;开INT0中断 SETB IT0;INT0下降沿触发 L1:MOV A,#0FFH;设初值 MOV R0,#8;设定左移八次 CLR C;将CY清0 L2:RLC A;带进位位循环左移一位 MOV P1,A;送P1口,P1.0灯亮 ACALL DELAY;延时0.2秒 DJNZ R0,L2;判断是否左移8次 MOV R0,#7;移动7次 L3:RRC A;带进位位循环右移,4.1 中断系统,MOV P1,A;送P

9、1口 ACALL DELAY DJNZ R0,L3;是否右移7次?AJMP L1;重新开始DELAY:MOV R5,#4;延时0.2秒 D1:MOV R6,#200 D2:MOV R7,#123 NOP DJNZ R7,$DJNZ R6,D2 DJNZ R5,D1 RETINT0:PUSH PSW;保护PSW,ACC值 PUSH ACC MOV A,#00H;使8个LED全亮 MOV R2,#6;闪烁3次(全亮全灭各3次)L4:MOV P1,A;A值送出,4.1 中断系统,LCALL DELAY;延时0.2秒 CPL A;A值取反 DJNZ R2,L4;闪烁3次?POP ACC;恢复保护的A值

10、 POP PSW;恢复保护的PSW值 RETI;返回主程序 END,4.2 定时器/计数器,定时器计数器概述1.日常生活中定时、计数的例子:如闹钟、画“正”统计选票、家用水表对水量的计数。2.单片机应用系统中定时计数的需求:如用单片机控制的打铃器、空调的定时开关、啤酒自动生产线上对酒瓶的计数装置等。3.80C51单片机片内的定时/计数器:两个位可编程的定时计数器:T0和T1,都能定时和对外部事件进行计数。此外,T1还可以作为串行接口的波特率发生器。4.如何理解定时和计数的概念?单片机中的定时器和计数器其实是一个器件:计数器:是对外部发生的事件进行计数;定时器:是对单片机内部的标准时钟(fosc

11、/12)脉冲进行计数。,4.2 定时器/计数器,4.2.2 定时器/计数器的结构 单片机内部的16位定时计数器由高8位和低8位两个寄存器组成:T0由TH0和TL0组成;T1由TH1和TL1组成;定时计数器的计数值就存放在这里面;定时/计数器T1的结构与T0相同。,定时/计数器T0的结构示意图,4.2 定时器/计数器,4.2.3 定时器/计数器基本原理 定时计数器溢出后标志位TF0(或TF1)由0变1,由此能够引发定时中断。如果采用12的晶振,对应的脉冲周期是微秒,计满65536个脉冲所对应的时间就是65.536ms。思考:如何设置指定时间的定时?-预设初值 在主频为12MHz的情况下,每个时钟

12、脉冲是1微秒,则计满5536个脉冲需65.536毫秒,如要定时10毫秒则存入初值55536,(10毫秒是10000微秒,需计数10000个脉冲)。可见,定时器的定时时间长短与系统时钟和定时器初值有关。说明 1.当定时计数器用作计数器时,通过引脚P3.4(P3.5)对外部输入脉冲计数。2.定时计数器T0(T1)启动运行后,会按设定的工作方式独立进行计数,不再占用CPU时间。当计数器T0(T1)计满溢出时,TF0(TF1)置1,向CPU发出中断请求信号。,4.2 定时器/计数器,4.2.4 定时器/计数器控制 在单片机中有两个特殊功能寄存器与定时/计数有关,它们就是TMOD和TCON,定时计数器T

13、0、T1就由它们来控制:TMOD用于设置工作方式;TCON用于控制其启动、停止和中断申请。1.定时器工作方式寄存器TMOD TMOD用于设置T0和T1的工作方式,字节地址为89H,不能按位寻址。其格式和各位的含义如下:,4.2 定时器/计数器,4.2.4 定时器/计数器控制,4.2 定时器/计数器,4.2.4 定时器/计数器控制,4.2 定时器/计数器,4.2.4 定时器/计数器控制2定时/计数器控制寄存器TCON TCON的低4位用于控制外部中断,高4位用于控制定时/计数器的启动和中断申请。当计数溢出时,TF0(或TF1)会自动由0变1,告诉我们计数已满,我们可以通过查询TF0(或TF1)位

14、的状态来判断计时时间是否已到;如果采用定时中断方式,则TF0(或TF1)由0变1时,能自动引发中断。,4.2 定时器/计数器,4.2.4 定时器/计数器控制,由右图可知,只有当TR0(或TR1)为1时,开关1才能闭合,计数脉冲才能进入计数器,故TR0(或TR1)称为运行控制位,可用指令“SETB TR0(或TR1)”来置位以启动定时/计数器运行;或用指令“CLR TR0(或TR1)”来关闭定时/计数器的工作,一切全靠编程人员控制。,4.2 定时器/计数器,4.2.5 定时器/计数器工作方式,80C51单片机定时/计数器T0有4种工作方式(方式0、1、2、3),T1有3种工作方式(方式0、1、2

15、)。1.方式0 当TMOD的M1M0=00时,定时/计数器工作于方式0。方式0为13位定时/计数器,由TL0的低5位和TH0(8位)共同完成计数功能(TL0的高3位可忽略)。当TL0的低5位溢出时,向TH0产生进位;TH0溢出时,将定时器中断请求标志位TF0置1,可申请中断,也可对TF0进行查询。方式0下,定时/计数器为13位,原因是当时的51设计者需要兼容48系列单片机,所以方式0容量受限,计数深度为8K。,4.2 定时器/计数器,4.2.5 定时器/计数器工作方式,4.2 定时器/计数器,4.2.5 定时器/计数器工作方式,80C51单片机定时/计数器T0有4种工作方式(方式0、1、2、3

16、),T1有3种工作方式(方式0、1、2)。2.方式1 当M1M0=01时,定时/计数器工作于方式1。方式1的计数位数是16位,由TL0作为低8位,TH0作为高8位共同构成。其余操作同方式0。,4.2 定时器/计数器,4.2.5 定时器/计数器工作方式,4.2 定时器/计数器,4.2.5 定时器/计数器工作方式,80C51单片机定时/计数器T0有4种工作方式(方式0、1、2、3),T1有3种工作方式(方式0、1、2)。3.方式2 当M1M0=10时,定时/计数器工作于方式2。这是自动重装初值的8位计数方式,它省去了方式0和方式1在多次重复计数状态下必须重新设定计数初值的麻烦,但是却付出了减小定时

17、时间的代价。,4.2 定时器/计数器,4.2.5 定时器/计数器工作方式,4.2 定时器/计数器,4.2.5 定时器/计数器工作方式,80C51单片机定时/计数器T0有4种工作方式(方式0、1、2、3),T1有3种工作方式(方式0、1、2)。4.方式3 方式3只适用于定时/计数器T0。当T1被设定为方式3状态时,将停止计数。当M1M0=11时,T0工作于方式3。此时TL0和TH0作为两个相互独立的8位定时/计数器使用。TL0既可定时又可计数,它使用T0的各控制位、引脚和中断源,即C/、GATE、TR0、TF0、T0(P3.4引脚)、(P3.2引脚);TH0此时只能用作内部定时功能,它借用了定时

18、/计数器T1的控制位TR1和T1的中断标志位TF1,其启动和停止只受TR1控制。,4.2 定时器/计数器,4.2.5 定时器/计数器工作方式,定时/计数器初始化步骤 向工作方式寄存器TMOD写入工作方式控制字以确定:(A)启动方式是TR0/TR1启动还是TR0/TR1和/配合一起启动;(B)是定时方式还是计数方式;(C)是工作方式0还是工作方式1、2或3。向计数器TH0、TL0(或TH1、TL1)装入初值;启动定时器/计数器(将运行控制位TR0/TR1置位);如果采用中断方式,还要将IE中的中断允许控制位ET0(或ET1)、中断允许总控位EA置位。,4.2 定时器/计数器,4.2.6 定时器/

19、计数器举例,例1 利用定时器T0方式0产生定时脉冲。要求:每隔2ms产生宽度为一个机器周期的正脉冲,由P1.0输出此定时序列脉冲信号(设时钟频率为6MHz)。解:首先要求出T0的初值:已知:时钟频率为6MHz,则可求得每个机器周期为2s(正脉冲的宽度)。定时的时间公式为:所以当定时时间为t=2ms时:,4.2 定时器/计数器,4.2.6 定时器/计数器举例,解法一:采用查询工作方式编程ORG 0000H;起始程序的地址AJMP MAIN;转到主程序地址去ORG 0100H;主程序的起始地址MAIN:CLR P1.0;将输出口P1的第0位清0(输出脉冲的起始值)MOV TMOD,#00H;将T0

20、设置为:由TR0启动、定时方式、工作方式0MOV TH0,#0E0H;给定时器中计数器的高8位送入初值MOV TL0,#18H;给定时器中计数器的低5位送入初值SETB TR0;将TR0位置1,启动T0工作LOOP:JNB TF0,LOOP;进行查询:若TF0为0,计数器未溢出,程序转到当前指令 地址若TF0为1,计数器溢出,发出中断请求,程序往下走CLR TF0;溢出中断请求标志位清0(中断请求响应之前,对TF0进行清0)SETB P1.0;将P1.0位置1,输出正脉冲CLR P1.0;这是单机器周期的指令,所以正脉冲宽度为2s,正脉冲消失MOV TH0,#0E0H;重新装载高8位的初值MO

21、V TL0,#18H;重新装载低5位的初值SJMP LOOP;转到LOOP处继续查询定时2ms的初始化程序。而且考虑中断END,4.2 定时器/计数器,4.2.6 定时器/计数器举例,解法二:采用中断工作方式编程ORG 0000H;起始程序的地址AJMP MAIN;转到主程序地址去ORG 000BH;中断服务程序的矢量地址(中断源是T0)AJMP TOINT;转到中断服务程序的入口地址TOINTORG 0100H;主程序的入口地址MAIN:CLR P1.0;将P1口的第0位清0(输出脉冲的起始值)MOV TMOD,#00H;将T0设置为:由TR0启动、定时方式、工作方式0MOV TH0,#0E

22、0H;给定时器中计数器的高8位送入初值MOV TL0,#18H;给定时器中计数器的低5位送入初值MOV IE,#82H;T0中断允许ET0=1,允许T0中断,并将总允许控制位EA置1SETB TR0;将TR0位置1,启动T0工作LOOP:SJMP LOOP;LOOP为指令的当前地址(等待中断)ORG 0300H;中断服务程序的入口地址T0INT:SETB P1.0;将P1.0位置1,输出正脉冲CLR P1.0;这是单机器周期的指令,所以正脉冲宽度为2s,正脉冲消失MOV TH0,#0E0H;重新装载高8位的初值MOV TL0,#18H;重新装载低5位的初值RETI,4.2 定时器/计数器,4.2.6 定时器/计数器举例,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号