以下为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){ //其他代码 } }
这样就实现了让程序 每秒或者每毫秒执行一个事件了,比如倒计时秒数之类的功能就都可以精准实现了