51单片机定时器Void

#include <REGX52.H>

void Timer0Init(void) //1毫秒@12.000MHz
{
//AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TMOD |= 0x01; //设置定时器模式

TL0 = 0x18; //设置定时初值
TH0 = 0xFC; //设置定时初值

TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1;
EA = 1;
PT0 = 0;
}

/*定时器中断函数模板
void Timer0_Routine() interrupt 1
{
static unsigned int T0Count;
TL0 = 0x18; //设置定时初值
TH0 = 0xFC; //设置定时初值
T0Count+=1;
if(T0Count>=1000){
T0Count = 0;
//1s执行一次中断函数
}
}
*/


注解:定时器加到最大值65536,设置起始值为64536,定时器1us进行一次+1,那么1000us后就会超出一次定时器范围,就会执行一次中断程序。那么就是1000us执行一次中断函数,也就是1ms执行一次,那么执行1000次就是1s

.h文件可在贴图里面看到