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

2018-01-24 21:37:42编辑:王磊 关键字:计数器  定时器  脉冲源

定时器/计数器的实质是加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的通用计数器用于编码器的脉冲计数

频 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 22:13:58

51单片机 (3)定时器和计数器

注:定时器与计数器原理与使用方法相似、此处计数器知识为基础普及、后面详讲2个定时器(寄存器)、定时器0、定时器1、(计数器0、计数器1)TMOD:定时器/计数器模式控制寄存器 详见百度百科TMOD每经过一个机器周期、寄存器+1TF:定时器溢出标志。溢出时自动置1。中断时硬件清零否则必须软件清零。TR:定时器运行控制位。置1开始计时、清零停止计时。C/T:该位为0时用作计时器、该位为1时用作计数器。溢出时时间-开始计时时间=预设定时时间一个机器周期共有12个振荡脉冲周期若设定时为0.02s,则:12*(65535-X)/11059200=0.02s  定时器作“加1”次数:X=47104=0xB800次  时间
发表于 2018-05-19 22:44:31

52单片机定时器/计数器编程汇总

,TR0=1,INT0`=1,T0才开始定时/计数C/T`=0,计数;C/T`=1,定时M1    M0    工作方式        功能说明0     0     方式0      13位定时/计数器(0~8192)0     1     方式1      16位定时/计数器(0~65536)1     0     
发表于 2018-05-12 22:29:14

利用8031的定时/计数器T1对外部事件进行计数

某生产线包装工序上,生产线的输送带每送进一个产品到包装机,“SP”端就输出一个脉冲到8031的T1端。要求每送进来10个产品,CPU就从P1.1输出一个信号去控制包装机工作。;---------------------------------------------求助得到的最佳答案:计数工作的题目,比较少见,程序如下。        ORG   0000H        SJMP START       
发表于 2018-05-11 20:59:47

51 单片机编程:双路计数器

利用 51 单片机构成计数器,计数的上限,做的大一些,也不难,几千几万都可以。下面的电路,小了一点,是个两路两位的计数器。用来记录乒乓球比赛,还算可以,用于篮球比赛,分数超过 99,这个电路就不够用了。电路图中,用的是共阳数码管;还设置了六个按键,用途,都已经标出。用 C 语言编写驱动程序,是比较简单的,全部代码如下:#include<reg51.h> unsigned char  n1, n2;//-----------------------------------------------void 
发表于 2018-05-09 23:07:42
51 单片机编程:双路计数器

51 单片机汇编语言:0~100 计数器

;单片机计数器 0~100。;外部中断控制加减。;高于100还是100,低于0还是0。;按照设计思路,程序全面改写如下:    ORG   0000H    AJMP  MAIN    ORG   0003H    AJMP  TL    ORG   0013H    AJMP  TH    ORG   0050HMAIN:    MOV   SP, #5FH    SETB
发表于 2018-05-09 23:00:18
51 单片机汇编语言:0~100 计数器

小广播

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