《最新单片机功能部件1幻灯片.ppt》由会员分享,可在线阅读,更多相关《最新单片机功能部件1幻灯片.ppt(142页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、MCS-51单片机内部功能部件第6章 中断系统第7章 定时/计数器第8章 串行通信接口中断系统要解决的问题CPU在不断的执行指令中,是如何检测到随机发生的中断请求中断能够人为控制吗(允许中断或禁止中断)中断是随机产生的,不能用一般的子程序调用,那么如何处理中断处理子程序呢当有多个中断时怎么处理中断服务完毕,如何正确回到原断点处MCS51中断系统中断系统 MCS51系列中不同型号单片机的中断源数量系列中不同型号单片机的中断源数量是不同的(是不同的(511个),最典型的个),最典型的8051单片机有单片机有5个中断源(外部中断个中断源(外部中断0、1,内部定时器中断,内部定时器中断0、1,串口中断
2、),具有两个中断优先级串口中断),具有两个中断优先级。与中断系统有。与中断系统有关的特殊功能寄存器有中断允许寄存器关的特殊功能寄存器有中断允许寄存器IE、中断优、中断优先级控制寄存器先级控制寄存器IP、中断控制寄存器、中断控制寄存器TCON和和SCON中有关位。中有关位。MCS51单片机基本的中断系统结构如单片机基本的中断系统结构如图图41所示。所示。 外部中断请求0内部定时器0外部中断请求1内部定时器1 内部 T串行口 R中断请求标志寄存器源允许总允许允许中断寄存器中断优先级寄存器中断源标识符中断源标识符高优先级中断请求中断矢量低优先级中断请求中断矢量T发送R接收INT0INT1查询硬件图4
3、1 MCS51的中断系统1中断源与中断标志中断源与中断标志 MCS51中典型的中典型的8051单片机有单片机有5个个中断源:中断源:两个外部两个外部中断:(中断:(P3.2 INT0、P3.3 INT1)上上输入输入的外部中断源,低电平或负跳变有效,置位的外部中断源,低电平或负跳变有效,置位TCON中的中的IE0和和IE1中断请求标志位;中断请求标志位;三个内部三个内部中断源:定时器计数器中断源:定时器计数器T0、T1的溢出中断的溢出中断源和串行口的发送源和串行口的发送/接收中断。对接收中断。对T0和和T1中断,当定中断,当定时计数回时计数回0溢出时,由硬件自动置位溢出时,由硬件自动置位TCO
4、N中的中的TF0或或TF1中断请求标志位;对串行接收发送中断,当中断请求标志位;对串行接收发送中断,当完成一串行完成一串行帧帧的接收发送时,由硬件自动置的接收发送时,由硬件自动置SCON中的中断请求标志位中的中断请求标志位TI(发送)或(发送)或RI(接收),必须(接收),必须由用户在中断服务程序中复位由用户在中断服务程序中复位TI或或RI。 中断控制寄存器中断控制寄存器TCON的各位(可位寻址):的各位(可位寻址):IE0:外部中断:外部中断0请求源(请求源(INT0)标志。)标志。 IE01,外部中断,外部中断0正在向正在向CPU请求中断,当请求中断,当 CPU响应该中断时由硬件清零响应该
5、中断时由硬件清零IE0(边沿触发方式)。(边沿触发方式)。IT0:外部中断源:外部中断源 INT0 触发方式控制位。触发方式控制位。IT0 0,外部中断,外部中断0程控为程控为电平触发方式电平触发方式,当,当P3.2输入低电平时,置位输入低电平时,置位IE0。IT0 1,外部中断,外部中断0程程控为控为边沿触发方式边沿触发方式,相继的两次采样,一个周期中,相继的两次采样,一个周期中采样到为高电平,接着的下个周期中采样到为低电采样到为高电平,接着的下个周期中采样到为低电平,则置平,则置1 IE0。IE1:外部中断:外部中断1请求(请求(INT1,P3.3)标志。)标志。 IE1 1外部中断外部中
6、断1向向 CPU请求中断,当请求中断,当 CPU响应响应外部中断时,由硬件清外部中断时,由硬件清0 IE1(边沿触发方式)。(边沿触发方式)。IT1:外部中断:外部中断1触发方式控制位。触发方式控制位。 IT1 0,外部中断,外部中断1程控为电平触发方式,程控为电平触发方式,IT1 1,外部中断,外部中断1为边沿触发方式。其功能和为边沿触发方式。其功能和IT0类似。类似。TR0:定时计数器:定时计数器T0运行控制位。运行控制位。(启动(启动/停止)停止)TF0:定时计数器:定时计数器T0溢出中断标志位,溢出中断标志位,CPU执行中执行中断服务程序时由硬件复位。断服务程序时由硬件复位。TR1:定
7、时计数器:定时计数器T1运行控制位。运行控制位。TF1:定时计数器:定时计数器T1溢出中断标志位,溢出中断标志位,CPU执行中执行中断服务程序时由硬件复位。断服务程序时由硬件复位。 串行口中断:串行口的接收中断标志串行口中断:串行口的接收中断标志RI(SCON.0)和发送中断标志和发送中断标志TI(SCON.1)逻辑或以后作为内)逻辑或以后作为内部的一个中断源。当串行口发送完一个字符由内部部的一个中断源。当串行口发送完一个字符由内部硬件置位发送中断标志硬件置位发送中断标志TI,接收到一个字符后也由,接收到一个字符后也由内部硬件置位接收中断标志内部硬件置位接收中断标志RI。应该注意,。应该注意,
8、CPU响响应串行口的中断时,并不清应串行口的中断时,并不清0 TI和和RI中断标志,中断标志,TI和和RI必须由软件清必须由软件清0(中断服务程序中必须有清(中断服务程序中必须有清 TI、RI的指令)。的指令)。SCON:串行通信控制寄存器:串行通信控制寄存器2中断控制中断控制(1)中断允许寄存器)中断允许寄存器IEMCS51的的CPU对中断源的开放或屏蔽,即每一个对中断源的开放或屏蔽,即每一个中断源是否被允许中断,是由内部的中断允许寄存中断源是否被允许中断,是由内部的中断允许寄存器器IE(IE为特殊功能寄存器,它的字节地址为特殊功能寄存器,它的字节地址A8H,可位寻址)控制的,其格式如下:可
9、位寻址)控制的,其格式如下:EA:CPU的中断开放标志。的中断开放标志。 EA 1,CPU开放中断;开放中断; EA 0,CPU屏蔽所有的中断申请。屏蔽所有的中断申请。EX0:外部中断:外部中断0中断允许位。中断允许位。 EX0 1,允许中断;,允许中断;EX0 0,禁止中断。,禁止中断。 ET0:T0的溢出中断允许位。的溢出中断允许位。 ET0 1,允许,允许T0中断;中断; ET0 0,禁止,禁止T0中断。中断。EX1:外部中断:外部中断1中断允许位。中断允许位。 EX1 1,允许外部中断,允许外部中断1中断;中断; EX1 0,禁止外部中断,禁止外部中断1中断。中断。ET1:定时器计数器
10、:定时器计数器 T1的溢出中断允许位。的溢出中断允许位。 ET1 1,允许,允许T1中断;中断; ET1 0禁止禁止T1中断。中断。ES: 串行口中断允许位。串行口中断允许位。 ES 1,允许串行口中断;,允许串行口中断; ES 0禁止串行口中断。禁止串行口中断。 (2)中断优先级控制)中断优先级控制MCS51有两个中断优先级,每一中断请求源可编程为有两个中断优先级,每一中断请求源可编程为高优先级中断或低优先级中断,实现二级中断嵌套。一高优先级中断或低优先级中断,实现二级中断嵌套。一个正在被执行的低优先级中断服务程序能被高优先级中个正在被执行的低优先级中断服务程序能被高优先级中断所中断,断所中
11、断,但不能被另一个同级的或低优先级中断源所但不能被另一个同级的或低优先级中断源所中断。中断。若若CPU正在执行高优先级的中断服务程序,则不正在执行高优先级的中断服务程序,则不能被任何中断源所中断,一直执行到结束,遇到返回指能被任何中断源所中断,一直执行到结束,遇到返回指令令RETI,返回主程序后再执行一条指令才能响应新的中,返回主程序后再执行一条指令才能响应新的中断源申请。断源申请。*为了实现上述功能,为了实现上述功能,MCS51的中断系统有两个不可寻的中断系统有两个不可寻址的优先级状态触发器,一个指出址的优先级状态触发器,一个指出CPU是否正在执行高是否正在执行高优先级中断服务程序,另一个指
12、出优先级中断服务程序,另一个指出CPU是否正在执行低是否正在执行低级中断服务程序。这两个触发器的级中断服务程序。这两个触发器的1状态分别屏蔽所有状态分别屏蔽所有的中断申请和同一优先级的其他中断源申请。的中断申请和同一优先级的其他中断源申请。另外,另外,MCS51的片内有一个中断优先级寄存器的片内有一个中断优先级寄存器IP(IP为特殊功能寄存器,它的字节地址为为特殊功能寄存器,它的字节地址为B8H,可位寻址),可位寻址),其格式如下:其格式如下: PX0:外部中断:外部中断0中断优先级控制位。中断优先级控制位。 PX0 1,外部中断,外部中断0中断定义为高优先级中断;中断定义为高优先级中断; P
13、X0 0,外部中断,外部中断0中断定义为低优先级中断。中断定义为低优先级中断。PT0:定时器:定时器T0中断优先级控制位。中断优先级控制位。 PT0 1,定时器,定时器T0中断定义为高优先级中断;中断定义为高优先级中断; PT0 0,定时器,定时器T0中断定义为低优先级中断。中断定义为低优先级中断。PX1:外部中断:外部中断1中断优先级控制位。中断优先级控制位。 PX1 = 1,外部中断,外部中断1中断定义为高优先级中断;中断定义为高优先级中断; PX1 0,外部中断,外部中断1中断定义为低优先级中断。中断定义为低优先级中断。PT1:定时器:定时器T1中断优先级控制位。中断优先级控制位。 PT
14、1 1,定时器,定时器T1中断定义为高优先级中断;中断定义为高优先级中断; PT1 0,定时器,定时器T1中断定义为低优先级中断。中断定义为低优先级中断。 PS:串行口中断优先级控制位。:串行口中断优先级控制位。 PS 1,串行口中断定义为高优先级中断;,串行口中断定义为高优先级中断; PS 0,行口中断定义为低优先级中断。,行口中断定义为低优先级中断。在在 CPU接收到接收到同样优先级同样优先级的几个中断请求源时,的几个中断请求源时,一个内部的硬件查询序列确定优先服务于哪一个中一个内部的硬件查询序列确定优先服务于哪一个中断申请,这样在同一个优先级里,由查询序列确定断申请,这样在同一个优先级里
15、,由查询序列确定了优先级结构,其优先级别排列如下:了优先级结构,其优先级别排列如下: 外部中断外部中断0 最高最高 定时器定时器T0中断中断 外部中断外部中断1 定时器定时器T1中断中断 串行口中断串行口中断 最低最低# MCS51复位以后,特殊功能寄存器复位以后,特殊功能寄存器IE、IP的内容均为的内容均为0,由初始化程序对,由初始化程序对IE、IP编程,以开编程,以开放中央处理器放中央处理器CPU中断、允许某些中断源中断和改中断、允许某些中断源中断和改变中断的优先级。变中断的优先级。 *3中断响应过程中断响应过程 MCS51的的CPU在每一个机器周期顺序检查每一在每一个机器周期顺序检查每一
16、个中断源。在个中断源。在机器周期的机器周期的S6采样采样并按优先级处理所并按优先级处理所有被激活的中断请求,如果没有被下述条件所阻止,有被激活的中断请求,如果没有被下述条件所阻止,将在下一个机器周期的状态将在下一个机器周期的状态S1响应激活了的最高级响应激活了的最高级中断请求。中断请求。CPU正在处理相同的或更高优先级的中断;正在处理相同的或更高优先级的中断;现行的机器周期不是所执行指令的最后一个机器周现行的机器周期不是所执行指令的最后一个机器周期;期; 正在执行的指令是中断返回指令(RETI)或者是对IE、IP的写操作指令(执行这些指令后至少再执行一条指令后才会响应中断)。 *如果上述条件中
17、有一个存在,CPU将丢弃中断查询的结果;若一个条件也不存在,将在紧接着的下一个机器周期执行中断查询的结果。处理器响应中断时,先置位相应的优先级状态触发器(该触发器指出CPU开始处理的中断优先级别),然后执行一条硬件子程序调用,清0中断请求源申请标志(TI和RI除外)。接着把程序计数部PC的内容压入堆栈(但不保护PSW),将被响应的中断服务程序的入口地址送程序计数器PC,各中断源服务程序的入口地址为: 外部中断00003H定时器T0000BH外部中断10013H定时器T1001BH串行口中断0023H通常在中断入口,安排一条跳转指令,以转移到用户设计的中断处理程序入口。CPU执行中断处理程序一直
18、到RETI指令为止。RETI指令是表示中断服务程序的结束,CPU执行完这条指令后,清0响应中断时所置位的优先级状态触发器,然后从堆栈中弹出顶上的两个字节到程序计数器 PC,CPU从原来打断处重新执行被中断的程序。由此可见,用户的中断服务程序末尾必须安排一条返回指令RETI,CPU现场的保护和恢复必须由用户的中断服务程序实现。 * *一、中断处理过程一、中断处理过程 中断处理过程分为四个阶段:中断请求,中断处理过程分为四个阶段:中断请求,中断响应,中断处理、中断返回。中断响应,中断处理、中断返回。MCSMCS5151系列单系列单 片机的中断过程流程如图片机的中断过程流程如图6.26.2所示。所示
19、。 NNYYYN执执 行行 指指 令令中断标志中断标志1?(中断请求中断请求?) 指令指令最后一个最后一个T周期周期?EA=1?允允 许许 位位 = 1?CPU 判判 别优别优 先权先权 ,响响 应优应优 先权高先权高 的中断的中断断点的断点的PC进栈进栈, 中断服务入口地址送中断服务入口地址送PC撤撤 除除 中中 断断 标标 志志中中 断断 服服 务务中中 断断 返返 回回, 断断 点点 出出 栈栈 送送 PC 中断请求中断请求.中断响应中断响应中断服务中断服务中断返回中断返回中断请求、中断响应过程由硬件完成。中断请求、中断响应过程由硬件完成。中断服务程序应根据需要进行编写。程序中要注意保护
20、中断服务程序应根据需要进行编写。程序中要注意保护现场和恢复现场。现场和恢复现场。中断返回是通过执行一条中断返回是通过执行一条RETIRETI中断返回指令,使堆栈中中断返回指令,使堆栈中被压入的断被压入的断 点地址送点地址送PCPC,从而返回主程序的断点继续执,从而返回主程序的断点继续执行主程序。另外行主程序。另外RETIRETI还有恢复优先级状态触发器还有恢复优先级状态触发器 的作用,的作用,因此不能以因此不能以RETRET指令代替指令代替“RETIRETI”指令。指令。 * *二、中断请求的撤除二、中断请求的撤除 CPUCPU响应中断后,应撤除该中断请求标志,否则响应中断后,应撤除该中断请求
21、标志,否则会再次中断。会再次中断。u对定时计数器对定时计数器T0、T1的溢出中断,的溢出中断,CPU响应中断后,硬件响应中断后,硬件自动清除中断请求标志自动清除中断请求标志TF0 TF1。u 对边沿触发的外部中断对边沿触发的外部中断INT1和和INT0,CPU响应中断后硬件响应中断后硬件自动清除中断请求标志自动清除中断请求标志IE0和和IE1。u 对于串行口中断,对于串行口中断,CPU响应中断后,没有用硬件清除中断请响应中断后,没有用硬件清除中断请求标志求标志TI、RI,即这些中断标志,即这些中断标志 不会自动清除,必须用软件清不会自动清除,必须用软件清除,这是在编串行通信中断服务中应该注意的
22、。除,这是在编串行通信中断服务中应该注意的。u 对电平触发的外部中断,对电平触发的外部中断,CPU在响应中断时也不会自动清除在响应中断时也不会自动清除中断标志,因此,在中断标志,因此,在CPU响应中断后应立即撤除响应中断后应立即撤除INT1或或INT0的的低电平信号。低电平信号。*4外部中断响应时间INT0和INT1电平在每一个机器周期的S5P2被采样并锁存到IE0、IE2中,这个新置入的IE0、IEI状态等到下一个机器周期才被查询电路查询到。如果中断被激活,并且满足响应条件,CPU接着执行一条硬件子程序调用指令以转到相应的服务程序入口,该调用指令本身需两个机器周期。这样,在产生外部中断请求到
23、开始执行中断服务程序的第一条指令之间,最少需要三个完整的机器周期。如果中断请求被前面列出的三个条件之一所阻止,则需要更长的响应时间。如果已经在处理同级或更高级中断,额外的等待时间明显地取决于别的中断服务程序的处理过程。当没有处理同级或更高级中断时,如果正在处理的指令没有执行到最后的机器周期,所需的额外等待时间不会多于3个机器周期,因为最长的指令(乘法指令MUL和除法指令 DIV)也只有 4个机器周期,如果正在执行的指令为IE、IP的指令,额外的等待时间不会多于 5个机器周期(最多需一个周期完成正在处理的指令,完成下一条指令(设MUL或DIV)4个机器周期)。这样,在一个单一中断优先级的系统里,
24、外部中断响应时间总是在38个机器周期之间。 *外部中断触发方式选择1电平触发方式 若外部中断定为电平触发方式,外部引脚中断输入必须有效(保持低电平),直到CPU实际响应该中断时为止,同时在中断服务程序返回之前,外部中断输入必须无效(高电平),否则CPU返回后会再次引起中断。所以电平触发方式适合于外部中断输入以低电平输入的、而且中断服务程序能清除外部中断输入请求信号的情况。在用户系统中,可将中断输入信号经一个D触发器接入,并使D触发器的D端接地,当外部中断请求的正脉冲信号出现在D触发器的CLK端时,D触发器的Q端产生负电平,INTx有效,发出中断请求,CPU执行中断服务程序时,利用一根口线,如P
25、1.0,输出一负电平脉冲使D触发器置位,撤消中断请求。 2边沿触发方式外部中断若定义为边沿触发方式,外部中断申请触发器能锁存外部中断输入线上的负跳变,即使CPU暂时不能响应,中断申请标志也不会丢失。在这种方式里,如果相继连续两次采样,一个周期采样到外部中断输入为高电平,下个周期采样到低电平,则置位中断申请触发器,直到CPU响应此中断时才清0。这样不会丢失中断,但输入的脉冲宽度至少保持12个时钟周期(若晶振频率为6MHz,即 2S)才能被CPU采样到。外部中断的边沿触发方式适合于以脉冲形式输入的外部输入请求,如ADC0809的AD转换结果的标志信号EOC为正脉冲,取反后连到8031的INTx,就
26、可以中断方式读取AD的转换结果。 中断服务程序及例程使用MCS51的中断,要为使用到的中断源编写中断服务程序。C51为中断服务程序的编写提供了方便的方法。C51的中断服务程序是一种特殊的函数,它的说明形式为:void 函数名(void) interrupt n using m 函数体语句 这里,interrupt和using是为编写C51中断服务程序而引入的关键字,interrupt表示该函数是一个中断服务函数,interrupt后的整数n表示该中断服务函数是对应哪一个中断源。 每个中断源都有系统指定的中断编号: 中 断 源 中 断 编 号外部中断00定时器T01外部中断12定时器T13串行口
27、中断4using指定该中断服务程序要使用的工作寄存器组号,m为03。关键字interrupt和using只能用于中断服务函数的说明而不能用于其它函数。程序中的任何函数都不能调用中断服务函数,中断服务函数是由系统调用的。例:例:INT0端口接一开关,端口接一开关,P1.0接一发光二极管。接一发光二极管。开关闭合(接地)时,发光二极管改变一次状态。开关闭合(接地)时,发光二极管改变一次状态。#include “reg51.h”#include “intrins.h”Sbit P10=P10void delay(void) int a = 5000; while(a) _nop_( ); /*INT
28、RINS.H中说明的内部函数中说明的内部函数*/P1.0INT0void int0_srv(void) interrupt 0 using 1 delay()(); if(INT0 = 0) P10 = !P10 ; while(INT0 = 0 ); void main()() P10 = 0; 初始化初始化TCON、IE、IP EA = 1; IT0=0; EX0 = 1; while(1); &+5V+5VP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.789C51EA&INT011111K 41K 2300 4图6.、例6-1例如,对本节的例例如,对本节的例1用用C语言编
29、程语言编程#includeint0() interrupt 0 /*INT0中断函数中断函数*/ P1=0 x0f; /*输入端先置输入端先置1,灯灭,灯灭*/ P1=4; /* 读入开关状态,并左移四位,读入开关状态,并左移四位, 使开关反映在发光二极管上使开关反映在发光二极管上*/ main() EA=1; /*开中断总开关开中断总开关*/ EX0=1; /*允许允许INT0中断中断*/ IT0=1; /*下降沿产生中断下降沿产生中断*/ while(1); /*等待中断等待中断*/ P1.189C51P1.0P1.2P1.4P1.3P1.5P1.6&1K 2INT1驱动器+5Vag图6.
30、EA*法法1:在主程序中控制中断次数:在主程序中控制中断次数#includechar i;code char tab16= 0 x3f,0 x06,0 x5b, 0 x4F,0 x66,0 x6d,0 x7d, 0 x07, 0 x7f,0 x6f,0 x77, 0 x7c,0 x39, 0 x5e,0 x79,0 x71;int( ) interrupt 2i+; /*计中断次数计中断次数*/ P1=tabi; /*查表,次数送显示查表,次数送显示*/ main() EA=1; EX1=1; IT1=1; ap5: P1=0 x3f; /*显示显示“0”*/ for(i=0;i16;); /
31、*当当I16等待中断等待中断*/ goto ap5; /*当当i=16重复下重复下 一轮一轮16次中次中*/法二:在中断服务程序中控制中断次数法二:在中断服务程序中控制中断次数#includechar i;code char tab16= 0 x3f,0 x06, 0 x5b,0 x4F0 x66, 0 x6d,0 x7d,0 x07, 0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e, 0 x79,0 x71;int() interrupt 2 i+ if (i16)P1=tabi; elsei=0;P1=0 x3f;main() EA=1;EX1=1; IT1=1;
32、P1=0 x3f; while(1); /*等待中断等待中断*/ 89C51P1.0P1.7INT1+5V作业:中断控制流水灯定时定时/计数器计数器定时定时/计数器控制寄存器计数器控制寄存器定时定时/计数器运行控制计数器运行控制定时定时/计数器工作方式计数器工作方式通常实现定时通常实现定时/计数有计数有3种主要方法种主要方法:软件定时,软件定时,即让机器执行一个程序段,这段程序本身没即让机器执行一个程序段,这段程序本身没有具体的执行目的,只是为了磨时间。执行这段程序所有具体的执行目的,只是为了磨时间。执行这段程序所需要的时间就是延时时间。这种程序前面已设计过。这需要的时间就是延时时间。这种程序
33、前面已设计过。这种方法定时占用种方法定时占用CPU执行时间,降低了执行时间,降低了CPU利用率。利用率。数字电路硬件定时:数字电路硬件定时:采用小规模集成电路器件如采用小规模集成电路器件如555,外接定时部件外接定时部件(电阻和电容电阻和电容)构成。这样的定时电路简单,构成。这样的定时电路简单,但要改变定时范围,必须改变电阻和电容,这种定时电但要改变定时范围,必须改变电阻和电容,这种定时电路在硬件连接好以后,修改不方便。路在硬件连接好以后,修改不方便。可编程定时可编程定时/计数器计数器是为方便微型计算机系统的设计和是为方便微型计算机系统的设计和应用而研制的,它是硬件定时,又很容易地通过软件来应
34、用而研制的,它是硬件定时,又很容易地通过软件来确定和改变它的定时值,通过初始化编程,能够满足各确定和改变它的定时值,通过初始化编程,能够满足各种不同的定时和计数要求,因而在嵌入式系统的设计和种不同的定时和计数要求,因而在嵌入式系统的设计和应用中得到广泛的应用。(基本原理)应用中得到广泛的应用。(基本原理)8051型有两个型有两个十六位十六位定时定时/计数器计数器T0、T1,有四种工,有四种工作方式。作方式。 MCS51系列单片机的定时系列单片机的定时/计数器有几计数器有几个相关的特殊功能寄存器:个相关的特殊功能寄存器:方式控制寄存器方式控制寄存器TMOD;加法计数寄存器加法计数寄存器TH0、T
35、H1 (高八位)(高八位) TL0、TL1 (低八位);(低八位);定时定时/计数到标志计数到标志TF0、TF1(中断控制寄存器(中断控制寄存器TCON)定时定时/计数器启停控制位计数器启停控制位TR0、TR1(TCON)定时定时/计数器中断允许位计数器中断允许位ET0、ET1(中断允许寄存(中断允许寄存IE)定时定时/计数器中断优先级控制位计数器中断优先级控制位PT0、PT1(中断优(中断优IP) 1. 定时工作方式定时工作方式 设置为定时工作方式时,定时器计数的脉冲是由设置为定时工作方式时,定时器计数的脉冲是由51单片机片内单片机片内振荡器经振荡器经12分频后产生的。分频后产生的。 每经过
36、一个机器周期定时器每经过一个机器周期定时器(T0或或T1)的数值加的数值加1直至计数满产生直至计数满产生溢出。溢出。如:当如:当8051采用采用12MHz晶体时,每个机器周期为晶体时,每个机器周期为1s,计,计5 个机器个机器周期即为周期即为5 s,即定时,即定时5 s 。 2. 计数工作方式计数工作方式 设置为计数工作方式时,定时设置为计数工作方式时,定时/计数器对引脚计数器对引脚 P3.4 (T0)和和P3.5 (T1)输入的外部脉冲信号计数。输入的外部脉冲信号计数。 当输入脉冲信号产生由当输入脉冲信号产生由1至至0的下降沿时,定时器的值的下降沿时,定时器的值 加加 1。测。测量过程是:量
37、过程是: CPU前一个机器周期采样脉冲值为高,下一个机器周前一个机器周期采样脉冲值为高,下一个机器周期采样脉冲值为低,则计数器加期采样脉冲值为低,则计数器加 1。 由于检测一个由于检测一个1 1至至0 0的跳变需要二个机器周期,故最高计数的跳变需要二个机器周期,故最高计数频率为振荡频率的二十四分之一。频率为振荡频率的二十四分之一。 虽然对输入信号的占空比无特殊要求,但为了确保某个电平虽然对输入信号的占空比无特殊要求,但为了确保某个电平在变化之前至少被采样一次,要求电平保持时间至少是一个完整在变化之前至少被采样一次,要求电平保持时间至少是一个完整的机器周期。的机器周期。 无论是定时还是计数,当软
38、件设定了定时无论是定时还是计数,当软件设定了定时/计数器的工作方式,计数器的工作方式,启动以后,定时启动以后,定时/计数器就按规定的方式工作,不占用计数器就按规定的方式工作,不占用CPU的操作的操作时间,此时时间,此时CPU可执行其他程序,到了计满规定的时间或规定的可执行其他程序,到了计满规定的时间或规定的个数(定时个数(定时/计数器溢出),定时计数器溢出),定时/计数器会给出溢出标志,你可以计数器会给出溢出标志,你可以通过查询或中断方式通过查询或中断方式了解是否溢出。这种工作的方式如同人带的了解是否溢出。这种工作的方式如同人带的手表,人在工作或睡觉,而手表依然滴滴答答行走,你可以通过手表,人
39、在工作或睡觉,而手表依然滴滴答答行走,你可以通过看表或设闹钟方式,到了规定的时间,干你想干的事。看表或设闹钟方式,到了规定的时间,干你想干的事。定时计数器定时计数器方式控制方式控制寄存器寄存器TMOD 定时计数器的工作方式由定时计数器的工作方式由TMOD的各位控制,的各位控制,TMOD的格式为:的格式为: TMOD的低四位为的低四位为T0的方式字,高四位为的方式字,高四位为T1的方的方式字。式字。TMOD不能位寻址,必须整体赋值不能位寻址,必须整体赋值。TMOD各各位的含义如下位的含义如下:1. 工作方式选择位工作方式选择位M1、M0 M1、M0的状态决定定时器的工作方式:的状态决定定时器的工
40、作方式:2. 定时和外部事件计数方式选择位定时和外部事件计数方式选择位C/T C/T0为定时器方式。在该方式中,以振荡器输出时为定时器方式。在该方式中,以振荡器输出时钟脉冲钟脉冲(fosc)的十二分频信号(即机器周期)作为计数信号,的十二分频信号(即机器周期)作为计数信号,也就是每一个机器周期也就是每一个机器周期,定时器加定时器加1,若晶振为,若晶振为12MHz,则定时器计数频率为则定时器计数频率为1MHz,计数的脉冲周期为,计数的脉冲周期为1S。定。定时器从初值开始加时器从初值开始加1计数直至定时器溢出。计数直至定时器溢出。C/T1为外部事件计数器方式,这种方式为外部事件计数器方式,这种方式
41、将外部引脚(将外部引脚(T0为为P3.4、T1为为P3.5)上的输)上的输入脉冲作为计数脉冲。(下降沿进行计数)入脉冲作为计数脉冲。(下降沿进行计数) 外部事件计数时最高计数频率为晶振频外部事件计数时最高计数频率为晶振频率的二十四分之一,外部输入脉冲高电平和率的二十四分之一,外部输入脉冲高电平和低电平时间必须在一个机器周期以上。低电平时间必须在一个机器周期以上。 对外部输入脉冲计数的目的通常是为了对外部输入脉冲计数的目的通常是为了测试脉冲的周期、频率或对输入的脉冲数进测试脉冲的周期、频率或对输入的脉冲数进行累加。行累加。3. 门控位门控位GATE GATE与与TR0、TR1配合决定定时配合决定
42、定时/计数器的启停。计数器的启停。 GATE = 0时,定时器时,定时器/计数器的启停只受定时器计数器的启停只受定时器运行控制位(运行控制位(TR0、TR1)的控制。)的控制。 (软件启动) GATE = 1时,定时器时,定时器/计数器的启停除受计数器的启停除受TR0、 TR1控制外,还受外部引脚(控制外,还受外部引脚(INT0、 INT1)输入电)输入电平的控制(平的控制(为高为高)。即)。即TR0和和INT0控制控制T0的运行,的运行,TR1和和INT1控制控制T1的运行的运行 (软硬启动)定时器运行控制位定时器运行控制位在特殊功能寄存器在特殊功能寄存器 TCON中存放着定时器的运行控制位
43、中存放着定时器的运行控制位和溢出标志位。和溢出标志位。1定时器定时器T0运行控制位运行控制位TR0TR0(TCON.4)由软件置位和清零。)由软件置位和清零。 当当GATE=0时,时,T0的计数仅由的计数仅由TR0控制,控制,TR0=1时允许时允许T0计计数,数,TR0=0时禁止时禁止T0计数,这时,定时器仅由软件控制。计数,这时,定时器仅由软件控制。 当当GATE=1时,仅当时,仅当TR0=1且且P3.2的输入信号为的输入信号为高电平高电平时时T0才计数,当才计数,当TR0为为0或或P3.2的输入为低电平时都禁止的输入为低电平时都禁止T0计数,这计数,这时,若置时,若置TR0为为1,则定时器
44、仅由引脚信号的状态控制启停,因,则定时器仅由引脚信号的状态控制启停,因而是硬件控制的。用而是硬件控制的。用TR0和和INT0一起控制定时器的启停,则为一起控制定时器的启停,则为软、硬件配合控制。软、硬件配合控制。2定时器定时器 T1运行控制位运行控制位TR1 定时定时/计数器的工作方式计数器的工作方式MCS51的定时器有方式的定时器有方式0、方式、方式1、方式、方式2和和方式方式3这这4种工作方式。种工作方式。1.方式方式0当当M1M0=00时,定时器工作于方式时,定时器工作于方式0。12振荡器T0端TR0GATEINT0端C/T = 0C/T = 1TL0(5位)TH0(8位)TF0中断控制
45、 定时计数器0工作方式0与 方式方式 0为为13位的计数器,由位的计数器,由TL0的低的低5位和位和TH0的的8位位组成,组成,TL0低低5位计数溢出时向位计数溢出时向TH0进位,进位,TH0计数溢出时计数溢出时置位溢出标志置位溢出标志TF0。若。若T0工作于定时方式,设计数初值为工作于定时方式,设计数初值为a,晶振频率为,晶振频率为12MHz,则,则T0从初值开始计数到溢出的定从初值开始计数到溢出的定时时间为时时间为 t(213a)1S。2. 方式方式1当当M1M0=01时,定时器工作于方式时,定时器工作于方式1。12振荡器T1端TR1GATEINT1端C/T = 0C/T = 1TL1(8
46、位)TH1(8位)TF1中断控制 定时计数器工作方式1T1工作于方式工作于方式1时,由时,由TH1作为高作为高8位,位,TL1作为低作为低8位,构成一个十六位的计数器。若位,构成一个十六位的计数器。若T1工作于定时方式工作于定时方式1,计数初值为计数初值为 a,晶振频率为,晶振频率为12MHz,则,则T1从计数初值计从计数初值计数到溢出的定时时间为数到溢出的定时时间为t =(216a)S。3. 方式方式2M1M0=10时,定时器计数器工作于方式时,定时器计数器工作于方式2,方式,方式2为自动恢复初值的为自动恢复初值的 8位计数器。位计数器。TL1作为作为8位计数器,位计数器,TH1作为计数初值
47、寄存器。作为计数初值寄存器。 t =(28a)S。 12振荡器T1端TR1GATEINT1端C/T = 0C/T = 1TL1(8位)TH1(8位)TF1中断控制 定时/计数器工作方式2重新装入*4.方式方式3 M1M0=11时,被设置为方式时,被设置为方式3。12foscT0端TR0GATEINT0端C/T = 0C/T = 1TL0(8位)TF0中断控制定时/计数器工作方式31/12 fosc1/12 foscTR1TF1中断1/12 foscTH0(8位)控制 若若T1设置为工作方式设置为工作方式3时,则使时,则使T1停止计数。停止计数。若若T0被设置为方式被设置为方式3,则,则T0分为
48、两个独立的分为两个独立的8位计数位计数器器TL0和和TH0。 TL0可作为八位定时可作为八位定时/计数器,可使用计数器,可使用T0的所有的所有状态控制位(状态控制位(GATE、TR0、INT0(P3.2)、)、T0(P3.4)、)、TF0等),等),TL0计数溢出时置位溢出标计数溢出时置位溢出标志志TF0,TL0计数初值必须由软件每次设定。计数初值必须由软件每次设定。 TH0只能作为一个只能作为一个8位定时器,并使用位定时器,并使用T1的状态控的状态控制位制位TR1、TF1。TRl为为1时,允许时,允许TH0计数,当计数,当TH0计数溢出时,置计数溢出时,置1溢出标志溢出标志TF1。 一般只有
49、当一般只有当T1用于串行口的波特率发生器时,用于串行口的波特率发生器时,T0才在需要时用于方式才在需要时用于方式3,以增加一个计数器。这,以增加一个计数器。这时时T1的启停也受的启停也受TR1控制,当控制,当T1计数溢出时不置计数溢出时不置位位TF1。定时定时/计数器应用举例计数器应用举例使用使用MCS51单片机的定时单片机的定时/计数器的步骤是:计数器的步骤是:1设定设定TMOD,确定:,确定: 工作状态工作状态(用作定时器用作定时器/计数器计数器); 工作方式;工作方式; 控制方式。控制方式。 如:如:T1用于定时器、方式用于定时器、方式1,T0用于计数器、方式用于计数器、方式2,均用软件
50、控制。则均用软件控制。则TMOD的值应为:的值应为:0001 0110,即即0 x16。2设置合适的计数初值,以产生期望的定时间隔。设置合适的计数初值,以产生期望的定时间隔。由于定时由于定时/计数器在方式计数器在方式0、方式、方式1和方式和方式2时的最大时的最大计数间隔取决于使用的晶振频率计数间隔取决于使用的晶振频率fosc,如下表所示,如下表所示,当需要的定时间隔较大时,要采用适当的方法,即当需要的定时间隔较大时,要采用适当的方法,即将定时间隔分段处理。将定时间隔分段处理。 计数初值的计算方法如下,设晶振频率为计数初值的计算方法如下,设晶振频率为fosc,则定时则定时/计数器计数频率为计数器