文章目录

  • STC89C52高级定时器简介
    • 一、序言
    • 二、定时器2的工作模式
      • 1、16位自动重装载模式
      • 2、独立波特率发生器模式
        • <>测试代码<>

STC89C52高级定时器简介

一、序言

这里我就不对定时器做基本介绍了,这次主要讲一讲51的高级定时器——定时器2

二、定时器2的工作模式

1、16位自动重装载模式

看图说话:

由这张图可以写出代码

void Timer2_Initial(void)
{C_T2 = 0;//设置为定时器模式TR2 = 1;//开启定时器2TH2 = RCAP2H = (65535 - 18432) / 256;//设置20ms定时TL2 = RCAP2L = (65535 - 18432) % 256;ET2 = 1;//开启定时器2中断EA = 1;//开启总中断
}

一定要注意定时器2的中断溢出标志位需要软件清0,中断优先级为5

void T2_ISR(void) interrupt 5
{static unsigned int cnt = 0;cnt++;TF2 = 0;//软件清0if (cnt == 50)//1s中断到达{cnt = 0;LED= ~LED;}
}

2、独立波特率发生器模式

看图说话:

该图显示,在使用定时器的波特率发生模式时,还可以同时打开定时器2的外部中断。

根据波特率配置公式:

从左往右看图配置代码为:

C_T2 = 0;//设置为定时器模式
TR2 = 1;//打开定时器2
RCAP2H = TH2 = (65536 - (11059200 / 32 / 9600)) / 256;//设置波特率为9600
RCAP2L = TL2 = (65536 - (11059200 / 32 / 9600)) % 256;
RCLK = 1;//定时器2的溢出脉冲作为RX的时钟
TCLK = 1;//定时器2的溢出脉冲作为TX的时钟

上面是串口通信的波特率发生器方面的配置,除此之外还需要配置串口的模式寄存器(这里不做介绍串口的相关知识)

SCON = 0x50;//8bit variable UART

这样就完成了该种模式的配置。

<>测试代码<>
void Serial_Initial(void)
{SCON = 0x50;C_T2 = 0;//设置为定时器模式TR2 = 1;//打开定时器2RCAP2H = TH2 = (65536 - (11059200 / 32 / 9600)) / 256;//设置波特率为9600RCAP2L = TL2 = (65536 - (11059200 / 32 / 9600)) % 256;RCLK = 1;//定时器2的溢出脉冲作为RX的时钟TCLK = 1;//定时器2的溢出脉冲作为TX的时钟ES = 1;//打开串口中断EA = 1;//开启总中断
}char putchar(char ch)//51串口重定义,需要添加"stdio.h"头文件
{SBUF = ch;delay(1);//稍作延时,防止数据发错return ch;
}void delay(int ms)//ms延时
{int x,y;for (x = ms; x > 0; x--)for (y = 114; y > 0; y--);
}void Serial_ISR(void)  interrupt 4
{unsigned char temp;if (RI){RI = 0;temp = SBUF;SBUF = temp;}if (TI){TI = 0;}
}

其实定时器2还有一个输入捕获模式,博主还在测试,先把这些发上,因为之后可能要去调车了

STC89C52高级定时器简介相关推荐

  1. STM32学习——高级定时器

    高级定时器简介 1.输入捕获模式,可用来测频率或脉宽(原理:捕获到信号的跳变沿的时候,把计数器CNT的值锁存到捕获寄存器CCR中,把前后两次捕获到的CCR寄存器中的值相减,就可以算出脉宽或者频率.如果 ...

  2. STM32-Chapter1-6电机开发概述,定时器之基本定时器定时高级定时器互补输出输入捕获输出比较实验

    一  需要掌握的技能 希望经过前面介绍的电机开发的应用场景对学习电机应用开发产生浓厚的兴趣,并且能让你更 加坚定地开始学习电机应用开发.那么该如何学习呢?对于电机驱动开发工程师,会有如下基本 要求: ...

  3. STM32学习笔记 高级定时器TIM1TIM8 14

    高级定时器TIM1&TIM8 TIM1和TIM8简介 高级控制定时器(TIM1和TIM8)由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动 它适合多种用途,包含测量输入信号的脉冲 ...

  4. GD32通用定时器、高级定时器PWM输出例程

    通用定时器 /********************************************************************************************* ...

  5. stm32 高级定时器产生PWM

    用stm32的高级定时器TIM1和TIM8产生PWM,需要注意: 1.都有TIM1,但只有flash容量大于256K的大容量单片机才有TIM8 2.高级定时器相对于通用定时器,多了TIM_CtrlPW ...

  6. stm32高级定时器 基础知识

    stm32高级定时器 高级定时器时基单元: 包含一个16位自动重装载寄存器 ARR 一个16位的计数器CNT,可向上/下计数 一个16位可编程预分频器PSC,预分频器时钟源有多种可选,有内部的时钟.外 ...

  7. 高级定时器的各种框图和HAL库重要结构

    高级定时器的各种框图和HAL库重要结构 死区控制其实就是让高电平延迟输出

  8. 【STM32】高级定时器、通用定时器和基本定时器---配置寄存器产生PWM

    文章目录 1.高级定时器和通用定时器 2.配置产生PWM 1.高级定时器和通用定时器   高级定时器:TIM1.TIM8   Tips:黄色词条为高级定时器相对于通用定时器的功能.   通用定时器:T ...

  9. python简述列表特征_python高级特性简介

    Python中的五种特性:切片,迭代,列表生成式,生成器,迭代器. 切片 切片就相当于其他语言中的截断函数,取部分指定元素用的. L = list(range(100)) #利用切片取部分元素 pri ...

最新文章

  1. Linux 使用记录
  2. 人工智能最佳学习实践
  3. (有图片)汇编工具dosbox下自动mount及切换虚拟目录使用步骤。
  4. [转] c++的多态(一个接口,多种实现)
  5. exit(0) exit(1) return() 3个的区别
  6. 架构之:REST和RESTful
  7. SicilyFunny Game
  8. JSP标签中不要省略引号
  9. 冒泡排序 和 归并排序
  10. ubuntu11.04下CUDA4.0的安装与配置
  11. 指标体系|四个模型教会你指标体系构建的方法
  12. Machine Learning(CF-940F)
  13. 《Linux 鸟哥私房菜》 第一部分 Linux文件、目录与磁盘格式
  14. linux中的基础正则表达式
  15. Mesos + Marathon + Chronos + Docker环境安装
  16. c++使用unordered_map与map的区别
  17. 爬虫入门【10】Pyspider框架简介及安装说明
  18. python3爬取微博评论教程_python3爬取微博评论并存为xlsx
  19. 一文搞定细菌基因组De Novo测序分析
  20. logcat 实时输出日志到文件(logcat输出日志到文件、同时包括多个TAG)

热门文章

  1. MySql的复合主键和联合主键的介绍
  2. 从小区宽带看ISP运营商拓扑
  3. 阿里P7技术知识点,Android架构师年薪50w,只因做到了这几点
  4. MiniSnail子模块的规划
  5. 元音的时域波形、频谱特点举例分析
  6. 解决keil-5中stm32f103系列使用ST-Link下载程序时不能连接的问题。“flash download failed ”
  7. Hibernate多对多关系配置
  8. 论文阅读| 《An Integrated Pipeline Architecture for Modeling Urban Land Use, Travel Demand, and Traffic 》
  9. ASP.NET AJAX---TimerHiddenField控件小实例 (实现倒计时)
  10. 给女朋友道歉的java代码_跟女朋友道歉的话,高情商的哄人句子