当前位置: 首页 > article >正文

16:定时器和计数器

定时器和计数器

  • 1、定时器和计数器的介绍
  • 2、定时器是如何工作
  • 3、寄存器
  • 4、51单片机定时器简介(数据手册)
  • 5、定时器中的寄存器(数据手册)
    • 5.1、TCON(定时器控制寄存器)
    • 5.2、TMOD(工作模式寄存器)

1、定时器和计数器的介绍

(1)定时器是单片机里面的一个内部外设,就是CPU的“闹钟”。CPU定时的时间段里面,CPU也能干别的事。当定的时间到了后,CPU再去干被指定的事。
(2)定时器其实就是用计数器实现的,计数器是记录脉冲的个数。计数器可以计算CPU外部脉冲的个数。

2、定时器是如何工作

(1)先设置好定时器的时钟源(既一个脉冲的持续的时间,一般不需要设置)
(2)初始化的时钟相关的寄存器
(3)设置定时的时间(通过设置脉冲的个数)
(4)设置中断要处理程序(时间到后被指点要做的事)
(5)打开定时器
(6)计时开始,时间到后产生中断,执行指点程序

3、寄存器

软件可以通过寄存器控制硬件,硬件也可以改变寄存器里面的值。
列如为什么0就能使LED灭,1就能使LED亮,这就和寄存器有关,

在这里插入图片描述
假如8位寄存器的第一位的控制LED灯的亮灭,1为灯亮,0为灯灭。其中寄存器怎样让LED灯亮和灭,这就牵扯到内部电路了。
我们只需要知道程序和硬件之间还有一个寄存器来作为桥梁,当程序在寄存器中放入1时,寄存器反应出灯亮。

硬件可以改变寄存器里面的值
在这里插入图片描述

列如按键控制,平常按键不安下时,对应的寄存器的值为1,当按下时,值变为0。
所以一般:
①->②
④->③->①->②
在这里插入图片描述

4、51单片机定时器简介(数据手册)

在这里插入图片描述
STC89C52内部一共有3个定时器,分别为T0,T1,T2。T0和T1是16位的定时/计数器,是定时器还是计数器取决于TMOD中的C/T。则一共能计数2的16次方个脉冲。

12时钟(12T)和6时钟(6T)的区别:
假如外部晶振为12MHZ,工作带12T的模式下,则内部时钟是频率为1MHZ,则一个脉冲的时间周期为1÷1MHZ=1us,如果工作在6T 的模式下,则内部时钟的频率为 2MHZ,一个脉冲的时间周期1÷2MHZ=0.5us

5、定时器中的寄存器(数据手册)

在这里插入图片描述
TL0为定时器/计数器T0的低8位,TH0为定时器/计数器T0的高8位(一共16位)。
TL1为定时器/计数器T1的低8位,TH1为定时器/计数器T1的高8位(一共16位)。

假如使用定时器T0要计数1000个脉冲,则为0X03E8(0000 0011 1110 1000)。
则高8位存放0000 0011,低8位存放1110 1000

5.1、TCON(定时器控制寄存器)

在这里插入图片描述

(1)8个位,但是有4个名字:TF、TR、IE、IT,每个名字的符号都有2个,后面分别带0和1,对应T0和T1。
(2TF:定时器(溢出)标志位,是只读(软件只是通过读取TF1来知道硬件的状态,而不用去写这一位来设置硬件的伏态)的。定时器定时时间到了后会做2件事情:第一个是把F标志改为1,第二个是产生中断让CPU去中断处理。TF是硬件清零的(由1变0是自动的,不需要软件来干预)。有一些CPu的设计是需要软件去清零的,这时候用户的程序就一定要记得给标志位清零,不然就不能重复进入中断。
(3)TR就是timer run,就是定时器的启动计数的开关。当我们把整个定时器初始化好了之后,我们给TR位写1就可以开启计数了。TR位和GATE位有一定关联性。
(4)GATE是TMOD寄存器中的,也有2个分别对应T0和T1。GATE位中文名叫门控位,工作方式是:当GATE=0时(相当于门是打开的,此时GATE位是可以忽略的),此时定时器开关就只受TR位影响。具体就是TR=1开启计数,TR=0结束计数。当timer处于定时器工作模式时GATE就要等于0;GATE一般是在timer处于计数器模式时用的。当timer用来计数时,很关键的就是什么条件下计数,什么条件下不计数。当GATE=0时计数条件只有TR1一个(TR1=1就计数,TR1=0就不计数),当GATE=1时是否计数不仅取决于TR1还取决于INT1引脚(P3.3),实际规则是:当TR1=1并且INT1引脚也为高电平时才会计数。
(5)IE也是个标志位,作用就是用来展示硬件的状态改变的。譬如IE1对应外部中断1(INT1),平时不发生INT1时IE1=0,当INT1发生中断时,硬件自动IE1=1,当CPU处理了INT1时硬件会自动给IE1=0(硬件自动清零)。
(6)IT是用来设置外部中断的中断触发方式的。所谓中断的触发方式,就是指硬件在某种条件下才会被判定为要产生中断,所以其实就是中断产生的条件。中断触发方式一般就是:边沿触发和电平触发2种。边沿触发又分为:上升沿触发、下降沿触发、双边沿触发;电平触发方式分为:高电平触发、低电平触发2种。

5.2、TMOD(工作模式寄存器)

在这里插入图片描述

(1)GATE上面已经讲过了
(2)C/T位,设置T0/T1工作在定时器模式还是计数器模式。1表示计数器,0表示定时器。
(3)M1 + M0,2个位一起来表示T0/T1处于哪种工作模式下,一般有4种:13位、16位、8位自动重载、双8位。


http://www.kler.cn/a/231680.html

相关文章:

  • 2.5D视觉——Aruco码定位检测
  • ubuntu20.04 更换清华源报错
  • 一些常见网络安全术语
  • django从入门到实战(三)——CBV视图介绍
  • 小程序-基于java+SpringBoot+Vue的驾校预约平台设计与实现
  • python语言基础-5 进阶语法-5.2 装饰器-5.2.2 简单装饰器
  • 【Ubuntu】安装filebeat
  • SpringCache缓存快速实现注解
  • 在angular12中proxy.conf.json中配置详解
  • 【Git版本控制 03】远程操作
  • 2024年的VUE2下的无效指令npm install --save vue-i18n
  • ChatGPT高效提问—prompt常见用法(续篇三)
  • 超级干货:ArcGIS的那些花样技巧
  • 容器基础知识:容器和虚拟化的区别
  • 【Script】使用pyOpenAnnotate搭建半自动标注工具(附python源码)
  • 服务器安装Docker (centOS)
  • 廖雪峰Python教程实战Day 2 - 编写Web App骨架,运行后不显示网页如何解决
  • 【element-ui】输入框组件el-input输入数字/输出Number类型:type=“number“、v-model.number用法
  • 【实训】自动运维ansible实训(网络管理与维护综合实训)
  • Javascript第十二个知识点:Dom
  • 前端开发:(三)CSS入门
  • 【GAMES101】Lecture 17 材质
  • MySQL进阶查询篇(2)-索引的优化和使用场景
  • C语言什么是悬空指针?
  • 6.electron之上下文隔离,预加载JS脚本
  • Windows搭建Emby媒体库服务器,无公网IP远程访问本地影音文件