微控制器C語言程式設計定時器的幾種表達方式

2021-08-26 14:20:37 字數 718 閱讀 3932

微控制器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;

第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

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

微控制器C語言程式設計定時器的幾種表達方式

微控制器c語言程式設計中,定時器的初值對於初學者真的是比較不好計算,因此我總結了以下幾種方法。第1種方法 define fosc 11059200l 晶振的頻率 define tims 65536 fosc 12 1000 12t mode 對於8051系列微控制器通用 define tims 65...

微控制器的定時器

定時器則是由微控制器自身提供的乙個非常穩定的計數器,這個穩定的計數器就是微控制器上連線的晶振部件,晶振經過12分頻之後提供給微控制器的只有1mhz的穩定脈衝 晶振的頻率是非常準確的,所以微控制器的計數脈衝之間的時間間隔也是非常準確的,這個準確的時間間隔是1微秒 12mhz晶振內部的工作頻率 時鐘脈衝...

微控制器定時器雙擊 關於51微控制器定時器的靈活使用

前段時間,做乙個專案,有串列埠收發指令判斷,按鍵型別判斷,長短按之類,power的定時關電,事件的輪詢掃瞄更新和display的定時掃瞄。這些要求就對定時器提出了要求,但是我的51微控制器只有兩個定時器,其中乙個又有debug口的波特率產生之用。於是乎我可以用的定時器就只剩下了乙個。怎麼辦?可能大家...