菏泽市建设局网站电话,东营市房产信息网,义乌搭建网站,如何去推广一个app定时器和计数器
51单片机有两组定时器/计数器#xff0c;因为既可以定时#xff0c;又可以计数#xff0c;故称之为定时器/计数器。定时器/计数器和单片机的CPU是相互独立的。定时器/计数器工作的过程是自动完成的#xff0c;不需要CPU的参与。51单片机中的定时器/计数器是…定时器和计数器
51单片机有两组定时器/计数器因为既可以定时又可以计数故称之为定时器/计数器。定时器/计数器和单片机的CPU是相互独立的。定时器/计数器工作的过程是自动完成的不需要CPU的参与。51单片机中的定时器/计数器是根据机器内部的时钟或者是外部的脉冲信号对寄存器中的数据加1。有了定时器/计数器之后可以增加单片机的效率一些简单的重复加1的工作可以交给定时器/计数器处理。CPU转而处理一些复杂的事情。同时可以实现精确定时作用。
定时器的工作原理
定时/计数器实质上是一个加1计数器。它随着计数器的输入脉冲进行自加1也就是每来一个脉冲计数器就自动加1,当加到计数器为全1时再输入一个脉冲就使计数器回零且计数器的溢出使相应的中断标志位置1向CPU发出中断请求定时/计数器中断允许时。如果定时/计数器工作于定时模式则表示定时时间已到如果工作于计数模式则表示计数值已满。 可见由溢出时计数器的值减去计数初值才是加1计数器的计数值。 定时器的控制
工作方式寄存器TMOD用于设置定时/计数器的工作方式低四位用于T0高四位用于T1。 GATE是门控位, GATE0时用于控制定时器的启动是否受外部中断源信号的影响。只要用软件使TCON中的TR0或TR1为1就可以启动定时/计数器工作GATA1时要用软件使TR0或TR1为1同时外部中断引脚INT0/1也为高电平时才能启动定时/计数器工作。即此时定时器的启动条件加上了INT0/1引脚为高电平这一条件。 C/T :定时/计数模式选择位。C/T 0为定时模式;C/T 1为计数模式。 M1M0工作方式设置位。定时/计数器有四种工作方式。 TCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控 制定时/计数器的启动和中断申请。
TF1TCON.7T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时CPU可随时查询TF1的状态。所以TF1可用作查询测试的标志。TF1也可以用软件置1或清0同硬件置1或清0的效果一样。TR1TCON.6T1运行控制位。TR1置1时T1开始工作TR1置0时T1停止工作。TR1由软件置1或清0。所以用软件可控制定时/计数器的启动与停止。TF0TCON.5T0溢出中断请求标志位其功能与TF1类同。TR0TCON.4T0运行控制位其功能与TR1类同。
初始化程序应完成如下工作
对TMOD赋值以确定T0和T1的工作方式。计算初值,并将其写入TH0、TL0或TH1、TL1。中断方式时则对EA赋值开放定时器中断。使TR0或TR1置位启动定时/计数器定时或计数。
实验代码
#include reg52.h
typedef unsigned char u8;
typedef unsigned int u16;sbit ledP2^0;void Timer0Init()
{TMOD|0x01;TH00XFC;TL00X18;EA1;ET01;TR01;
}void main(){Timer0Init();while(1);
}void Timer0() interrupt 1
{static u16 i;TH00XFC;TL00X18;i;if(i1000){i0;led~led;}}