第2章 中断系统和定时计数器_第1页
第2章 中断系统和定时计数器_第2页
第2章 中断系统和定时计数器_第3页
第2章 中断系统和定时计数器_第4页
第2章 中断系统和定时计数器_第5页
已阅读5页,还剩119页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第2章章 中断系统和定时中断系统和定时/计数器计数器 本章学习目标本章学习目标 :理解中断概念,能正确描绘单片机中断响应过程理解中断概念,能正确描绘单片机中断响应过程熟记熟记5151单片机的单片机的5 5个中断源及其中断入口地址个中断源及其中断入口地址能按要求正确设置特殊功能寄存器能按要求正确设置特殊功能寄存器IEIE、IPIP、TCONTCON、SCONSCON和和TMODTMOD熟悉中断优先控制的方法熟悉中断优先控制的方法能正确描绘定时能正确描绘定时/ /计数器的计数器的4 4种工作方式,重点掌种工作方式,重点掌握方式握方式1 1、方式、方式2 2的应用的应用学会定时学会定时/ /计数初

2、值的计算计数初值的计算能读懂教材中的控制实例,学会编写同等难度的能读懂教材中的控制实例,学会编写同等难度的中断、定时中断、定时/ /计数程序计数程序2.1 中断系统中断系统2.1.12.1.1中断系统的基本概念中断系统的基本概念某人看书某人看书某人正在处理一件事某人正在处理一件事A电话铃响电话铃响出现另一件须立即解决的事出现另一件须立即解决的事B暂停看书暂停看书中止中止A 书中作记号书中作记号记录断点,便于接续记录断点,便于接续 电话谈话电话谈话处理处理B继续看书继续看书继续继续A的工作的工作1.中断的概念中断的概念 (1)现实生活中的中断:)现实生活中的中断: 中断原因:中断原因: 一个人不

3、可能同时一个人不可能同时完成两项任务。完成两项任务。 单片机单片机只有一个只有一个CPU,一旦面临,一旦面临多任务,它也会多任务,它也会中断吗?中断吗?先接电话,然后再继续看书,这样效率最高!2.1.1中断系统的基本概念中断系统的基本概念为什么应用中断技术为什么应用中断技术 解决快速解决快速CPUCPU和慢速外设之间的和慢速外设之间的矛盾。提高矛盾。提高CPUCPU和外设的工作效率。和外设的工作效率。(2)单片机中的中断)单片机中的中断 CPU在处理某一事件在处理某一事件A时,发生了另一事件时,发生了另一事件B请求请求CPU迅速去处理迅速去处理(中断发生或中断请求)(中断发生或中断请求); C

4、PU暂时中断当前的工作,转去处理事件暂时中断当前的工作,转去处理事件B(中断响(中断响应和中断服务)应和中断服务); 待待CPU将事件将事件B处理完毕后,再回到原来事件处理完毕后,再回到原来事件A被中被中断的地方继续处理事件断的地方继续处理事件A(中断返回)(中断返回)。中断请求中断请求中断响应中断响应中断服务中断服务中断返回中断返回中断过程中断过程事件事件B的的处理过程处理过程事件事件A事件事件B某人看书某人看书某人正在处理一件事某人正在处理一件事A电话铃响电话铃响出现另一件须立即解决的事出现另一件须立即解决的事B暂停看书暂停看书中止中止A 书中作记号书中作记号记录断点,便于接续记录断点,便

5、于接续 电话谈话电话谈话处理处理B继续看书继续看书继续继续A的工作的工作保护断点保护断点中断响应中断响应中断请求中断请求中断返回中断返回1.中断的概念中断的概念 (1)现实生活中的中断:)现实生活中的中断:2.中断技术的应用中断技术的应用 并行处理并行处理 CPU可以与多台外设并行工作,并分时与他们进可以与多台外设并行工作,并分时与他们进行信息交换,提高了行信息交换,提高了CPU的工作效率。的工作效率。 实时控制实时控制 单片机应用系统可能随机请求单片机应用系统可能随机请求CPU提供服务。有提供服务。有了中断系统,了中断系统,CPU就可以立即响应并予以处理。就可以立即响应并予以处理。 故障处理

6、故障处理 单片机系统在工作时可能会出现一些突发故障,如单片机系统在工作时可能会出现一些突发故障,如电源断电,存储器出错,程序执行错误(如除数为电源断电,存储器出错,程序执行错误(如除数为0)等,一旦出现故障,等,一旦出现故障,CPU就可及时转去执行故障处理就可及时转去执行故障处理程序,而不必停机。程序,而不必停机。中断系统的功能中断系统的功能1 1实现中断及返回实现中断及返回 2 2实现优先权排队实现优先权排队3 3高级中断源能中断低级中断处理(嵌高级中断源能中断低级中断处理(嵌 套)套)3.中断系统中断系统 为实现中断功能而配置的硬件和为实现中断功能而配置的硬件和编写的软件就是中断系统。编写

7、的软件就是中断系统。中断功能由中断系统来执行。中断功能由中断系统来执行。图图2-1 中断系统的结构框图中断系统的结构框图中断系统的结构中断系统的结构中中 断断 源源1中断标志中断标志2中断允许中断允许3中断优先级中断优先级4中断系统结构中断系统结构5中 断 源中断结构图T89S51有有5个中断源:个中断源:外部输入中断源外部输入中断源INT0(P3.2)外部输入中断源外部输入中断源INT1(P3.3)定时计数器定时计数器T0的溢出的溢出定时计数器定时计数器T1的溢出的溢出串行口发送或接收中断源串行口发送或接收中断源单片机引脚图TCON五个中断源由特殊功能寄存器五个中断源由特殊功能寄存器TCON

8、TCON和和SCONSCON的相应位锁定。的相应位锁定。中断标志中断标志中断源中断源中断标志位中断标志位CPUINT0INT1T0T1串口串口IE0IE1TF0TF1RITI主主程程序序TCONSCON中断允许中断允许中断允许中断允许中断结构图IE中断标志中断标志IE0TF0IE1TF1RI0TI0中断源中断源INT0T0INT1T1串口串口中断优先中断优先中断中断源源中断标志中断标志中断允许中断允许中断优先中断优先INT0T0INT1T1串口串口IE0TF0IE1TF1RI0TI0IP 答案:答案: 此时此时CPU按自然优先级顺序确定该响应哪个按自然优先级顺序确定该响应哪个中断请求。中断请求

9、。注意:注意: 自然优先级由硬件决定,用户不能更改。自然优先级由硬件决定,用户不能更改。排列见表排列见表2-2表表22 中断入口地址及自然优先级中断入口地址及自然优先级 例 设单片机的片外中断为高优先级,片内中断为低优设单片机的片外中断为高优先级,片内中断为低优先级。设置先级。设置IP相应值。相应值。 解:(解:(IP)=00000101B=05H (a)用字节操作指令用字节操作指令 MOV IP,#05H;或;或 MOV 0B8H,#05H; (b)用位操作指令用位操作指令 SETB PX0 SETB PX1 CLR PS CLR PT0 CLR PT1各中断源及其对应的矢量地各中断源及其对

10、应的矢量地址址中断源中断矢量外部中断 0(INT0)0003H定时器 T0 中断000BH外部中断 1(INT1)0013H定时器 T1 中断001BH串行口中断0023H返 回中断系统的结构图中断系统的结构图返回返回单片机结构引脚图单片机结构引脚图返回返回中断系统的结构图中断系统的结构图返回返回中断系统的结构图中断系统的结构图返回返回TCON:TCON:定时定时/ /计数器控制寄存器计数器控制寄存器(MSB)(LSB)返回返回SETB 88HCLR IT1 TCON:定时/计数器控制寄存器,字节地址88H. IE0:外部中断外部中断0请求标志请求标志。当当CPU检测检测到到P3.2引脚出现中

11、断信号时引脚出现中断信号时,由硬件置由硬件置位位IE0=1,外部中断外部中断0向向CPU请求中断请求中断,当当CPU响应中断时响应中断时,IE0由硬件清零由硬件清零(边沿边沿触发方式触发方式).IT0:外部中断外部中断0触发方式控制位触发方式控制位,IT0=0时为电平触发方式时为电平触发方式,IT0=1时为边沿触发方式时为边沿触发方式.IT1:外部中断外部中断0触发方式控制位触发方式控制位,IT1=0时为电平触发方式时为电平触发方式,IT1=1时为边沿触发方式时为边沿触发方式.IE1:外部中断外部中断1请求标志请求标志位位,CPU检测到有效中断信号时检测到有效中断信号时,由硬件置由硬件置”1”

12、,中断响应进入中中断响应进入中断服务时断服务时,由硬件自动由硬件自动清清”0”(边沿触发方式边沿触发方式).TF0:8051片内定时片内定时/计数器计数器0溢出中断申请标志溢出中断申请标志.TF1: 8051片内定时片内定时/计数器计数器1溢出中断申请标志溢出中断申请标志.(MSB)(LSB)返回返回SCON:SCON:串行口控制寄存器串行口控制寄存器(MSB)(LSB)返回返回TI:8051TI:8051串行口的发送中断标志串行口的发送中断标志. .RI:RI:串行口接收中断标志串行口接收中断标志. .IEIE:中断允许寄存器:中断允许寄存器(A8H)(A8H)(MSB)(LSB)返回返回I

13、PIP:中断优先级寄存器:中断优先级寄存器(MSB)(LSB)返回返回由位操作指令或数据传送指令实现。由位操作指令或数据传送指令实现。例:同时打开外部中断例:同时打开外部中断0和串行口中断,可设置为:和串行口中断,可设置为:法法1:MOV IE,#10010001B 法法2:SETB EA SETB ES SETB EX0 想一想还可以怎样实现?想一想还可以怎样实现? IE的设置方法:的设置方法:举例举例 例:例:令串行口为高优先级中断,外部中断令串行口为高优先级中断,外部中断0为为低优先级中断。低优先级中断。 设置方法:设置方法:法法1: MOV IE,#10010001B ;开中断;开中断

14、 MOV IP,#00010000B ;设优先级;设优先级 法法2: MOV IE,#10010001B SETB PS说明:说明:此时串口的优先级高于外部中断此时串口的优先级高于外部中断0的优先级的优先级 例题: 某软件中对寄存器IE、 IP设置如下: MOV IE, 8FH MOV IP, 06H CPU中断允许情况如何? 各中断源允许情况如何? 允许中断源的中断优先次序如何? 此时该系统中: CPU允许中断; 允许外部中断0、外部中断1、定时器/计数器 0、定时器/计数器1提出的中断申请; 允许中断源的中断优先次序为: 定时器/计数器0外部中断1外部中断0定时器/计数器1。 例例 1 编

15、程设定编程设定TCON为低电平触发的高优先级中为低电平触发的高优先级中断源。断源。分析:分析: 这是典型的中断初始化问题,方法一般如下:这是典型的中断初始化问题,方法一般如下:1)对)对TCON的相关位赋值的相关位赋值2)设定所用中断源的优先级)设定所用中断源的优先级赋值赋值IP3)开中断)开中断置位置位IE解:解: 法法1:CLR IT1 SETB PX1 SETB EX1 SETB EA例例 1 法法2:CLR IT1 MOV IP,#04H MOV IE,#84H2.1.4 中断响应中断响应 无同级或高级中断正在服务无同级或高级中断正在服务 有中断请求信号有中断请求信号 相应的中断源已打

16、开,即相应的中断源已打开,即EA=1,中断源,中断源对应中断允许位也为对应中断允许位也为1。 当前的指令周期已经结束当前的指令周期已经结束 如果当前指令为如果当前指令为RETI或访问或访问IE和和IP的指令,的指令,至少还要再执行完一条指令。至少还要再执行完一条指令。1.1.中断响应条件中断响应条件2.中断响应过程中断响应过程图图2-4中断响应过程中断响应过程将当前寄存器内容压入堆栈,将当前寄存器内容压入堆栈,如如 PUSH ACC在中断服务程序中实现,解决单片在中断服务程序中实现,解决单片机中断后要干什么的问题。机中断后要干什么的问题。把保存在堆栈中的寄存器内容取出,送把保存在堆栈中的寄存器

17、内容取出,送回原来的位置,如回原来的位置,如POP ACC2.1.5中断嵌套中断嵌套答案:答案:CPU要进行分析判断,决定是否响应:要进行分析判断,决定是否响应:情况情况1: 同级或低级中断同级或低级中断源申请中断,源申请中断,CPU不予理睬不予理睬情况情况2: 高级别中断源申高级别中断源申请中断,请中断,CPU就要响就要响应。应。 待执行完高级别中断服务程序后待执行完高级别中断服务程序后再转回低级中断服务程序继续执行,再转回低级中断服务程序继续执行,这就是这就是中断嵌套。中断嵌套。图图2-5 二级中断嵌套的执行过程二级中断嵌套的执行过程 软件构成:软件构成:主程序主程序+中断服务程序中断服务

18、程序 程序编制的关键点:程序编制的关键点: 要对题目要求进行精确分析,明确要对题目要求进行精确分析,明确哪些环节应该安排在主程序中,哪些环哪些环节应该安排在主程序中,哪些环节应该安排在中断服务程序中,再分别节应该安排在中断服务程序中,再分别编制主程序和中断服务程序。编制主程序和中断服务程序。2.2 中断的应用中断的应用2.2.12.2.1中断应用指导中断应用指导 1中断系统的程序编制中断系统的程序编制 1中断系统的程序编制中断系统的程序编制 (1)编制主程序编制主程序p第一部分:主程序初始化第一部分:主程序初始化 功能:功能:p第二部分:须由主程序完成的其它功能。第二部分:须由主程序完成的其它

19、功能。此部分必须编写此部分必须编写用于设置堆栈位置;用于设置堆栈位置;定义触发方式(低电平触发或脉冲下降沿触发)定义触发方式(低电平触发或脉冲下降沿触发)对对IE和和IP赋值等;赋值等;(2)选择中断服务程序的入口地址。选择中断服务程序的入口地址。(3)编制中断服务程序编制中断服务程序。 1中断系统的程序编制中断系统的程序编制即明确中断服务程即明确中断服务程序的起始位置序的起始位置注意注意1:一般要保护断点一般要保护断点, 即保护进入中断时累加器即保护进入中断时累加器A、进、进/借位标借位标志志CY和和SFR的状态,的状态,并在退出中断之前将其恢复;并在退出中断之前将其恢复;注意注意2:必须在

20、中断服务程序中设定是否允许再次中断必须在中断服务程序中设定是否允许再次中断(即中断嵌(即中断嵌套),由用户对套),由用户对EX0(或(或EX1)位置位或清)位置位或清0决定。决定。说明:说明:一般在中断服务程序中涉及到关键数据一般在中断服务程序中涉及到关键数据的设置时应关的设置时应关 中断,即禁止嵌套。中断,即禁止嵌套。2中断应用举例中断应用举例三相交流电的故障检测电路三相交流电的故障检测电路 例例2 图图2-6是三相交流电的故障检测电路。当是三相交流电的故障检测电路。当A相缺电时,相缺电时,发光二极管发光二极管LEDA 亮;当亮;当B相缺电时,发光二极管相缺电时,发光二极管LEDB亮;亮;当

21、当C相缺电时,发光二极管相缺电时,发光二极管LEDC亮。亮。硬件特点:硬件特点: 外部中断外部中断 由由3个交流个交流继电器的触点和一个或非门扩继电器的触点和一个或非门扩展而成;展而成; 3个个220V的交流继电器的的交流继电器的线圈线圈ZA、ZB、ZC分别接在分别接在A、B、C各相和交流地之间。各相和交流地之间。图图2-6 三相交流电的故障检测电路三相交流电的故障检测电路(1)检测原理)检测原理三相电正常情况下三相电正常情况下3个线圈同时得电个线圈同时得电3个常开触点全都闭合个常开触点全都闭合0001不申请外部中断不申请外部中断故障情况下(假设故障情况下(假设A相掉电)相掉电)(1)检测原理

22、)检测原理线圈线圈ZA失电失电常开触点常开触点ZA断开断开0申请外部中断,在外部中断服务申请外部中断,在外部中断服务程序中读取程序中读取P1.0引脚状态引脚状态0011产生产生A相掉电状态信号送相掉电状态信号送入入P1.01在中断服务程序中在中断服务程序中对该引脚输出对该引脚输出1A相故障指示灯亮相故障指示灯亮线圈线圈ZB、ZC有电有电常开触点常开触点ZB、ZC闭合闭合B、C相故障指示灯不亮相故障指示灯不亮(2)软件设计软件设计 ORG 0000HLJMP MAIN;跳至主程序;跳至主程序ORG 0013H;的中断入口地址;的中断入口地址LJMP TEST;转至中断服务程序;转至中断服务程序O

23、RG 0100HMAIN:MOV P1,#15H;P1.0、P1.2、P1.4作输入;作输入;P1.1、P1.3、P1.5输出输出0SETB EX1;开中断;开中断 CLR IT1 ;为低电平触发;为低电平触发SETB EA;CPU开中断开中断SJMP $;等待中断;等待中断TEST:JNB P1.0,LB;A相正常,转测相正常,转测B相相SETB P1.1;A相掉电,点亮相掉电,点亮LEDALB:JNB P1.2,LC;B相正常,转测相正常,转测C相相SETB P1.3;B相掉电,点亮相掉电,点亮LEDBLC:JNB P1.4,LL;C相正常,返回相正常,返回SETB P1.5;C相掉电,点

24、亮相掉电,点亮LEDCLL: RETI END2.2.2 2.2.2 课题与实训课题与实训7 7 中断控制流水灯中断控制流水灯一一.实训目的实训目的 学习外部中断的基本用法学习外部中断的基本用法 掌握中断处理程序的编程方法掌握中断处理程序的编程方法二二.课题要求课题要求 在程序正常运行时在程序正常运行时P1口的口的8个个LED灯作单灯左移灯作单灯左移8次而后次而后单灯右移单灯右移7次,如此循环;中断时(即按键按下)则次,如此循环;中断时(即按键按下)则P1口的口的8个个LED闪烁闪烁3次(即全亮全灭次(即全亮全灭3次)次)。三三.背景知识背景知识 1中断程序的设计主要涉及开中断、设定优先级,外

25、中断还中断程序的设计主要涉及开中断、设定优先级,外中断还 涉及触发方式的设定。涉及触发方式的设定。 2在软件设计中,首先要对主程序和中断服务程序所完成的在软件设计中,首先要对主程序和中断服务程序所完成的 任务进行划分。根据该课题提出的要求,在主程序中应该任务进行划分。根据该课题提出的要求,在主程序中应该 完成的任务是完成的任务是8个个LED循环左移右移;在中断服务程序中循环左移右移;在中断服务程序中 应该完成的功能是应该完成的功能是8个个LED闪烁闪烁3次。次。四四.硬件电路硬件电路 硬件结构如图硬件结构如图,12引脚的按键点动表示有中断请求发出。引脚的按键点动表示有中断请求发出。 图图2-7

26、 实训实训7电路电路 五五.参考程序参考程序 ORG 0000H LJMP START ORG 0003H LJMP INT0 ORG 0100H START: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,

27、L2 ;判断是否左移;判断是否左移8次次 MOV R0,#7 ;移动;移动7次次L3: RRC A ;带进位位循环右移;带进位位循环右移 MOV P1,A ;送;送P1口口 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个个

28、LED全亮全亮 MOV R2,#6 ;闪烁;闪烁3次(全亮全灭各次(全亮全灭各3次)次) L4:MOV P1,A ;A值送出值送出 LCALL DELAY ;延时;延时0.2秒秒 CPL A ;A值取反值取反 DJNZ R2,L4 ;闪烁;闪烁3次?次? POP ACC ;恢复保护的;恢复保护的A值值 POP PSW ;恢复保护的;恢复保护的PSW值值 RETI ;返回主程序;返回主程序 END 六六.总结与提高总结与提高 1. 总结:中断服务程序与子程序对比总结:中断服务程序与子程序对比共同点:格式相近,执行过程大体相同共同点:格式相近,执行过程大体相同子程序子程序 执行时刻是确定执行时刻是

29、确定的,的,CPU只要执行只要执行LCALL、ACALL等等调用指令就会转去调用指令就会转去执行子程序执行子程序中断服务程序中断服务程序 中断申请往往是中断申请往往是随机发生的。中断服随机发生的。中断服务程序的发生可能是务程序的发生可能是在开中断后的任意时在开中断后的任意时刻,也可能不发生,刻,也可能不发生,2提高提高 编写一个由两个中断(外部中断编写一个由两个中断(外部中断0、外部中断、外部中断1)控制的流水灯程序。控制的流水灯程序。要求:要求: 主程序不变,中断主程序不变,中断0可使可使P1.0P1.3的的LED闪闪烁烁5次,中断次,中断1可使可使P1.4P1.7的的LED闪烁闪烁5次,设

30、次,设定中断定中断1的优先级比中断的优先级比中断0高。高。2.3定时计数器定时计数器 1. 日常生活中定时、计数的例子:日常生活中定时、计数的例子: 如闹钟、画如闹钟、画“正正”统计选票、家用水表对水量的计数。统计选票、家用水表对水量的计数。 2 . 单片机应用系统中定时计数的需求:单片机应用系统中定时计数的需求: 如用单片机控制的打铃器、空调的定时开关、啤酒自如用单片机控制的打铃器、空调的定时开关、啤酒自动生产线上对酒瓶的计数装置等。动生产线上对酒瓶的计数装置等。 3 . 80C51单片机片内的定时单片机片内的定时/计数器:计数器: 两个位可编程的定时计数器:两个位可编程的定时计数器:T0和

31、和T1,都能定,都能定时和对外部事件进行计数。时和对外部事件进行计数。 此外,此外,T1还可以作为串行接口的波特率发生器。还可以作为串行接口的波特率发生器。 2.3.12.3.1定时计数器的结构定时计数器的结构.定时和计数的原理定时和计数的原理(1)计数)计数 定时计数器的实质是加计数器(位),定时计数器的实质是加计数器(位),其原理类似于古代用来计时的水钟:其原理类似于古代用来计时的水钟:假设计满一小时需要假设计满一小时需要100,000,000滴,这称为水钟的计数容量滴,这称为水钟的计数容量16位定时位定时/计数器的计数容量是计数器的计数容量是65536单片机是对脉冲个数计数,计数器每单片

32、机是对脉冲个数计数,计数器每接收到一个脉冲,计数值加接收到一个脉冲,计数值加1,当接收满当接收满65535个脉冲后,再个脉冲后,再来一个脉冲,计数值清来一个脉冲,计数值清0表明表明这一轮计数结束,同时将标这一轮计数结束,同时将标志位志位TF0或或TF1置置1。 (2)定时)定时 单片机内部的计数器用作定时器时,是对标准的单片机内部的计数器用作定时器时,是对标准的时钟进行了计数,每来一个时钟脉冲,计数器加时钟进行了计数,每来一个时钟脉冲,计数器加1,只要保证计数脉冲的间隔相等,则计数值就代表了只要保证计数脉冲的间隔相等,则计数值就代表了时间的流逝。时间的流逝。单片机中的定时器和计数器其实是一个器

33、件:单片机中的定时器和计数器其实是一个器件:计数器:计数器:是对外部发生的事件进行计数,是对外部发生的事件进行计数,定时器:定时器:是对单片机内部的标准时钟脉冲进行是对单片机内部的标准时钟脉冲进行计数。计数。 见图见图2-9 ,它是由单片机的晶振经过,它是由单片机的晶振经过12分频后得到。由于分频后得到。由于晶振的频率很准,所以这个时钟脉冲的时间间隔也很准。不晶振的频率很准,所以这个时钟脉冲的时间间隔也很准。不难算出,当单片机采用难算出,当单片机采用12的晶振时,它提供给计数器的晶振时,它提供给计数器的脉冲频率是,脉冲周期就是的脉冲频率是,脉冲周期就是微秒。微秒。图图2-9 定时定时/计数器计

34、数器T0的结构示意图的结构示意图 单片机内部的单片机内部的16位定时计数器由高位定时计数器由高8位和低位和低8位位两个寄存器组成:两个寄存器组成:l T0由由TH0和和TL0组成,组成,l T1由由TH1和和TL1组成,组成, 定时计数器的计数值就存放在这里面。定时定时计数器的计数值就存放在这里面。定时/计计数器数器T1的结构与的结构与T0相同。相同。图图2-9 定时定时/计数器计数器T0的结构示意图的结构示意图 2定时定时/计数器的结构计数器的结构 再以水钟为例,当水不断落下,下面容器中的水不再以水钟为例,当水不断落下,下面容器中的水不断变多,最终总有一滴水使得容器完全充满。这时如断变多,最

35、终总有一滴水使得容器完全充满。这时如果再有一滴水落下,就会发生果再有一滴水落下,就会发生“溢出溢出”。与此类似,。与此类似,16位定时计数器计满位定时计数器计满65536个脉冲时,也会发生溢个脉冲时,也会发生溢出。出。 定时计数器溢出后标志位定时计数器溢出后标志位TF0(或(或TF1)由)由0变变1,由此能够引发定时中断(在中断定时方式下),这就由此能够引发定时中断(在中断定时方式下),这就像定时的时间一到,闹钟就会响一样像定时的时间一到,闹钟就会响一样。 如果采用如果采用12的晶振,对应的脉冲周期是的晶振,对应的脉冲周期是微秒,计满微秒,计满65536个脉冲所对应的时间就是个脉冲所对应的时间

36、就是65.536ms。 3定时定时/计数值的设置计数值的设置再回到水钟的例子上去:再回到水钟的例子上去: 刚才假设下面容器滴入刚才假设下面容器滴入100,000,000滴水才会滴水才会满,现在我们在开始滴水之前先放入一勺水,这样问满,现在我们在开始滴水之前先放入一勺水,这样问题就解决了。题就解决了。 计数器的道理是一样的,只要用预置数的方法计数器的道理是一样的,只要用预置数的方法先在计数容器内存入一个初值先在计数容器内存入一个初值 (通常称为时间常(通常称为时间常数),数),如我们要计如我们要计100,那就存入,那就存入65436,只要再来,只要再来100个脉冲,就刚好会溢出,引发中断。个脉冲

37、,就刚好会溢出,引发中断。计数器初值的设置计数器初值的设置 在主频为在主频为12MHz的情况下,每个时钟脉冲是的情况下,每个时钟脉冲是1微秒,微秒,则计满则计满65536个脉冲需个脉冲需65.536毫秒,如要定时毫秒,如要定时10毫秒则存毫秒则存入初值入初值55536,(,(10毫秒是毫秒是10000微秒,需计数微秒,需计数10000个个脉冲)。可见,脉冲)。可见, 定时器的定时时间长短与系统时钟和定时器定时器的定时时间长短与系统时钟和定时器初值有关初值有关。 说明说明 1. 当定时计数器用作计数器时,通过引脚当定时计数器用作计数器时,通过引脚P3.4(P3.5)对外部输入脉冲计数。对外部输入

38、脉冲计数。 2 . 定时计数器定时计数器T0(T1)启动运行后,会按设定的工作启动运行后,会按设定的工作方式独立进行计数,不再占用方式独立进行计数,不再占用CPU时间。当计数器时间。当计数器T0(T1)计满溢出时,计满溢出时,TF0(TF1)置置1,向,向CPU发出中断请求信号。发出中断请求信号。定时器初值的设置定时器初值的设置2-10 定时定时/计数器的控制关系计数器的控制关系 2.3.22.3.2定时计数器的控制定时计数器的控制 在单片机中有两个特殊功能寄存器与定时在单片机中有两个特殊功能寄存器与定时/计数有关,计数有关,它们就是它们就是TMOD和和TCON,定时计数器,定时计数器T0、T

39、1就由它们来就由它们来控制:控制: TMOD用于设置工作方式;用于设置工作方式; TCON用于控制其启动、停止和中断申请。用于控制其启动、停止和中断申请。 1.定时器工作方式寄存器定时器工作方式寄存器TMOD TMOD用于设置用于设置T0和和T1的工作方式,字节地址为的工作方式,字节地址为89H,不能按位寻址。其格式和各位的含义如下:不能按位寻址。其格式和各位的含义如下: 2定时定时/计数器控制寄存器计数器控制寄存器TCON TCON的低的低4位用于控制外部中断,高位用于控制外部中断,高4位用于位用于控制定时控制定时/计数器的启动和中断申请。计数器的启动和中断申请。l TF0(或(或TF1)

40、当计数溢出时,当计数溢出时,TF0(或(或TF1)会自动由)会自动由0变变1,告诉我们计数已满,我们可以通过查询告诉我们计数已满,我们可以通过查询TF0(或或TF1)位的状态来判断计时时间是否已到;位的状态来判断计时时间是否已到; 如果采用定时中断方式,则如果采用定时中断方式,则 TF0(或(或TF1)由由0变变1时,能自动引发中断。时,能自动引发中断。l TR0(或或TR1) 由图由图2-11 可知,只有可知,只有当当TR0(或或TR1)为为1时,开时,开关关1才能闭合,计数脉冲才才能闭合,计数脉冲才能进入计数器,故能进入计数器,故TR0(或或TR1)称为运行控制位,称为运行控制位,可可用指

41、令用指令“SETB TR0(或或TR1)”来置位以启动定时来置位以启动定时/计数器运行;计数器运行;或用指令或用指令“CLR TR0(或或TR1)”来关来关闭定时闭定时/计数器的工作,计数器的工作,一一切全靠编程人员控制。切全靠编程人员控制。图2-11 定时/计数器T0方式0的逻辑结构示意图 2.3.3 2.3.3 定时定时/ /计数器的工作方式计数器的工作方式 80C51单片机定时单片机定时/计数器计数器T0有有4种工作方式(方式种工作方式(方式0、1、2、3),),T1有有3种工作方式(方式种工作方式(方式0、1、2)。)。 1. 方式方式0 当当TMOD的的M1M0=00时,定时时,定时

42、/计数器工作于方式计数器工作于方式0。方式方式0为为13位定时位定时/计数器,由计数器,由TL0的低的低5位和位和TH0(8位)共同位)共同完成计数功能(完成计数功能(TL0的高的高3位可忽略)。位可忽略)。 当当TL0的低的低5位溢出时,向位溢出时,向TH0产生进位;产生进位;TH0溢出时,将溢出时,将定时器中断请求标志位定时器中断请求标志位TF0置置1,可申请中断,也可对,可申请中断,也可对TF0进进行查询。行查询。 图图2-11 定时定时/计数器计数器T0方式方式0的逻辑结构示意图的逻辑结构示意图 2. 方式方式1 当当M1M0=01时,定时时,定时/计数器工作于方式计数器工作于方式1。

43、方式。方式1的计的计数位数是数位数是16位,由位,由TL0作为低作为低8位,位,TH0作为高作为高8位共同构位共同构成。其余操作同方式成。其余操作同方式0。图图2-12 定时定时/计数器计数器T0方式方式1的逻辑结构示意图的逻辑结构示意图3. 方式方式2 当当M1M0=10时,定时时,定时/计数器工作于方式计数器工作于方式2。这是自动重。这是自动重装初值的装初值的8位计数方式,它省去了方式位计数方式,它省去了方式0和方式和方式1在多次重复在多次重复计数状态下必须重新设定计数初值的麻烦,但是却付出了计数状态下必须重新设定计数初值的麻烦,但是却付出了减小定时时间的代价。减小定时时间的代价。图图2-

44、13 定时定时/计数器计数器T0方式方式2的逻辑结构示意图的逻辑结构示意图特别适合于制作比较精特别适合于制作比较精确的脉冲信号发生器。确的脉冲信号发生器。2. 方式方式3 方式方式3只适用于定时只适用于定时/计数器计数器T0。当。当T1被设定为方式被设定为方式3状态时,状态时,将停止计数。将停止计数。 当当M1M0=11时,时,T0工作于方式工作于方式3。 此时此时TL0和和TH0作为两个相互独立的作为两个相互独立的8位定时位定时/计数器使用。计数器使用。TL0既可定时又可计数,它使用既可定时又可计数,它使用T0的各控制位、引脚和中断源,的各控制位、引脚和中断源,即即C/、GATE、TR0、T

45、F0、T0(P3.4引脚)、(引脚)、(P3.2引脚);引脚);TH0此时只能用作内部定时功能,它借用了定时此时只能用作内部定时功能,它借用了定时/计数器计数器T1的控的控制位制位TR1和和T1的中断标志位的中断标志位TF1,其启动和停止只受,其启动和停止只受TR1控制。控制。图图2-14 定时定时/计数器计数器T0方式方式3的逻辑结构示意图的逻辑结构示意图 定时器定时器T1T1无工作方式无工作方式3 3,当定时器,当定时器T0T0工作在方式工作在方式3 3时,定时器时,定时器T1T1可设置为方式可设置为方式0 0、方式、方式1 1和方式和方式2 2。 2.2.1应用指导应用指导 1定时定时/

46、计数器的定时计数器的定时/计数范围计数范围 定时定时/计数器工作于不同方式下的位数不同,它所具有计数器工作于不同方式下的位数不同,它所具有的计数范围也不一样:的计数范围也不一样:l 工作方式工作方式0:13位定时位定时/计数方式,因此,最多可以计数方式,因此,最多可以计到计到213,也就是,也就是8192次。次。l 工作方式工作方式1:16位定时位定时/计数方式,因此,最多可计数方式,因此,最多可 以计到以计到216,也就是,也就是65536次。次。l 工作方式工作方式2和工作方式和工作方式3:都是都是8位定时位定时/计数方计数方 式,因此,最多可以计到式,因此,最多可以计到2 8,也就是,也

47、就是256次。次。 如果我们需要超过计数器计数范围的定时或计数功能,应该怎样做?如果我们需要超过计数器计数范围的定时或计数功能,应该怎样做?2.42.4定时定时/ /计数器应用与训练计数器应用与训练 2时间常数初值的计算时间常数初值的计算 定时定时/计数器只要预设一个时间常数初值,就可以完成不计数器只要预设一个时间常数初值,就可以完成不超过其计数范围的任意大小的计数。算法如下:超过其计数范围的任意大小的计数。算法如下:u 定时时间常数初值定时时间常数初值X: 方式方式0 X=8192-t(fosc/12) 方式方式1 X=65536-t(fosc/12) 方式方式2、方式、方式3 X=256-

48、t(fosc/12) 其中其中t是需要定时的时间,单位是微秒;是需要定时的时间,单位是微秒;fosc是晶振是晶振u 计数时间常数计数时间常数X: 方式方式0 X=8192-S 方式方式1 X=65536-S 方式方式2、方式、方式3 X=256-S 说明:式中说明:式中S是需要计数的次数是需要计数的次数 假设流水线上一个包装是假设流水线上一个包装是12盒,要求每到盒,要求每到12盒就产生一盒就产生一个动作,用单片机的工作方式个动作,用单片机的工作方式0来控制,应当预置的计数初来控制,应当预置的计数初值是多少呢?值是多少呢? 对了,就是对了,就是8192-12=8180。3定时定时/计数器的初始

49、化计数器的初始化对对80C51单片机的定时单片机的定时/计数器编程的初始化方法:计数器编程的初始化方法: 对对TMOD赋值,以确定赋值,以确定T0和和T1的工作方式;的工作方式; 计算时间常数初值,并将其写入计算时间常数初值,并将其写入TH0、TL0或或TH1、 TL1; 采用中断定时方式时,需对采用中断定时方式时,需对IE赋值开中断;赋值开中断; 置位置位TR0或或TR1,启动定时,启动定时/计数器。计数器。 2.2.2 2.2.2 基本训练基本训练初始化训练初始化训练 例例3:某牛奶生产线上一个包装是某牛奶生产线上一个包装是12盒,要求盒,要求每生产每生产12盒就执行装箱操作,用盒就执行装

50、箱操作,用80C51单片机来单片机来控制,请编写初始化程序。控制,请编写初始化程序。 1思路与计算:思路与计算:要确定定时器(要确定定时器(T0 或或T1),),选择其工作方式。我们以选择其工作方式。我们以T0的工作方式的工作方式2为例,计为例,计算时间常数并赋值给算时间常数并赋值给TH0、TL0。 X=256-S=256-12=244=0F4H 2 2初始化程序:初始化程序: MOV TMODMOV TMOD,#06H #06H ;T0T0作计数器,工作于方式作计数器,工作于方式2 2 MOV TH0 MOV TH0,#0F4H #0F4H ;装入时间常数初值;装入时间常数初值 MOV TL

51、0MOV TL0,#0F4H #0F4H ;自动重装时间常数;自动重装时间常数 MOV IE MOV IE ,#00H #00H ;用查询方式确定计满;用查询方式确定计满1212盒?盒?(或(或MOV IE MOV IE ,#82H#82H);使用);使用T0T0中断,计满中断,计满1212盒后,盒后, ;自动申请中断;自动申请中断 SETB TR0 SETB TR0 ;启动;启动T0T0波特率发生器波特率发生器 3 3总结:总结:对计数过程是否结束有查询和中断两对计数过程是否结束有查询和中断两种方法,要合理选择,并在程序设计中正确体现。种方法,要合理选择,并在程序设计中正确体现。 2.2.3

52、2.2.3应用实例应用实例 1 定时定时/计数器用于外部脉冲宽度的测量计数器用于外部脉冲宽度的测量 (1)测量原理)测量原理 可以利用定时计数器方式寄存器可以利用定时计数器方式寄存器TMOD中的门中的门控位控位GATE与与 引脚配合使用,控制定时计数器的引脚配合使用,控制定时计数器的启动与停止:启动与停止: 当当GATE1时,要求时,要求TR1l,且,且 为高电平,为高电平,才能启动定时器才能启动定时器T1计数工作;如果计数工作;如果 出现低电平,则出现低电平,则T1停止计数;停止计数; 当当GATE=0时,只要时,只要TR11就可以启动定时器,就可以启动定时器,而与而与 的输入状态无关。的输

53、入状态无关。 可以利用定时计数器方式寄存器可以利用定时计数器方式寄存器TMOD中的门中的门控位控位GATE与与 引脚配合使用,控制定时计数器的引脚配合使用,控制定时计数器的启动与停止:启动与停止: 当当GATE1时时,要求,要求TR1l,且,且 为高电平,为高电平,才能启动定时器才能启动定时器T1计数工作;如果计数工作;如果 出现低电平,则出现低电平,则T1停止计数;停止计数; 当当GATE=0时,时,只要只要TR11就可以启动定时器,就可以启动定时器,而与而与 的输入状态无关。的输入状态无关。 利用上述特点,将被测脉利用上述特点,将被测脉冲信号从(冲信号从(P3.3)引入,在)引入,在T1的

54、程序初始化中令的程序初始化中令GATE1,同时同时“SETB TR1”,这样脉,这样脉冲信号的上升沿就能启动冲信号的上升沿就能启动T1计计数,脉冲信号下降沿能使数,脉冲信号下降沿能使T1停停止计数。利用定时器止计数。利用定时器T1的计数的计数值值m乘以机器周期就可以得到乘以机器周期就可以得到被测脉冲信号的宽度被测脉冲信号的宽度TW。(2)硬件电路)硬件电路 硬件电路简图如图硬件电路简图如图2-15。 (3)程序设计)程序设计 利用利用80C51的内部的内部RAM30H、31H单元保存被测脉冲宽单元保存被测脉冲宽度对应的计数值。度对应的计数值。 参考程序如下:参考程序如下: ORG 0000H

55、AJMP MAIN ORG 0100H MAIN:MOV SP,#60H ;设堆栈指针;设堆栈指针 MOV TMOD,#90H;设置控制字,;设置控制字,T1工作于方式工作于方式 ; 1,GATE=1 MOV TH1,#00H ;设定计数初值为;设定计数初值为00H MOV TL1 MOV TL1,#00H#00HL1L1: JB P3.3JB P3.3,L1 L1 ;等待输入变为低电平;等待输入变为低电平 SETB TR1 SETB TR1 ;预置;预置TR1=1TR1=1,准备启动,准备启动T1T1L2L2: JNB P3.3JNB P3.3,L2 L2 ;等待上升沿,以便开始计数;等待上

56、升沿,以便开始计数L3L3: JB P3.3JB P3.3,L3 L3 ;是高电平则计数继续;是高电平则计数继续 CLR TR1 CLR TR1 ;低电平则停止计数;低电平则停止计数 MOV AMOV A,TL1TL1 ;读低位计数值;读低位计数值 MOV 30HMOV 30H,A A ;低位计数值存于;低位计数值存于30H30H MOV A MOV A,TH1TH1 ;读高位计数值;读高位计数值 MOV 31HMOV 31H,A A ;高位计数值存于;高位计数值存于31H31H END END (4)总结与思考)总结与思考 定时定时/计数器还可用于测量脉冲信号的频率、周期等。本计数器还可用于

57、测量脉冲信号的频率、周期等。本实例是利用定时实例是利用定时/计数器的门控位(计数器的门控位(GATE)测量脉冲宽度。但)测量脉冲宽度。但要注意,在晶振要注意,在晶振12MHz的情况下,被测脉冲宽度范围最大为的情况下,被测脉冲宽度范围最大为655351s=65.536ms。 ,如果要测量脉冲信号的周期,该如何去做?,如果要测量脉冲信号的周期,该如何去做? 2计数器用于绕线机的控制计数器用于绕线机的控制 绕线机常用于对电机或变压器的绕组进行绕制,图绕线机常用于对电机或变压器的绕组进行绕制,图2-16是是绕线机的控制电路。当按下工作按钮以后,机器启动,绕线机绕线机的控制电路。当按下工作按钮以后,机器

58、启动,绕线机在直流电机和减速齿轮的带动下开始工作。当绕线架上的线圈在直流电机和减速齿轮的带动下开始工作。当绕线架上的线圈绕到规定的圈数时,绕线机会自动停止绕线。如果再次按下工绕到规定的圈数时,绕线机会自动停止绕线。如果再次按下工作按钮,绕线机会重复以上过程。作按钮,绕线机会重复以上过程。图图2-16 绕线机的控制电路绕线机的控制电路控制说明:1软件控制P1.0=0时,绕线机开始绕线;P1.0=1时,绕线机不绕线。 2绕线机每绕一圈,绕线机脉冲产生电路就产生一个脉冲信号。 (1)工作原理)工作原理 由于单片机复位后由于单片机复位后P1 口的输出状态全部为口的输出状态全部为1,所以,所以系统系统上

59、电后上电后,P1.0输出高电平输出高电平“1”绕线机不工作。绕线机不工作。 当按下工作按钮以后,当按下工作按钮以后,P1.1输入低电平输入低电平“0”,当程序检,当程序检测到测到P1.1=0时,在程序指令的控制下从时,在程序指令的控制下从P1.0输出低电平输出低电平“0”。绕线机开始绕线。绕线机每绕一圈,定时绕线机开始绕线。绕线机每绕一圈,定时/计数器计数器T1的输入引的输入引脚上就会产生一个负跳变的输入脉冲。因此,只要用定时脚上就会产生一个负跳变的输入脉冲。因此,只要用定时/计计数器数器T1的计数功能控制好输入脉冲的个数,就等于控制了绕的计数功能控制好输入脉冲的个数,就等于控制了绕线机的绕线

60、圈数。线机的绕线圈数。 当绕线机缠绕到指定的圈数时,当绕线机缠绕到指定的圈数时,定时定时/计数器计数器T1引发计数引发计数中断,在程序指令的控制下,中断,在程序指令的控制下,P1.0将输出的高电平将输出的高电平“1”,使,使电机停转,制动器恢复制动,于是系统回到最初的停机状态。电机停转,制动器恢复制动,于是系统回到最初的停机状态。 我们假设绕线架的规定匝数是我们假设绕线架的规定匝数是5000圈,为控制这个圈数,圈,为控制这个圈数,可以设定定时可以设定定时/计数器计数器T1用作计数器且工作在方式用作计数器且工作在方式1,于是确,于是确定其计数初值为:定其计数初值为: 初值初值=65536-500

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论