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