歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

單片機C語言編程定時器的幾種表達方式

單片機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

因此,在設置時間前,一定要考慮晶振和定時器的關系。

Copyright © Linux教程網 All Rights Reserved