关于定时/计数器
定时/计数器:
51单片机有2个16位定时器/计数器:定时器0和定时器1。
这里所说的16位是指定时/计数器内部分别有16位的计数寄存器。
当工作在定时模式时,每经过一个机器周期的内部的16位计数寄存器的值就会加1,当这个寄存器装满时溢出。我们可以算出工作在定时模式时最高单次定时时间为65535×1.085μS=时间(单位μS)
当工作在技术器模式时,T0,T1每来一个脉冲计数寄存器加1。
65535: 16位的计数寄存器,最大为16个1,也就是65535。
最大定时: 65535×1.085=71105.475μS≈71.1mS
时钟周期:以11.0592MHZ为例,假如51单片机的时钟为11.0592MHZ,除以12后得到每秒执行的指令个数为条指令,取倒数将得到执行每条指令所需时间为1.085μS(一个周期)
定时器作用:
定时计数器可以用于精确事件定时,PWM脉宽调制,波形发生,信号时序测量的方面。
使用51定时/技术器步骤:
- 启动定时/计数器(通过TCON控制器)
- 设置定时/计数器(通过TMOD控制器)
- 查询定时/计数器是否溢出(读TCON内TF位)
计数器:每来一个脉冲计数寄存器加1。一个高电平一个低电平形成一个脉冲。
TMOD控制器中C/T位为功能选择位:为0时为定时器,为1时为计数器。
定时器举例:
TR0 = 1; // 定时器0工作
TMOD - 0X01; // 16位定时器/计数器
TH0 = 0X4B; // (65535-46082) / 256 高位赋值
TL0 = 0XFD; // (65535-46082)% 256 低位赋值
if(TF0 == 1) // 加满产生溢出;不用中断响应的情况下要软件清0。"置 ”1“ 为硬件置 “1” "
例如:
定时50毫秒(mS)= 50000 微秒(μS) //因为执行计数的加1为微秒级
50000÷1.085≈46082;
65535-46082 = 初值;
- 如果同时使用定时器计数器,都需要对同一个寄存位赋值时,可以用 |=(或等于)符号,相当于两个值进行求和,这样可以同时利用定时器和计数器。