定時器函數
時鐘周期:
1/時鐘源,在我現在這塊板子上,晶振頻率是11.0592M,也就是時鐘周期是 1/11059200秒
機器周期:
壹般51單片機是12個時鐘周期,我的板子也就是 12/11059200秒
單次定時最長時間:
如果是16位的計數器,16位最大值是65535,***可計數65536次。基本的常數壹定要記住,還要記住8位最大值是255,***可計數256次,還要記住8位上每位代表的數值。
12 * 65536/11059200 = 0.0711 s,也就是,71 ms內的定時可以單次定時就完成。如果定時時間超過71 ms,就要循環了。
壹次定時需要幾次機器周期:
計算公式:定時秒數/機器周期
比如我要定時1秒, 1/(12/11059200)= 921600次,16位計數器最大可計數65536次,921600次早就益出了。我們可以每次定時10 ms,循環100次就可以定時1秒了,1 s縮小100百倍就是10 ms, 也就是每次需要計數9216次。
確實計數器初始值:
定時10 ms時,如果計數器從0開始計數,我們就不知道什麽時候到了9216次。所以應該計數了9216次,16位計數器最多計數95536次,然後就溢出,壹溢出TCON的TF位就會置1,我們只要經常檢測TF位就可以知道什麽時候完成10ms的定時了。
計算公式:計數器初始值=最大計數次數 - 需要計數次數
如果定時10 ms,計數器的初始值就是 65536 - 9216
計算計數器的高位和低位:
16位的計數器,也就是兩個8位組成,8位的最大計數次數是256。所以:
計數器高位 = 初始值/256
計數器低位 = 初始值%256