定時器的兩個工作模式:
(1) 定時器模式: (該模式可以用 STCQ軟件來直接得出定時器,而不用自己設定)定時器模式的原理:①由系統的時鐘振蕩器輸出脈沖經12分頻(1/12 us)后送來;加1計數器是對內部機器周期計數。計數值Nx機器周期,Tcy就是定時時間t。
51單片機內部有一個12MHZ的晶振:即時鐘周期=1/(12M) (S)= 1/12 us
51單片機一個指令周期(機器周期)是12個時鐘周期:即指令周期=12*1/12us= 1us
每經過一個機器周期(1us) , 內部的16位計數存器的值就會加1,直到這個寄存器裝滿時溢出。當加到溢出后發出一個溢出中斷,即硬件使TCON中TFO或TF1置1,我們程序可以捕獲到這個中斷,就可以知道此時經歷了(65535+1) us。
T0(T1)當做定時器來使用,就不用外部P3. 4(P3 5)引腳,是用內部機器周期計數實現定時的,當定時到就會弓|起中斷我們可以算出工作在定時模式時最高單次定時時間為65535*1.085us=時間(單位us) (最高單次定時時間大概在6毫秒左右,這也就是為什么STC軟件中為什么定時器只能做6毫秒以下時間的。
(2) 計數器模式
原理:②T0或T1引腳輸入的外部脈沖源。T0(P3.4引腳),T1 (P3.5引腳) 每來一個脈沖計數器加1 (共有16位計數器),當加到計數器為全1時,再輸入一個脈沖就使計數器回零,且計數器的溢出使 TCON中TFO或TF1置1,向CPU發出中斷請求(定時計數器中斷允許時)。
T0(T1)當做計數器來使用,才用到外部P3 4(P3.5)引|腳,檢測到1個脈沖,計數+1,當計數滿時就會引起中斷。