历史上的今天
今天是:2025年03月28日(星期五)
2020年03月28日 | 单片机小白学习之路(十五)---定时器和计数器的理解(一)
2020-03-28 来源:eefocus
目标:定时器和计数器的理解(一)
1.定时器/计数器简介
定时器/计数器(Timer/Counter,简称T/C)是单片机中最基本的接口之一。即可以定时又可以计数。常用于计数、延时、测量周期/脉宽/频率、提供定时脉冲信号等。
8051系列单片机至少含有2个16位的T/C,STC89C51/52含有3个T/C。其中2个为基本定时器/计数器T/C0和T/C1,另一个是T/C2。可通过软件配置为定时器功能或者计数器功能。
定时/计数器的工作原理
定时/计数器实质上是一个加1计数器。当工作在定时器模式时,对振荡源(晶振)12分频(12分频就是震荡周期,单位 是us)的脉冲计数,即每个机器周期(12个震荡周期就是1/12us12=1us)计数值加1(解释了前面延时函数),当加到计数器为全1(定时计数器是 16位,则2*16=65539,减1[因为0开始]后65535是定时计数最大值)时,再输入一个脉冲就使计数器回零。
当工作在计数器模式时,计数脉冲来至外部脉冲输入引脚P3.4(T0)和P3.5(T1),当T0或T1脚上负跳变(即下降沿,正跳变==上升沿)时计数值加1 ,识别管脚负跳变需要2个机器周期(2us),即24个振荡周期。所以T0或T1脚输入的可计数的外部脉冲的最高频率为1/24fosc(1/24*12=500KHz),当晶振12MHZ时,最高计数频率为500KHz,高于此频率将计数出错。
2.定时器/计数器寄存器

定时器/计数器寄存器
TH1和TL1是定时/计数器1的两个寄存器,都是8位,共16位。TH1是高8位,TL1是低八位
TH0和TL0是定时/计数器0的两个寄存器,都是8位,共16位。TH0是高8位,TL0是低八位
T0引脚是P3.4,T1引脚是P3.5,配置成计数器模式用于检测外部的脉冲信号
定时器控制寄存器TCON,
工作方式选择寄存器TMOD (用于确定定时/计数器的工作方式和功能)
TCOD见单片机小白学习之路(十二)---->https://www.jianshu.com/p/4de17b66a15b
工作方式选择寄存器TMOD

工作方式选择寄存器TMOD
0~3是定时/计数器0 的4位,M1,M0用于选择工作方式,工作方式有0,1,2,3。C/T是计数器或定时器的选择位,C/T置0则是定时模式,置1是计数模式。
GATE是门控信号GATE=1时,T/C(定时/计数器)启动收到双重控制要求TR0/TR1和INT0/INT1同时为高,GATE=0时,T/C的启动仅收到TR0/TR1的控制,通常把GATE置0

工作方式选择
方式0:最大计数值是2**13-1=8191
方式1:最大计数值是2**16-1=65535
方式2:TH存放初值,TL用于计数,由于是8位则最大值255,TL不断计数,计到255则溢出并清0,然后TH把初值给TL又开始计数,这就是可自动重新装载初值的含义
方式3:对T0和T1不大相同,仅T0可设置模式3,若设置其为模式3,TL0和TH0被分为两个相互独立的8位计数器,TL0为8位计数器,功能与模式0/1相同,可定时可计数
TH0仅做简单的内部定时功能,它占用了定时器T1的控制位TR1和中断标志位TF1 ,启动和关闭仅受TR1控制(此模式不常用)
史海拾趣
|
21 世纪大学新型参考教材系列 集成电路A、B 荒井 https://bbs.eeworld.com.cn/thread-96367-1-8.html 21 世纪电子电气工程师系列 数字电路 173 页 3.0M https://bbs.eeworld.com.cn/thread-96370-1-8.html @@ 电子技术数字逻辑基础第5 版 533 ...… 查看全部问答> |
|
如题 本人脱产大专会计毕业,但对电子工程感兴趣,准备跨专业自学。报的自考本科。无奈看不懂。想从基础的学起。不知入门方向。请前辈们帮忙介绍下电子工程专业的入门书籍。 万分感谢! … 查看全部问答> |
|
[转自] http://www.itxxh.cn /Article/view.asp?id=102 [引] 在config.bib文件中,有如下三个设置: ROMSTART=xxxx ROMWIDTH=xxxx ROMSIZE=xxxxxx 这3个变量必须被赋值. [/引] nk.bin和nk.nb0都是CE的镜像。然而,我们在下 ...… 查看全部问答> |
|
uclinux jedce_probe探测ID,变成flash的内容 Flash:两片SST39VF3201 ,一片挂CS0:地址0x80000000 一片挂CS1:地址0x81000000 使用jecdec探测 static struct map_info lpc24xx_map[2] = { { .name = \"LPC24XX\", .bankw ...… 查看全部问答> |
|
我按照mini2240的eboot先进行分区。。前面25个block是NBOOT.eboot.TOc,后面就是分区MBR,我将根据NK的大小分出那么大的BINFS的分区,后面的都是分成FAT的分区。从打印的信息来看我的分区是正确的,但是我没有去读分区表的信息来确认。下面我给出我的 ...… 查看全部问答> |
|
本人初学Linux .请问这样的一个问题。从windows下如何复制一个文件到Linux系统? 这个可以实现的吗?要是可以实现的话.请赐教.谢谢. … 查看全部问答> |
|
由于我修改了BSP导致液晶屏不亮了,所以我把原来光盘的BSP覆盖被修改的BSP,结果出现了如下错误,真是悬了。怎么回事?PB5.0也太不稳定了吧。 cannot open program database \'c:\\wince500\\public\\shell\\oak\\lib\\armv4i\\retail… 查看全部问答> |
|
发开发板啦!数十块开发板等你拿! Qemu 仿mini2440开发板v2.pdf qemu仿integratorcp开发板(arm) .pdf 当然这里只有两块,你要有兴趣,可以仿真更多开发板 我在这里回答下下面提的问题 一、qemu是什么? qemu是Linux下一个开 ...… 查看全部问答> |
|
请问在matlab的simulink中进行DSPbuilder设计时,仿真的时候要调用modelsim仿真,但出现这个错误:# could not read \"d:\\softsetup\\quartusii\\quartus/libraries/vhdl/altera//alt_cusp80_package.vhd\": no such file or directory,请问大家 ...… 查看全部问答> |
|
【玩转C2000 Launchpad】成功实现C2000LAUNCH和我的“家庭物联网”无线数据传输 这个实验前几天就已经完成,现在发个帖子做一个记录。 老规矩上完整工程: 这个实验是在前一个实验的基础上加入的,无线数据接收和多通道数据AD转换通过板子上的按键切换。 这次就不录视频了太麻烦了上几张图片给大家瞧瞧。 说明已经的第一行显 ...… 查看全部问答> |




