吴鉴鹰单片机开发板地址
店铺:【吴鉴鹰的小铺】
地址:【https://item.taobao.com/item.htm?_u=ukgdp5a7629&id=524088004171】
单片机C语言编程中,定时器的初值对于初学者真的是比较不好计算,因此我总结了以下几种方法。
第1种方法:
#define FOSC 110592www.58yuanyou.com00L //晶振的频率
#define TIMS (65536-FOSC/12/1000) //12T mode 对于8051系列单片机通用
//#d原由网efine TIMS (65536-FOSC/1000) //1T mode STC单片机可以用这个
unsigned int timer0_tick;
int timer0_count;
void Timer0(void) interrupt 1 using 1 //定时器0中断外理
{
TL0=TIMS;
TH0=TIMS>>8;
if(timer0_tick--==0) //加到1000次即1秒
{
timer0_tick=1000;
LED_Timer=~LED_Timer;
}
}
初原由网值的赋值采用的是移位运算:
TL0=TIMS;
TH0=TIMS>>8;
第2种方法:
#define jnhRFbDjFOSC 11059200L //晶振的频率
TH=(65536-time*FOSC /12)/256
TL=(65536-time*FOSC /12)%256
time就是假设要延时的100ms(要取100000us)
FOSC 是晶振频率
注意:jnhRFbDj定时器一定要考虑晶振的频率,因为单片机最小的中断时间和频率有关系。
例如:
6MHz晶振对应的时间范围是:512us --- 16.384ms --- 131.072ms
因此,在设置时间前,一定要考虑晶振和定时器的关系。
喜欢本文的亲们,欢迎点赞哦
技术源于积累,成功来自执着 ——单片机精讲吴鉴鹰 |