定时器2:
16位自动重装载和捕获能力的定时计数器
控制寄存器TCON2:字节地址------------->>>>>>>>0C8H--------------------->>>>>>可位寻址
| TF2 | EXF2 | RCLK | TCLK | EXEN2 | TR2 | C/T2 | CP/RL2 |
| 溢出标志位 | 定时器外部标志 | 接收时钟标志 | 发送时钟标志 | 外部使能 | 启动、停止控制位 | 选择位 | 捕获重装标志 |
| 定时/计数器2溢出标志,T2溢出时置位,并申请中断。只能用软件清除,但T2作为波特率发生器使用的时候,(即RCLK=1或TCLK=1),T2溢出时不对TF2置位 | 当EXEN2=1时,且T2EX引脚(P1.0)出现负跳变而造成T2的捕获或重装的时候,EXF2置位并申请中断。EXF2也是只能通过软件来清除的 | 串行接收时钟标志,只能通过软件的置位或清除;用来选择T1(RCLK=0)还是T2(RCLK=1)来作为串行接收的波特率产生器 | 串行发送时钟标志,只能通过软件的置位或清除;用来选择T1(TCLK=0)还是T2(TCLK=1)来作为串行发送的波特率产生器 | T2的外部允许标志,只能通过软件的置位或清除;EXEN2=0:禁止外部时钟触发T2;EXEN2=1:当T2未用作串行波特率发生器时,允许外部时钟触发T2,当T2EX引脚输入一个负跳变的时候,将引起T2的捕获或重装,并置位EXF2,申请中断 | T2的启动控制标志;TR2=0:停止T2;TR2=1:启动T2 | T2的定时方式或计数方式选择位。只能通过软件的置位或清除;C/T2=0:选择T2为定时器方式;C/T2=1:选择T2为计数器方式,下降沿触发。 | 捕获/重装载标志,只能通过软件的置位或清除。CP/RT2=0时,选择重装载方式,这时若T2溢出(EXEN2=0时)或者T2EX引脚(P1.0)出现负跳变(EXEN2=1时),将会引起T2重装载;CP/RT2=1时,选择捕获方式,这时若T2EX引脚(P1.0)出现负跳变(EXEN2=1时),将会引起T2捕获操作。但是如果RCLK=1或TCLK=1时,CP/RT2控制位不起作用的,被强制工作于定时器溢出自动重装载模式。
|
模式控制寄存器T2MOD:字节地址------------->>>>>>>>0C9H----------------->>>>>>不可位寻址
| 0 | 0 | 0 | 0 | 0 | 0 | T2OE | DECN |
|
|
|
|
|
| 定时器输出使能位 | 向上/向下计数使能位。定时器2可配制成向上/向下计数器。 0:向上计数(模式状态) 1:向下计数(尽量不使用) |
|
|
|
|
|
|
|
|
工作方式:
| RCLK+TCLK | CP/RL2 | TR2 | TR2 |
| 0 | 0 | 1 | 16位自动重装(串行口发送和接受的波特率由定时器1提供) |
| 0 | 1 | 1 | 16位捕获 |
| 1 | x | 1 | 波特率发生器 |
| x | x | 0 | 关闭 |
陷阱寄存器:RCAP2H和RCAP2L---------存放TH2和TL2中的值
模式1和模式3的波特率=(振荡器频率/32) * (65535-N)
定时器2为计数模式时,外部时钟信号由T2(P1^0)引脚进入。
定时器2作为波特率发生器的时候,不要对TH2和TL2读写,可以读陷阱寄存器,但是也不要写。当对定时器2的陷阱寄存器进行访问时,应关闭定时器(TR2清0)。
关键字:STC89C52 单片机 定时器2
引用地址:
STC89C52单片机定时器2整理
推荐阅读最新更新时间:2026-03-24 10:59
51单片机STC12C5A60S2定时器做延时函数,定时器实现精准延时
/*====================================================================== 利 用 定 时 器 实 现 精 准 延 时 的 调 用 函 数 ========================================================================*/ #include STC12C5A60S2.h typedef unsigned char u8; typedef unsigned int u16; u16 count; //中断次数变量 bit flag = 0; //标志时间结束 //=============
[单片机]
51单片机之T2定时器串口通信
52芯片,比51要多一个定时器。所以我在网上也是看了很多资料,许多都不能运行,我在进行部分修改后,终于在keli和proteus上实现了仿真测试。以下是我的代码和设计的电路。 /*----------------------------------------------------------------------------- * 实 验 名 : RS232串口试验 * 实验说明 : 单片机串口接收数据控制灯亮灭 * 连接方式 : * 注 意 : 该试验使用的晶振是11.0592 ****************************************************
[单片机]
51单片机定时器工作方式1、2原理详解
写在前面 1.本篇博文旨在帮助那些像我一样刚入门51单片机,如果你对定时器有一定了解,但是其中的的工作方式不能理解,那么这篇文章很适合你,如果你是大神的话…直接绕行吧…… 2.我在学习的过程中由于知识上的不足很多的讲解看不懂,在翻找了许多资料真正理解之后,打算以一种简单易懂的方式进行解释,这是一份很 详尽基础 的讲解手册。 3.全文以定时器0为例,定时器1的用法与其相同。 4.由于是讲定时器实现原理,文章文字显得较多,不过都是很简单的文字,只要认真看都能看得懂。 知识填充 虽然看懂这篇博文不需要太多的知识储备,但是在这里还是做一个简单的知识普及,便于下文的讲解 4位二进制数可以和1位十六进制数相互转化,如二进制
[单片机]
stm8s单片机内部定时器2使用
stm8s的中文手册里面写TIM2 16位向上计数是错误的。 stm8s定时易于使用,首先设定定时器的时钟频率,知道了定时器的时钟周期T,那么定时时间Tn就确定了,即 Tn = T * ARR(自动装载数据)。 程序如下: 1、单片机时钟设定: //fmaster=fcpu=2MHz CLK_ECKR=0x00; CLK_ICKR=0x01; CLK_CMSR=0xe1; CLK_SWR=0xe1; CLK_CKDIVR=0x18; 2、定时器TIM2初始化 //定时器2初始化fmaster/分频=2M/2=1M,1us计数一次,50us 中断一次 void TIM2_Init(void) { _a
[单片机]
单片机4位数字时钟仿真程序(定时器方式2, 按键连加)
学习单片机动态数码管显示,数字时钟是最好的案例,本仿真案例有以下特点。 1.使用定时器0,方式2,可以减小定时器的误差; 2.调时、调分按键具有连加功能,与常见的按键松手检测有区别; 3.具有秒点显示功能,若制作实物案例,可购买带秒点的数码管。 参考程序: #include reg52.h #define uint unsigned int #define uchar unsigned char sbit w1=P2^2; sbit w2=P2^3; sbit w3=P2^4; sbit w4=P2^5; sbit s1=P1^3; sbit s2=P1^4; sbit s3=P1^5; uint shi,fen,sec
[单片机]
51单片机I2C 24c02 1-99秒循环定时器
51单片机,I2C 24c02 1-99秒循环定时器 仿真电路。 程序源码 HEX文件 单片机源程序如下: #include reg52.h #include i2c.h #ifndef uchar #define uchar unsigned char #endif #ifndef uint #define uint unsigned int #endif #ifndef ulong #define ulong unsigned long #endif uchar stoptime=0,runtime=0,stopcoun=00,runcoun=00; uchar di
[单片机]
51单片机系列知识9--定时器、计数器(2)
二 1. 我们在对某一脉冲用单片机进行计数时,如何确定该脉冲允许的频率上限? 设置为计数工作方式时,通过管脚T0(P3、4)或T1(P3-5)对外部脉冲信号计数。当输入脉冲信号产生负跳变(或正跳变,具体情况要根据你对寄存器的设置),定时器的值加1。每个机器周期的S5P2期间,对外部输入进行采样,如在第一个周期中采得的值为1,而在下一个周期中采得的值为0,则在紧跟着的再下一个周期的S3P1期间,即24个振荡周期,因此外部输入的计数脉冲的最高频率为振荡频率的1/24。 对外部输入信号的占空比并设有什么限制,但为了确保某一给定的电平在变化之前至少被采样一次,则这一电平至少要保持一个机器周期。(Tcy为机器周期) △ 结论
[单片机]
51单片机之定时器/计数器应用实例(方式0、1、2、3)
硬件:STC89C52RC 开发工具:Keil uVision4 对于刚接触单片机的同学来说可能会对定时器/计数器的应用很蒙圈,特别是初值的计算和各种定时方式的选择。下面希望能给你带来一个清晰的思路。 定时器:一般用于软件计时,给定时器设置一个时间,时间到了系统停止当前的工作跳转到事先定义好的定时器中断函数里,函数里可以做一些周期性的事情。 计数器:一般用于检测外来脉冲信号,给计数器设置一个次数,次数到了系统停止当前的工作跳转到事先定义好的计数器中断函数里,函数里做相应的事情。 先说一下相关的寄存器,也可以直接跳过,看后面的实例分析。 配置定时器或者计数器就是对相应的寄存器进行赋值,下面是相关的寄存器描述:
[单片机]