51系列单片机定时器的实用方法

发布者:好的哎最新更新时间:2023-09-12 来源: elecfans关键字:51系列  单片机  定时器 手机看文章 扫描二维码
随时随地手机看文章

定时/计数器 0 和定时/计数器1都有4种定时模式。

16位定时器对内部机器周期进行技术,机器周期加1,定时器值加1,1MHZ模式下,一个机器周期为1us 。


定时器工作模式寄存器TMOD,不可位寻址,需整体赋值,高4位用于定时器1,第四位用于定时器0。

C/T:为定时器功能选择位,C/T=0对机器周期计数,C/T=1,对外部脉冲计数。

GATE:门控位,GATE=0,软件置位TRn即可启动计时器,GATE=1需外部中断引脚为高电平时才能软件置位TRn启动计时器,一般取GATE=0。

定时器控制寄存器TCON:

TFn:Tn溢出标志位,当定时器溢出时,硬件置位TFn,中断使能的情况下,申请中断,CPU响应中断后,硬件自动清除TFn。中断屏蔽时,该位一般作为软件查询标志,由于不进入中断程序,硬件不会自动清除标志位,可软件清除。

TRn:计时器启动控制位,软件置位TRn即可启动定时器,软件清除TRn关闭标志位。

IEn:外部中断请求标志位。

ITn:外部中断出发模式控制位,ITn=0为低电平触发,ITn=1为下降沿触发。

中断允许控制寄存器IE

EA(IE.7):全局中断控制位。EA=1开全局中断,EA=0关闭全局中断。

IE.6无意义。

ETn:定时器中断使能控制位。置位允许中断,清除禁止中断。

ES:串行接收/发送中断控制位,置位允许中断。

EXn:外部中断使能控制位。置1允许,清0禁止。

中断优先级控制寄存器IP,复位后为00H

IP.6,IP.7保留,无意义。

PT2:定时器2中断优先级控制,置1设为高优先级,清0置位低优先级。

PS:串行中断优先级控制位。

PT1/0:定时器1/0优先级控制位,置1高,清0低。

PXn:外部中断优先级控制位。

当有同级中断同时响应,按IE0->TF0->IE1->TF1-IE0->RI+TI->TF2顺序依次响应。

定时器模式0的使用 TMOD&=0xf0/TMOD&=0x0f

TL0高3位不用,低5位溢出时,直接向TH0进位。

通过设置TH0和TL0初值(0~8191),使计数器从初值开始加1,溢出后申请中断,溢出后需重新设置初值,否则将从0开始加1计数。

T=(模值-初值)*机器周期,初值为8191位技术最小值1,初值为0为计数最大值8191。

定时器模式1(TMOD=0xf1/TMOD=0x1f)

模式1和模式0功能相同,但模式1位16位。

定时器模式2(TMOD=0x2f/0xf2)

模式2构成自动重装的8位定时器,计数器的范围为0~256

TH作为初值寄存器,TL作为计数寄存器。TL溢出时,置位中断标志位,并且把TH中的值自动装入TL。

定时器模式3,模式3只适用于定时器0

模式3时定时器构成2个独立的8位计数器。

此模式下,TL0和模式0,1状态一样可以做计数和定时。TH0只能用于定时不能用于计数,并占用T1的资源TF1和TR1。

定时器2的使用

在AT89S52,AT89S53和AT89S8253中增加了定时器2的使用。

T2和TH2,TL2,T2CON,T2MOD,捕捉重装寄存器RCAP2L和RCAP2H

T2控制寄存器

TF2:溢出中断标志位。

RCLK:串行口接收时钟选择位,用它可以选择T1或T2作为串行口发送时钟。RCLK=1,T2作为串行口时钟,RCLK=1,T1作为串口发送时钟。

EXEN2:T2外部允许控制位,EXEN2=1,若T2未用于波特率发生器,T2EX引脚出现负跳变时将导致T2发生捕获或充装载。并置位EXF2标志位请求中断。该位清0,外部引脚无效。

C/T2:定时或技术方式选择位。

CP/RL2:T2捕获或重装控制位,该位为1,选择捕获功能,此时若EXEN2=1,T2EN引脚出现负跳变将发生捕获操作,即把T2H和T2L内容传送给RCAP2H和RCAP2L。该位为0,选择重装功能,此时若T2溢出,或EXEN2=1且T2EN引脚上出现负跳变,都会把RCAP2H和RCAP2L的值送入T2H和T2L。

T2模式控制位

T2OE:T2输出允许控制位。T2OE=1允许时钟输出到T2/P1.0引脚,T2OE=0禁止输出。

DECN:加/减计数控制位,该位为1,允许T2作为加减计数器使用,方向由T2EN控制,T2EN为1,进行加计数,T2EN位0进行减计数。该位置0,T2自动向上计数。

T2工作模式的选择由RCLK,TCLK,CP/RL2,T2OE,CT2,和TR2来决定。


关键字:51系列  单片机  定时器 引用地址:51系列单片机定时器的实用方法

上一篇:基于单片机DHT22温湿度LabView上位机监控系统设计
下一篇:基于STC12C5A60S2的汽车防疲劳驾驶系统研究

推荐阅读最新更新时间:2024-11-11 16:10

51单片机实验6:独立按键
开发板独立按键模块电路图如下: 目的:通过控制独立按键K1,使第一盏led发光/关闭 P3口位准双向io口,当K1按下时,P3^1口接地,电平为0。 当K1按下时,由于独立键盘的物理特性以及按下过程等因素的干扰,P3^1口电平变化与理想情况并不相符,出现“抖动”现象,如下图所示: 为消除按下抖动造成的影响,在led状态改变之前,加入延时函数,判断独立按键K1是否真正被按下。 难点:等待按键释放语句:while(!k1)的作用。 释放抖动造成的影响,在下一个keypros()函数周期中可以被解决。 #include reg52.h #define uc unsigned char sbit led=P2
[单片机]
<font color='red'>51</font><font color='red'>单片机</font>实验6:独立按键
51单片机的串口结构
说明 目前主要封装了串口1的实例,采用可移植数据类型,可以同步移植到STM32、STM8等单片机; 需自行实现串口接收回调函数内容; 头文件 #ifndef __SERIAL_H__ #define __SERIAL_H__ #include reg52.h #ifndef uint8_t typedef unsigned char uint8_t; #endif #ifndef uint16_t typedef unsigned int uint16_t; #endif #ifndef uint32_t typedef unsigned long uint32_t; #endif /* 晶振频率 */ #
[单片机]
详解avr单片机的io原理及作用
为搞清IO结构,首先看看上拉和下拉电阻的作用。 一、上拉电阻 上拉就是将不确定的信号通过一个电阻钳位在高电平!电阻同时起限流作用!下拉同理! 上拉电阻是用来解决总线驱动能力不足时提供电流的。一般说法是拉电流,下拉电阻是用来吸收电流。 1、在用TTL电路驱动CMOS电路时,若TTL的高电平低于CMOS要求的高电平的门限值(1,TTL电平: 输出高电平 2.4V,输出低电平 0.4V。在室温下,一般输出高电平是3.5V,输出低电平 是0.2V。最小输入高电平和低电平:输入高电平 =2.0V,输入低电平 =0.8V,噪声容限是 0.4V。 2,CMOS电平: 1逻辑电平电压接近于电源电压,0逻辑电平接近于0V。而且具有很
[单片机]
详解avr<font color='red'>单片机</font>的io原理及作用
MSP340单片机IAR-简易交通灯系统Proteus仿真程序
单片机源程序如下: #include msp430.h void delay_1s(void); void seg7s(unsigned char data_seg7); void seg7s2(unsigned char data_seg7); const unsigned char decoder_seg7 ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void main(void) { WDTCTL=WDTPW+WDTHOLD; P1SEL=0x00; P1SEL2=0x00; P1DIR=0xff; P2SEL=0X00;
[单片机]
MSP340<font color='red'>单片机</font>IAR-简易交通灯系统Proteus仿真程序
飞思卡尔单片机DZ60---SCI(中断接收)
#include hidef.h /* for EnableInterrupts macro */ #include derivative.h /* include peripheral declarations */ #define LED_D1 PTDD_PTDD0 #define LED_D1_DIR PTDDD_PTDDD0 #define LED_ON 0 #define LED_OFF 1 unsigned char SCANF_SEND_STRINGS = HELLO MCU WORLD ; unsigned char *pSendString = SCANF_SEND_STRINGS; un
[单片机]
探索STC12C5A60S2定时器
  STC12C5A60S2单片机集成了共4个16位定时器,两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器 做串行通讯的波特率发生器,再加上2路PCA模块可再实现2个16位定时器;   1. 基本特性   STC12C5A60S2单片机集成了两个16位定时/计数器。   1)寄存器   1.1)TMOD 定时器工作方式控制寄存器,包括13位寄存器、16位寄存器、8位寄存器等;   1.2)TCON 定时器控制寄存器,主要包括定时器启动控制位等;   1.3)AUXR 辅助寄存器,用以设置分频;默认12分频   1.4)TH0/1:定时器高8位寄存器   1.5)TL0/1:定时器
[单片机]
探索STC12C5A60S2<font color='red'>定时器</font>
初步认识51单片机-2.4单片机C语言模块化编程
2.2单片机C语言模块化编程 这里插入一节,讲讲单片机C语言的模块化编程。什么叫做模块化编程。前面我们写的代码全部在led.c文件中,试想一下,如果代码过多,怎么阅读。另外与你合作的人如何看懂你的代码。简单的讲,没有可读性和移植性。模块化编程就是为了解决这个问题。当一个工程量比较大时,我们会把这个工程分成一段一段的任务,每个人完成不同段的任务。同时每个段之间是有联系的。假设开发人员A需要条用B的某个功能模块,那么A只要关注模块的功能和如何调用就行了,至于这个功能是如何实现的,可以不用理会。另外,对于单个人员开发完某个工程,下一个工程可能需要同样的功能模块,同样只需要知道如何调用该模块就可以了,无需再去研究该段代码实现功能的过程。还有
[单片机]
初步认识<font color='red'>51</font><font color='red'>单片机</font>-2.4<font color='red'>单片机</font>C语言模块化编程
51单片机的几种精确延时
51单片机的几种精确延时实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。 1 使用定时器/计数器实现精确延时 单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。 在实际应用中,
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved