以下为51单片机,11.0592的晶振

直接定义一个初始化时钟的函数,这里定义的是1毫秒,一般情况足够了

/*定时器0初始化*/
void Timer0Init(void)		//1毫秒@11.0592MHz
{
	TMOD &= 0xF0;		//设置定时器模式
	TMOD |= 0x01;		//设置定时器模式
	TL0 = 0x66;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
	ET0=1;    
	EA=1;      
}

定义时钟周期事件的函数 这个函数后面跟随着interrupt 1 系统会自动调用

Timer0_Routine() interrupt 1{//1毫秒周期事件
	static unsigned int T0Count;
	TL0=0x18;
	TH0=0xFC;
	T0Count++;
	if(T0Count>=1000){//每次达到1000毫秒,就是1秒,可以自定义一个每秒的周期事件函数,在此处调用
		T0Count=0;	   
		//shijian();每秒的事件 
	}
}


然后在函数入口处先调用一下  初始化一下 时钟就创建好了

void main(){
	Timer0Init();//初始化时钟   
	while(1){
	    //其他代码
	}
}

这样就实现了让程序  每秒或者每毫秒执行一个事件了,比如倒计时秒数之类的功能就都可以精准实现了