微控制器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口的波特率產生之用。於是乎我可以用的定時器就只剩下了乙個。怎麼辦?可能大家...