- //11.0592MHz 10mS重载值(65536-9216)
- #define T_RELOAD_ (65536-9216)
- #define T_RELOAD_LO (T_RELOAD_ & 0x00FF)//等于0
- #define T_RELOAD_HI (T_RELOAD_ >> 8)
- //T_RELOAD_LO为0,代码如下.
- void T0_int(void) interrupt 1
- {
- TH0 = T_RELOAD_HI;
- //代码
- }
- //12MHz 10mS重载值(65536-10000)
- #define T_RELOAD_ (65536-10000)
- #define T_RELOAD_LO (T_RELOAD_ & 0x00FF)//等于240
- #define T_RELOAD_HI (T_RELOAD_ >> 8)
- //T_RELOAD_LO不为0,代码如下.
- void T0_int(void) interrupt 1
- {
- unsigned int i;
- TR0 = 0;
- i=T_RELOAD_+15+(TL0|(TH0<<8));
- //修正值15是T0由关闭到开启的机器周期数.要看汇编代码调整.
- TL0=(unsigned char)i;
- TH0=(unsigned char)(i>>8);
- TR0 = 1;
- //代码
- }
上述2段代码都能实现精确定时,无累积误差.可以看出,使用11.0592M晶振代码更简单,效率更高.
|