定时器和计数器
- 1、定时器和计数器的介绍
- 2、定时器是如何工作
- 3、寄存器
- 4、51单片机定时器简介(数据手册)
- 5、定时器中的寄存器(数据手册)
- 5.1、TCON(定时器控制寄存器)
- 5.2、TMOD(工作模式寄存器)
1、定时器和计数器的介绍
(1)定时器是单片机里面的一个内部外设,就是CPU的“闹钟”。CPU定时的时间段里面,CPU也能干别的事。当定的时间到了后,CPU再去干被指定的事。
(2)定时器其实就是用计数器实现的,计数器是记录脉冲的个数。计数器可以计算CPU外部脉冲的个数。
2、定时器是如何工作
(1)先设置好定时器的时钟源(既一个脉冲的持续的时间,一般不需要设置)
(2)初始化的时钟相关的寄存器
(3)设置定时的时间(通过设置脉冲的个数)
(4)设置中断要处理程序(时间到后被指点要做的事)
(5)打开定时器
(6)计时开始,时间到后产生中断,执行指点程序
3、寄存器
软件可以通过寄存器控制硬件,硬件也可以改变寄存器里面的值。
列如为什么0就能使LED灭,1就能使LED亮,这就和寄存器有关,
假如8位寄存器的第一位的控制LED灯的亮灭,1为灯亮,0为灯灭。其中寄存器怎样让LED灯亮和灭,这就牵扯到内部电路了。
我们只需要知道程序和硬件之间还有一个寄存器来作为桥梁,当程序在寄存器中放入1时,寄存器反应出灯亮。
硬件可以改变寄存器里面的值
列如按键控制,平常按键不安下时,对应的寄存器的值为1,当按下时,值变为0。
所以一般:
①->②
④->③->①->②
4、51单片机定时器简介(数据手册)
STC89C52内部一共有3个定时器,分别为T0,T1,T2。T0和T1是16位的定时/计数器,是定时器还是计数器取决于TMOD中的C/T。则一共能计数2的16次方个脉冲。
12时钟(12T)和6时钟(6T)的区别:
假如外部晶振为12MHZ,工作带12T的模式下,则内部时钟是频率为1MHZ,则一个脉冲的时间周期为1÷1MHZ=1us,如果工作在6T 的模式下,则内部时钟的频率为 2MHZ,一个脉冲的时间周期1÷2MHZ=0.5us
5、定时器中的寄存器(数据手册)
TL0为定时器/计数器T0的低8位,TH0为定时器/计数器T0的高8位(一共16位)。
TL1为定时器/计数器T1的低8位,TH1为定时器/计数器T1的高8位(一共16位)。
假如使用定时器T0要计数1000个脉冲,则为0X03E8(0000 0011 1110 1000)。
则高8位存放0000 0011,低8位存放1110 1000
5.1、TCON(定时器控制寄存器)
(1)8个位,但是有4个名字:TF、TR、IE、IT,每个名字的符号都有2个,后面分别带0和1,对应T0和T1。
(2TF:定时器(溢出)标志位,是只读(软件只是通过读取TF1来知道硬件的状态,而不用去写这一位来设置硬件的伏态)的。定时器定时时间到了后会做2件事情:第一个是把F标志改为1,第二个是产生中断让CPU去中断处理。TF是硬件清零的(由1变0是自动的,不需要软件来干预)。有一些CPu的设计是需要软件去清零的,这时候用户的程序就一定要记得给标志位清零,不然就不能重复进入中断。
(3)TR就是timer run,就是定时器的启动计数的开关。当我们把整个定时器初始化好了之后,我们给TR位写1就可以开启计数了。TR位和GATE位有一定关联性。
(4)GATE是TMOD寄存器中的,也有2个分别对应T0和T1。GATE位中文名叫门控位,工作方式是:当GATE=0时(相当于门是打开的,此时GATE位是可以忽略的),此时定时器开关就只受TR位影响。具体就是TR=1开启计数,TR=0结束计数。当timer处于定时器工作模式时GATE就要等于0;GATE一般是在timer处于计数器模式时用的。当timer用来计数时,很关键的就是什么条件下计数,什么条件下不计数。当GATE=0时计数条件只有TR1一个(TR1=1就计数,TR1=0就不计数),当GATE=1时是否计数不仅取决于TR1还取决于INT1引脚(P3.3),实际规则是:当TR1=1并且INT1引脚也为高电平时才会计数。
(5)IE也是个标志位,作用就是用来展示硬件的状态改变的。譬如IE1对应外部中断1(INT1),平时不发生INT1时IE1=0,当INT1发生中断时,硬件自动IE1=1,当CPU处理了INT1时硬件会自动给IE1=0(硬件自动清零)。
(6)IT是用来设置外部中断的中断触发方式的。所谓中断的触发方式,就是指硬件在某种条件下才会被判定为要产生中断,所以其实就是中断产生的条件。中断触发方式一般就是:边沿触发和电平触发2种。边沿触发又分为:上升沿触发、下降沿触发、双边沿触发;电平触发方式分为:高电平触发、低电平触发2种。
5.2、TMOD(工作模式寄存器)
(1)GATE上面已经讲过了
(2)C/T位,设置T0/T1工作在定时器模式还是计数器模式。1表示计数器,0表示定时器。
(3)M1 + M0,2个位一起来表示T0/T1处于哪种工作模式下,一般有4种:13位、16位、8位自动重载、双8位。