在微控制器程式設計中,有時候需要不同步長的定時器,我之前的做法是設定各種各樣的標誌位,然後在while(1)裡去處理,可是寫著寫著發現幾乎每個專案裡都會用到一些定時器,用之前標誌位的方法寫的程式看起來框架不是很好.
那麼就想著能不能寫個簡單點定時器函式呢?
首先軟體定時器應用於非作業系統中,非常適合我們微控制器這種前後臺模式.
我們先看下**,這個**我在51微控制器除錯通過.
soft_timer.h檔案
#ifndef __soft_tim_h_
#define __soft_tim_h_
#define max_soft_timer_num 10 //根據實際需求來定義大小
typedef char h_timer; //定時器控制代碼,一定是有符型變數哈
typedef unsigned int tim_cnt; //根據使用者需要來修改該變數型別
typedef struct
soft_timer;
extern soft_timer soft_timer[max_soft_timer_num];
h_timer creatsofttimer(tim_cnt setcnt);
void starttimer(h_timer timer_id);
void pausetimer(h_timer timer_id);
void killtimer(h_timer timer_id);
void scheduletimer(void);
#endif
soft_timer.c檔案
#include "soft_timer.h"
soft_timer soft_timer[max_soft_timer_num];
h_timer creatsofttimer(tim_cnt setcnt)
void pausetimer(h_timer timer_id)
void killtimer(h_timer timer_id)
//放在定時器裡呼叫
void scheduletimer(void)
void main()
51微控制器 定時器
定時 計數器的結構和工作原理 定時 計數器的實質是加1計數器 16位 由高8位和低8位兩個暫存器組成。80c51 微控制器定時 計數器的工作是由兩個特殊功能暫存器控制的。tmod是定時 計數器的工 作方式暫存器,確定工作方式和功能,低四位用於t0,高四位用於t1。t con是控制寄 存器,控制t0和...
51微控制器 定時器
標準的51微控制器內部有t0和t1兩個定時器。定時器的計數值儲存在暫存器中。th0 tl0用於t0,th1 tl1用於t1.定時器儲存暫存器 名稱描述 sfr位址 復位值th0 t0高位元組 0x8c 0x00 tl0t0低位元組 0x8a 0x00 th1t1高位元組 0x8d 0x00 tl1t...
微控制器的定時器
定時器則是由微控制器自身提供的乙個非常穩定的計數器,這個穩定的計數器就是微控制器上連線的晶振部件,晶振經過12分頻之後提供給微控制器的只有1mhz的穩定脈衝 晶振的頻率是非常準確的,所以微控制器的計數脈衝之間的時間間隔也是非常準確的,這個準確的時間間隔是1微秒 12mhz晶振內部的工作頻率 時鐘脈衝...