datasheet

计数器输入的计数脉冲源结构与工作方式详解

2018-01-24来源: 互联网 关键字:计数器  定时器  脉冲源

定时器/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时器/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。



定时器/计数器的工作原理


计数器输入的计数脉冲源


系统的时钟振荡器输出脉冲经12分频后产生;


T0或T1引脚输入的外部脉冲源。


计数过程


每来一个脉冲计数器加1,当加到计数器为全1(即FFFFH)时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时器/计数器中断允许时)。如果定时器/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。


定时应用


用作定时器:此时设置为定时器模式,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t 。


计数运用


用作计数器:此时设置为计数器模式,外部事件计数脉冲由T0或T1引脚输入到计数器。每来一个外部脉冲,计数器加1。但单片机对外部脉冲有基本要求:脉冲的高低电平持续时间都必须大于1个机器周期。


工作方式寄存器(TMOD)



GATE:门控位。


GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时器/计数器工作;(即需要一个启动条件)


GATE=1时,要用软件使TR0或TR1为1,同时外部中断引脚也为高电平时,才能启动定时器/计数器工作,即需要两个启动条件。


C/T :定时/计数模式选择位。


C/T =0为定时模式; C/T =1为计数模式。


M1M0:工作方式设置位。


计数器工作方式选择


M1 M0 工 作 方 式 功 能 说 明


0 0 方式0 13位计数器


0 1 方式1 16位计数器


1 0 方式2 自动重装8位计数器


1 1 方式3 定时器0:分成两个8位


定时器1:停止计数


定时器/计数器的控制


控制寄存器TCON


TCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控制定时器/计数器的启动和中断申请。其格式如下:



TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。TR1(TCON.6):T1起/停控制位。1:启动 0:停止


TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。


TR0(TCON.4):T0起/停控制位。1:启动 0:停止


定时器/计数器的工作方式


方式0


方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。



方式1


方式1的计数位数是16位,由TL0(TL1)作为低8位、TH0(TH1)作为高8位,组成了16位加1计数器 。


方式2


方式2为自动重装初值的8位计数方式。



在方式2下,当计数器计满255(FFH)溢出时,CPU自动把TH 的值装入TL中,不需用户干预。因此特别适合于用作较精确的脉冲信号发生器。


方式3



方式3只适用于定时器/计数器T0,定时器T1方式3时相当于TR1=0,停止计数。


工作方式3将T0分成为两个独立的8位计数器TL0和TH0 。

关键字:计数器  定时器  脉冲源

编辑:王磊 引用地址:http://www.eeworld.com.cn/mndz/article_2018012426912.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:锁相环在调制和解调中的应用及概念解析
下一篇:针对不同要求的两种高频基准整流器的测试方法分析与比较

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32之通用定时器计数器模式

#include "stm32f10x.h"/* RCC时钟配置 */void RCC_config(){  ErrorStatus HSEStartUpStatus; /* RCC寄存器设置为默认配置 */ RCC_DeInit(); /* 打开外部高速时钟 */ RCC_HSEConfig(RCC_HSE_ON); /* 等待外部高速时钟稳定 */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS)  
发表于 2018-09-16

STM32的计数器的使用

(RCC_APB2Periph_GPIOB, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);第三步,设置定时器模式voidTIM1_Configuration(void) //只用一个外部脉冲端口{TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;   //配置TIMER1作为计数器   TIM_DeInit(TIM1);  
发表于 2018-09-16

STM32CubeMX:ETR外部脉冲计数器

3 */标准库获取计数器值用TIM_GetCounter函数,HAL函数中,直接调用值即可,好一顿找……
发表于 2018-09-16

PIC单片机入门_定时器/计数器TMR1详解与实例

1.前言前面介绍了定时器/计数器TMR0的基本概念和用途,下面介绍PIC单片机中另外一种定时器/计数器TMR1。2.TMR1的特性  TMR1为16位宽,附带一个3位的分频器,还自带一个低功耗低频的时基振荡器。TMR1的主要用途:类似于TMR0,用于定时和计数;自带一个时基振荡器,可记录年、月、日、时、分、秒,实现实时时钟RTC(real time clock);可以与CCP模块配合使用,实现输入捕捉或输出比较功能。TMR1由二个8位寄存器TMR1H和TMR1L对组成的16位定时器/计数器,可以由软件读/写,这二个寄存器都是和RAM统一编址的,地址分别为0EH和0FH 。TMR1H:TMR1L寄存器对,从0000H递增
发表于 2018-07-24

stm32的通用计数器用于编码器的脉冲计数

频 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //时钟分割 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Down; //模式 TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //基本初始化TIM_SetCounter(TIM4, 100); //设置 TIM4 计数器寄存器值   //设置 TIMx 自动重装载寄存器值  TIM_ARRPreloadConfig
发表于 2018-07-19

51单片机的中断与定时计数器尝试

这是我的第一篇有关51单片机的博客,主要记录我的学习历程与中间遇到的问题,如有错漏请指出。在我理解里面中断与定时计数器是这样的:中断是通过检查P3.2(INT0)与P3.3(INT1)两个引脚来触发的计数器是通过检查P3.4(T0)与P3.5(T1)两个引脚的状态,要达到一定的次数(一般是记脉冲数)才触发定时器不需要检测引脚,直接计数先说中断的代码#include<reg51.h>#include<intrins.h> #define SDT P0//静态数码管定义 unsigned char temp; unsigned char code SDT_map[10]={0xC0
发表于 2018-07-12

小广播

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