🌈个人主页:会编辑的果子君
💫个人格言:"成为自己未来的主人~"
软件延时的缺点
延时过程中,CPU时间被占用,无法进行其他任务,导致系统效率降低,延时时间越长,该缺点就越明显,因此软件延时只适用于短暂延时或简单项目。
定时/计数器
单片机中有多个小闹钟,可以帮助我们实现延时,这些小闹钟就是"定时器"
1T单片机最多支持4个16位定时器,2个和传统51单片机完全一致,为T0,T1,另外2通道捕获/比较单元(PWM/PCA/CCP),也可用来在实现两个定时器
我们只讲T0,每个定时/计数器既可以实现定时功能,也可以实现计数功能
定时/计数器0的工作原理
在定时方式1下,定时/计数器0的核心是一个16位宽的由计数脉冲触发的按递增规律(即累加方式)工作的循环累加计数器(TH0+TL0),从预先设定的初始值开始,每来一个计数脉冲就+1,当加到计数器为全1时,再输入一个脉冲,就会发生溢出现象,计数器回零,同时产生溢出中断请求信号(TF0置1),如果定时/计数器工作于定时模式,则表示定时时间已到
1T的8051单片机,为了兼容传统8051,定时器0和定时器1复位后是传统8051的速度,即12分频,也就是每12个震荡周期产生一个计数脉冲
定时器溢出
什么是溢出?
任何一个计数范围有限的系统,均存在溢出现象,系统的可表达数的个数,成为模
定时器溢出时会导致定时器溢出中断请求,和该中断是否使能无关
80C51的定时/计数器
实现定时功能,比较方便的办法是利用单片机内部的定时/计数器,也可以采用下面三种方法
软件定时
软件定时不占用硬件资源,但占用了CPU时间,降低了CPU的利用率
采用基电路定时:
例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路,但在硬件连接号以后,定时值与定时范围不能由软件进行控制和修改,即不可编程
采用可编程芯片定时
这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵活,在单片机的定时/计数器不够用时,可以考虑进行拓展
定时/计数器的结构和工作原理
定时/计数器的结构
定时/计数器的是指加1计数器(16位),由高8位和低8位两个寄存器组成,TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能:TCON是控制寄存器,控制T0,T1的启动和停止及设置溢出标志
加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来:一个是T0或T1引脚输入的外部脉冲源,每来一个脉冲计数器加一,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到,如果工作于计数模式,则表示计数值已满
可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值
设置为定时器模式时,加一计数器是对内部机器周期计数(一个机器周期等于12个震荡周几,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t
设置为计数器模式,外部事件计数脉冲由T0或T1引脚输入到计数器,在每个机器周期的S5P2期间采样T0,T1引脚电平,当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加一,更新的计数值在下一个机器周期的S3P1期间装入计数器,由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少需要维持一个机器周期,当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2微秒