速览!一文了解MCU单片机的定时器(TImer)功能
之前我们有了解过,MCU单片机相当于一个微控制器,和其他芯片相比,最大的特点就是可编程特性。由于它的可编程特点,让它得以广泛的应用在生活的方方面面,比如手机、PC外围、遥控器,汽车、电子、智能家居等,但这些都是使用MCU单片机配合不同电路去实现的。
那MCU单片机的基本功能有哪些呢?金誉半导体带大家来了解一下,包括:定时器(TImer)、IO口、外部中断、通讯接口、A/D转换、PWM功能等。其中定时器(TImer)功能可以说是MCU单片机最基本的功能,那定时器(TImer)功能使如何实现的呢?
定时器是由两个寄存器组成的,其中一个寄存器是用来确定计数器的工作形式和功能的,另外一个计时器是用来控制单片机的启动和停止的,同时它也是设置溢出的一个标志。
TImer的种类虽然比较多,但可归纳为两大类:
一类是固定时间 间隔的TImer:即其定时的时间是由系统设定的,用户程序不可控制,系统只提供几种固定的时间间隔给用户程序进行选择,如32Hz,16Hz,8Hz等,此类TImer在4位MCU中比较常见,因此可以用来实现时钟、计时等相关的功能。
固定时间间隔的TImer在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。另一类则是可编程定时 器(Programmable Timer),顾名思义,该类Timer的定时时间是可以由用户的程序来控制的,控制的方式包括:时钟源的选择、分频数(Prescale)选择及预制数的设定等,有的MCU三者都同时具备,而有的则可能是其中的一种或两种。此类Timer应用非常灵活,实际的使用也千变万化,由于时钟源可以自由选择,因此,此类Timer一般均与Event Counter(事件计数器)合在一起。
MCU单片机计数过程
每来一个脉冲计数器加1,当加到计数器为全1(即FFFFH)时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时器/计数器中断允许时)。如果定时器/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。
其实数字集成电路也可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(PLC)可以实现时序电路,但是只有单片机实现起来最简单,成本最低。因此单片机定时器的使用是非常重要的,掌握逻辑加时间控制的编程是学习使用单片机的基础。
*此文来源网络资料整理后内容,如有侵权请联系删除
51单片机定时器模式2与波特率的应用
一般来说,我们串口通讯用到的都是异步串行通讯,工作的方式为方式1.
方式1即为发送一个完整的信号为10个bit.起始信号为低电平,终止信号为高电平,串口通讯的两根线在平常时候都是处于高电平状态,当一旦有数据要进行转发的时候,电平拉低,通讯芯片马上对信号进行监听。这样子就能正常收发数据了。
一般来说,我们都是采用定时器1的模式2(自动重装模式)来作为波特率发生器的,同理,定时器1的中断也就被我们遗弃了,因为为了波特率产生的时候不会受到干扰(如果定时器1有中断函数,那么处理中断函数会关闭定时器1中断,这时候波特率发生器就处于关闭状态了)。根据STC给我们的文档,定时器1所具有的功能是比定时器2更强大的,所以,我们更倾向于把定时器1作为一个正常的中断定时器使用,而通过定时器是用说明也可以了解,定时器2的三种
51单片机定时器模式2与波特率的应用
用途:
1.捕获模式,简单点说就是检测外部引脚跳变时间,在整个负跳变时期记录下所在数值,然后申请中断,我们人工读取数值,得到波形宽度。
2.自动重装模式。跟定时器01的方式2一样,不过这时候他的定时器范围可以达到2^16,并且这里是用的是硬件重载,所以不存在延迟效果,如果我们要使用在对精度有严格要求,并且苦恼于定时器01只能重装到2^8=256,那这个定时器确实就是很强大的选择。
3.波特率发生器,这里跟定时器1的波特率发生器是一样的,同理,他使用的也是自动重装模式,不过这里是使用的是16位的自动重装,这可能也是他其中的优点之一吧,波特率变动范围很广。
关于波特率:波特率就是用来定义串口通讯时候每秒传送的数据量,用bps表示,像我们定义的波特率为600,即每秒发送600个二进制位,而我们每个字符占用十个二进制位,所以我们一秒一共可以发送6个二进制位。
关于波特率选定:一般来说,我们是选用低一点的波特率来进行通讯,因为高的波特率如果在12MHZ的晶振工作模式下,会产生很大的误差,如果时间长了,会导致数据没有办法对上时钟而导致通讯乱码。并且高的波特率因为传送的数据量大,在线的距离拉长的时候,容易产生很严重的干扰,所以还是优先选择低波特率进行通讯。
关于波特率和定时器2:定时器2作为波特率发生器的时候,是通过状态位的设定,来夺取定时器1的波特率发生器的作用,所以这时候我们可以通过设定,让定时器只是作为我们程序单纯中断的用途,然后定时器2作为专门的波特率发生器,这时候我们不用设定定时器2的中断,而且当初始化之后,就不用去管定时器2的中断了,我们要注意的只是串口中断,即通讯电平拉低那一瞬间所产生的中断请求。同理,串口中断跟定时器2中断是完全不同的,这里我们不需要使用定时器2中断,定时器2溢出的时候,会执行两种功能,一就是产生定时器2中断,另外一个是会向波特率发生器发送溢出信号,这时候发生器接收到这个信号的时候,自动进行时钟校对,产生一个bps的时钟信号,所以波特率发生器是这么来的,定时器2说简单点就是用来决定时钟信号的波形宽度的。溢出率越高,那么同一个时间段里面产生的时钟信号也就越密集,发送数据同步了时钟信号,同理也就能够发送更多的数据。
通过上图可得,在600bps的情况下,T2的自动重装值为FD8F.
通过上图的时序图,我们也可以清晰的得到,在上位机和下位机,下位机的时钟频率是由程序规定的,而上位机的时钟频率是由人工设定的,我们只要知道,两个时钟频率是要完全一致的,不然收发数据没有办法正常进行。
(发送)当send信号拉低的时候,txd也拉低表示要进行数据通讯,这时候发送的数据在每个时钟信号高电平的时候进行变换,在时钟信号电平的时候稳定,这样子发送出去的数据就会严格有固定的电平波长和高电平波长,当上位机进行接收到时候,当他检测到接收端的电平拉低的时候也对时钟信号进行同步,把时钟信号的高电平同步到数据接收端第一次电平拉低时刻,然后在时钟信号的低电平期间进行数据采集,比如第第二个时钟信号低电平表示的是这时候数据端的电平状态表示的是数据的第三个bit正在等待捕获,所以,如果时钟必须严格一致就是这个原因。当整个过程完成的时候,TI置位,表示接收完成,所以我们可以一直监听TI的情况,同理,置位情况下要记得给他人工清零。
(接收)接收会有点不同,虽然他也是在时钟同步的情况下进行,但是他是在shift为高电平期间捕获讯号,(上位机可能也是这种情况,暂时没有找到更明确的资料),每个bit的变换时间很短,稳定时间很长,一般来说他是在时钟信号低电平中间进行信号捕获的。当整个过程完成的时候,RI置位,表示接收完成,所以我们可以一直监听RI的情况,同理,置位情况下要记得给他人工清零。
相关问答
单片机定时器 初始化什么意思?单片机定时器初始化是多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行控制,还是对系统下达运算指令都能通过单片机完成。由此...
单片机 在使用 定时器 时是用到了哪些引脚?一定是这些吗? - 懂得单片机使用定时器时,不用到任何引脚,因为定时器就好比一个时钟,它被安装在单片机内部,在接收到信号之后,就开始运行,一般使用定时器,通过编程的方案...
单片机 th0和tl0的功能?51单片机与T0相关的寄存器一共有4个,其中最主要的是TH0和TL0,这两个寄存器用于存放定时器T0的初值。其实T0的核心是一个计数器,启动以后,它就会在初值的基础...
51 单片机 T0 定时器 4种方式的定时时长分别是多少 - 懂得51单片机最大硬件定时时间,就是定时器能定时的时间,最长时间=65536*TcTc=fosc/12,fosc是单片机的晶振频率。以频率=12M为例吧,Tc=1us最大定时时间=6...
写出mcs-51系列 单片机 中 定时器的 功能?MCS-51系列单片机中的定时器具有多种功能。它们可以用作计时器,用于测量时间间隔。定时器还可以用作计数器,用于计数外部事件的发生次数。此外,定时器还可以产...
单片机定时器 一直执行吗?单片机定时器如果配置了自动重载,那是一直执行的。单片机定时器的原理就是给单片机定时器模块的计数单元赋一个初值,使能定时器后,计数器值开始在初值的基础...
51 单片机定时器 工作 模式 一,初值计算:当TC=3CB0H时,TH0和TL0各等于多少?望各位大侠多多指教,谢谢了?3CB0H,分别在TH0存放3CH、TL0存放B0H;它是十进制的15536;工作在模式一,将在65536时溢出,这样,计数值就是50000。如果是定时工作方式,将计数50000个机器周...
8051 单片机 中 定时器 工作 模式的 寄存器是?首先四中模式的前三种,t0和t1完全相同。而模式3只适合定时器t0,t0在该模式下被拆成两个独立的8位计数器th0,tl0,其中tl0可以为8为定时器或计数器,并且使用...
定时器 4种工作 模式的 最长延时时间?晶振的频率为12MHz,机器周期=12/Fosc=12/(12x10^6Hz)=1μs定时器/计数器工作方式1,是16位计数器,最大计数值=2^16=65536d,最大延时时间=655...
定时器 在 单片机的 哪个地方?定时器通常在单片机的外设部分,例如在通用定时器/计数器模块或专用定时器模块中。它可以用于产生精确的时间间隔或者周期性的信号。定时器由内部的时钟源和预...