|
C8051F020內部有5 個計數器/定時器:其中三個16 位計數器/定時器與標準8051 中的計數器/定時器兼容,還有兩個16 位自動重裝載定時器可用于ADC、SMBus、UART1 或作為通用定時器使用。這些計數器/定時器可以用于測量時間間隔,對外部事件計數或產生周期性的中斷請求。 將定時器與中斷系統(tǒng)的結合將給我們編程帶來很大的幫助,程序條理性強易編寫易讀。 下面我將利用可裝載的計數器中斷程序編寫流程總結如下: 一:定時器初始化 1:停止定時器,清中斷溢出位。 通過設置SFR中TMRnCN,停止將TMRnCN^2置0,清中斷溢出位TMRnCN^7。 2:計數值和裝載值的設置 通過SFR中TMRnL,TMRnH,TMRnRLL, TMRnRLH設置。 3:打開中斷系統(tǒng)允許位 通過SFR中的IE,EIE1,EIE2實現,將對應定時中斷位置1即可允許。 4:打開定時器 通過TMRnCN^2置1啟動。 二:中斷部分 1:打開全局中斷 將IE^7置1。一般將該部分寫在定時器初始化前面。 2:中斷服務程序(ISR) 以C語言為例 void ADD (void) interrupt N { 具體程序 } 其中ADD位程序名,N為中斷優(yōu)先級(具體詳見相應MCU說明書) 注意:由于定時器溢出位不能硬件清零,需要在中斷程序編寫清零程序,如所使用定時器為非重載,可以在中斷程序中編寫計數值的初始化。 |