1.利用stc-isp生成代码
选择定时器计算器,将频率改为12mhz,单位为毫秒,定时长度为1
复制下面代码
void Timer0Init(void) //1毫秒@12.000MHz
{AUXR |= 0x80; //定时器时钟1T模式TMOD &= 0xF0; //设置定时器模式TL0 = 0x20; //设置定时初值TH0 = 0xD1; //设置定时初值TF0 = 0; //清除TF0标志TR0 = 1; //定时器0开始计时
}
2.在数据手册查找中断的查询次序
由下表,定时器0的查询次序为1
3.定时器代码
#include "tim.h"void Timer0Init(void) //1毫秒@12.000MHz
{AUXR |= 0x80; //定时器时钟1T模式TMOD &= 0xF0; //设置定时器模式TL0 = 0x20; //设置定时初值TH0 = 0xD1; //设置定时初值TF0 = 0; //清除TF0标志TR0 = 1; //定时器0开始计时ET0=1; //定时器0中断开关
}
主函数对定时器的应用
#include "tim.h"
#include "init.h"
#include "led.h"
//每一个变量前都标注类型,方便根据名字判断变量类型
//timer
unsigned long ulms=0;
unsigned int uiLed_Dly=0;
//led
unsigned char ucLed=0x00;void Led_Proc(void);void main(void)
{Cls_Peripheral();Timer0Init();EA=1;//中断总开关while(1){Led_Proc();}
}
void Led_Proc(void)
{if(uiLed_Dly<200)return;uiLed_Dly=0;ucLed ^=0X01;// 0000 0001异或:与零不变,与一取反Led_Disp(ucLed);
}//中断服务函数
void Time_0(void) interrupt 1
{ulms++;uiLed_Dly++;
}