EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机C语言编程定时器的几种表达方式
. M1 O' D6 b$ g8 m- y1 K, c$ s
/ b+ `! e0 E0 e0 f; {( C/ P. D* m' `: n
单片机C语言编程中,定时器的初值对于初学者真的是比较不好计算,因此我总结了以下几种方法。 第1种方法: #define FOSC 11059200L //晶振的频率 #define TIMS (65536-FOSC/12/1000) //12T mode 对于8051系列单片机通用 //#define 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 FOSC 11059200L //晶振的频率 TH=(65536-time*FOSC /12)/256 TL=(65536-time*FOSC /12)%256 time就是假设要延时的100ms(要取100000us) FOSC 是晶振频率 注意:定时器一定要考虑晶振的频率,因为单片机最小的中断时间和频率有关系。 例如: 6MHz晶振对应的时间范围是:512us --- 16.384ms --- 131.072ms 因此,在设置时间前,一定要考虑晶振和定时器的关系。 2 C( y' n9 x0 P, M/ y& X( k& \" U
|