你好,定時器是獨立運行的,它不占用CPU的時間,不需要指令,只有調用對應的寄存器的時候才需要參與。
定時器/計數器由定時器0、定時器1、定時器方式寄存器TMOD和定時器控制寄存器TCON組成。
定時器0,定時器1是16位加法計數器,分別由兩個8位專用寄存器組成:定時器0由TH0和TL0組成,定時器1由TH1和TL1組成。
TL0、TL1、TH0、TH1的訪問地址依次為8AH~8DH,每個寄存器均可單獨訪問。定時器0或定時器1用作計數器時,對芯片引腳T0(P3.4)或T1(P3.5)上輸入的脈沖計數,每輸入一個脈沖,加法計數器加1;其用作定時器時,對內部機器周期脈沖計數,由于機器周期是定值,故計數值確定時,時間也隨之確定。
TMOD、TCON與定時器0、定時器1間通過內部總線及邏輯電路連接,TMOD用于設置定時器的工作方式,TCON用于控制定時器的啟動與停止。
6.1.1 計數功能
計數方式時,T的功能是計來自T0(P3.4)T1(P3.5)的外部脈沖信號的個數。
輸入脈沖由1變0的下降沿時,計數器的值增加1直到回零產生溢出中斷,表示計數已達預期個數。外部輸入信號的下降沿將觸發(fā)計數,識別一個從“1”到“0”的跳變需2個機器周期,所以,對外部輸入信號最高的計數速率是晶振頻率的1/24。若晶振頻率為6MHz,則計數脈沖頻率應低于1/4MHz。當計數器滿后,再來一個計數脈沖,計數器全部回0,這就是溢出。
脈沖的計數長度與計數器預先裝入的初值有關。初值越大,計數長度越小;初值越小,計數長度越大。最大計數長度為65536(216)個脈沖(初值為0)。
6.1.2 定時方式
定時方式時,T記錄單片機內部振蕩器輸出的脈沖(機器周期信號)個數。
每一個機器周期使T0或T1的計數器增加1,直至計滿回零自動產生溢出中斷請求。
定時器的定時時間不僅與定時器的初值有關,而且還與系統的時鐘頻率有關。在機器周期一定的情況下,初值越大,定時時間越短;初值越小,定時時間越長。最長的定時時間為65536(216)個機器周期(初值為0)。
6.2 定時器/計數器控制寄存器
與對定時器/計數器有關的控制寄存器共有4個:TMOD、TCON、IE、IP。IE、IP已在中斷一節(jié)中介紹,這里不再贅述。
6.2.1 定時器/計數器控制寄存器TCON
特殊功能寄存器TCON用于控制定時器的操作及對定時器中斷的控制。其各位定義格式如下。其中D0~D3位與外部中斷有關,已在中斷系統一節(jié)中介紹。
TF0和TF1:定時器/計數器溢出標志位。當定時器/計數器0(或定時器/計數器1)溢出時,由硬件自動使TF0(或TF1)置1,并向CPU申請中斷。CPU響應中斷后,自動對TF1清零。TF1也可以用軟件清零。
TR0和TR1:定時器/計數起運行控制位。
TR0(或TR1)=0,停止定時器/計數器0(或定時器/計數器1)工作。
TR0(或TR1)=1,啟動定時器/計數器0(或定時器/計數器1)工作。
可由軟件置1(或清0)來啟動(或關閉)定時器/計數器,使定時器/計數器開始計數。用指令SETB (或CLR)使運行控制位置1(或清0)。
中央處理單元(CPU)是定時器 的控制中樞,它按照定時器 系統程序賦予的功能接收并存儲從編程器鍵入的用戶程序和數據、檢查電源、存儲器I/O以及警戒定時器的狀態(tài);并能診斷用戶程序中的語法錯誤。當定時器 投入運行時,首先它以掃描的方式接收現場各輸入裝置的狀態(tài)和數據,并分別存入I/O 映象區(qū),然后從用戶程序存儲器中逐條讀取用戶程序,經過命令解釋后,按指令的規(guī)定執(zhí)行邏輯或算數運算的結果送入I/O 映象區(qū)或數據寄存器內,等所有的用戶程序執(zhí)行完畢之后,最后將I/O 映象區(qū)的各輸出狀態(tài)或輸出寄存器內的數據傳送到相應的輸出裝置,如此循環(huán)運行直到停止運行。