定時器計數器_第1頁
定時器計數器_第2頁
定時器計數器_第3頁
定時器計數器_第4頁
定時器計數器_第5頁
已閱讀5頁,還剩21頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

定時器計數器第一頁,共二十六頁,編輯于2023年,星期日8.1定時器/計數器模塊的基本用途

在單品機芯片內部配置的各種外圍設備模塊中,定時器/計數器模塊是一種應用比較靈活的外設模塊。那么,定時器/計數器模塊究竟有什么用途呢?經過初步分析和歸納,此類模塊大致上可以適用于以下3類不同的應用場合:第二頁,共二十六頁,編輯于2023年,星期日

(1)在一些單片機的應用項目中,又是要求單片機在其端口引腳上,向外部電路送出一系列符合一定時序規范的方波信號。例如,空調機中的變頻控制,VCD,光盤驅動器,照相機,打印機提示音的音調產生,PWM脈沖寬度調制信號的形成,等等。在對這些應用項目的單片機進行編程時,需要在程序的執行過程中,插入一定時長的延時。對此有兩種方案可供選擇,一直利用芯片內部現成的硬件資源——可編程定時器,來精確控制輸出實現預定的時間間隔;二是采用軟件手段——插入一段延時程序。關于軟件手段延時,在“PIC匯編語言程序設計基礎”章節中已經做過介紹,其缺點,傳真機中不僅電動機的驅動,電器設備的是需要占用“機時”,也就是耗費CPU的“精力”。在此僅對第一種方法中用到的硬件資源進行講解。第三頁,共二十六頁,編輯于2023年,星期日

(2)在另外一些單片機的應用項目中,經常要求單片機在其引腳上,檢測外部電路送來的一系列方波信號的脈寬、周期或頻率,以便單片機接收外部電路的輸入信號或通信信號。例如,遙控電視機中的紅外遙控信號的接收,速度里程表中的轉速檢測,超聲波測距儀中發射波與反射波之間的時間間隔的精確測量,等等。這類應用程序的編寫,會用定時器來對“視線未知”的時間間隔進行精確計時。第四頁,共二十六頁,編輯于2023年,星期日

(3)還有一些單片機應用項目中,需要單片機對其端口引腳上輸入的有外部事件產生的觸發信號進行精確的計數,依據計數結果來控制完成相應的動作。例如,在飲料的生產和包裝車間里,傳送帶上的易拉罐在移動時,可以借助于紅外線透射或者反射方式,獲得觸發信號并且送入單片機的相應引腳,有單片機內部的可編成計算器來對移過紅外探頭的易拉罐數量進行計數。每當計數器的累加值達到預設值時,就控制相應裝置完成封箱操作。第五頁,共二十六頁,編輯于2023年,星期日8.2PIC系列單片機定時器/計數器TMR0模塊的特性

Microchip公司產生的PIC系列單片機也不例外,各款產品內部全部配備有定時器/計數器模塊,并且配備的數量也不盡相同。早期研制的PIC單片機產品系列,例如PIC12CXXX/CEXXX系列,PIC16C5X/5XX系列、PIC16C8X/F8X系列中的全部產品、PIC16C62X/CE62X系列中的部分產品,只配置了一個定時器/計數器模塊。除了在最早的PIC16C5X系列彈片機中,把該模塊叫做RTCC模塊之外,在其余所有PIC單片機中都把該模塊叫做TMR0模塊。近期新研制的PIC單片機產品系列中,大都配置了多個定時器/計數器模塊,例如PIC17CXXX系列和PIC18CXXX系列都配置了4個定時器/計數器模塊。第六頁,共二十六頁,編輯于2023年,星期日

在本書中當作樣板講解的PIC16F87X系列單片機都配置了3個定時器/計數器模塊,分別記為TMR0、TMR1、TMR2。需要事先聲明的是,TMR0、TMR1、TMR23個定時器/計數器模塊,不僅電路結構上均不相同,而且涉及的初中也各有所異,但是,三者之間也存在著許多的共同之處。具體的分析如下:不同點有:TMR0為8位寬,有一個可選的預分頻器,用于通用目的;TMR1為16位寬,附帶一個可編程的預分頻器,還附帶一個可選的低頻時基振蕩器,適合與CCP(捕捉/比較/脈寬調制)模塊配合使用來實現輸入捕捉或輸出比較功能;TMR2為8位寬,同時附帶一個可編程的預分頻器和一個可編程的后分頻器,還附帶一個周期寄存器和比較器,適合與CCP模塊配合使用來實現PWM脈沖寬度調制信號的產生。第七頁,共二十六頁,編輯于2023年,星期日

相同點:它們的核心部分都是一個由時鐘信號觸發的按遞增規律(即累加方式)工作的循環計數器;都是從預先設定的某一初始值(或0)開始記起,在累積到超過最大值(或者預先設定的某一終了值)時產生溢出,并且同時會建立一個相應的溢出標志(即中斷標志位):對于它們的編程方法也大同小異。因此,我們打算首先從中選擇一款具備通用性、代表性和相對簡單的定時器/計數器,也是各種檔次、各款PIC單片機型號內部,普遍都配置了的定時器/計數器模塊TMR0,作為本章講解的模型和重點。至于其他2個定時器/計數器模塊TMR1和TMR2,將在后面設專門章節另行講解。這樣安排的目的主要是,為了更好的適應初級讀者,以循序漸進的方式接收和認識新技術新知識的需要第八頁,共二十六頁,編輯于2023年,星期日定時器/計數器TMR0具有以下特性:是一個8位寬的由時鐘信號上升沿觸發的循環累加計數器;TMR0也是一個文件寄存器區域內統一編址的寄存器,核心地址為01H或101H;用戶用軟件方式可直接讀書或寫入計數器的內容;具有一個可選用的8位可編程預分頻器;用于累加計數的信號源可選擇內部或外部時鐘信號源,也就是即可工作于定時模式,又可工作于計數器模式;當時用外部觸發信號作為時鐘信號源時可由程序定義上升沿或下降沿觸發有效;據有溢出中斷功能。第九頁,共二十六頁,編輯于2023年,星期日8.3與定時器/計數器TMR0模塊

有關的寄存器現在讓我們做一下總結歸納,在PIC16F87X單片機的RAM數據存儲器區域,與定時器/計數器TMR0模塊有關的特殊功能寄存器共有四個,分別是8位寬的累加計數寄存器TMR0、中斷控制寄存器INTCON、選項寄存器OPTION和端口RA方向控制寄存器TRISA,如表8.1所示。第十頁,共二十六頁,編輯于2023年,星期日表8.1與TMR0相關的寄存器寄存器名稱寄存器符號寄存器地址寄存器內容bit7bit6bit5bit4bit3bit2bit1bit0定時器/計數器TMR001H/101H8位累加計數寄存器選項寄存器OPTION_REG81H/181HRBPUINTEDGT0CST0SEPSAPS2PS1PS0中斷控制寄存器INTCON0BH/8BH/10BH/18BHGIEPEIET0IEINTERBIET0IFINTFRBIFA口方向寄存器

TRISA85H__TRISA5TRISA4TRISA3TRISA2TRISA1TRISA0第十一頁,共二十六頁,編輯于2023年,星期日選項寄存器OPTION_REGbit7bit6bit5bit4bit3bit3bit1bit0RBPUINTEDGT0CST0SEPSAPS2PS1PS0表8.2選項寄存器OPTION_REG各位分布PS2~PS):分頻器分頻比選擇位。如表8.3所列。PSA:分頻器分配位

1=分頻器分配給WDT

▲0=分頻器分配給TMR0第十二頁,共二十六頁,編輯于2023年,星期日PS2~PS0TMR0比率WDT比率0001:21:10011:41:20101:81:40111:161:81001:321:161011:641:321101:1281:641111:2561:128表8.3PS2~PS0對應的分頻比第十三頁,共二十六頁,編輯于2023年,星期日T0SE:TMR0的時鐘源觸發邊沿選擇位。只有當TMR0工作于計數器模式時,該位才發揮作用。

1=外部時鐘T0CK1下降沿觸發TMR0遞增;

▲0=外部時鐘T0CK1上升沿觸發TMR0遞增。

T0CS:TMR0的時鐘源選擇位。▲

1=由T0CK1外部引腳輸入的脈沖信號作為計數器TMR0時鐘源;▲

0=由內部提供的指令周期信號作為定時器TMR0時鐘源。2.中斷控制寄存器INTCON(見表8.4)bit7bit6bit5bit4bit3bit2bit1bit0GIEEEIET0IEINTERBIFT0IFINTFRBIF表8.4中斷控制寄存器INTCON各位分布第十四頁,共二十六頁,編輯于2023年,星期日

中斷控制寄存器也是一個可讀/寫的寄存器與TMR0有關的各位的含義如下:T0IF:TMR0溢出標志位(也就是溢出中斷標志)。

1=TMR0發生溢出;

0=TMR0未發生溢出。T0IE:TMR0溢出中斷使能位。

1=TMR0允許溢出后產生中斷;

0=TMR0屏蔽溢出后產生中斷。GIE:全局中斷使能位。

1=允許CPU相應所有外圍設備模塊產生的中斷請求;

0=允許CPU相應所有外圍設備模塊產生的中斷請求。第十五頁,共二十六頁,編輯于2023年,星期日3.端口RA方向控制寄存器TRISA(見表8.5)表8.5RA端口方向寄存器各位TRISA分布bit7bit6bit5bit4bit3bit2bit1bit0——TRISA5TRISA4TRISA3TRISA2TRISA1TRISA0TRISA4:與TMR0有關的只有一個位。由于TMR0模塊的外部輸入信號T0CK1與端口引腳RA4是復合在同一條引腳上的,當TMR0工作于計數器模式時,要求該腳必須設定為輸入方式,作為T0CK1信號專用輸入引腳,即:

1=端口引腳RA4設定為輸入,以便從該腳T0CK1送進信號第十六頁,共二十六頁,編輯于2023年,星期日定時器/計數器模塊的結構方框圖如圖8.1所示。○十PSAPS2:PS0MUX(1)MUX(2)同步邏輯TMR0寄存器MUX(3)MUX(4)8位預分頻器8選1選擇開關看門狗定時器8數據總線設置T0IF標志位WDT超時信號輸出T0SET0CSPSACLKOUT(fout/4)內部信號指令周期RA4/T0CK1外部引腳11110000WDT使能位PSA圖8.1TMR0+分頻器+看門狗結構圖第十七頁,共二十六頁,編輯于2023年,星期日

在剖析TMR0的電路是應遵循“化繁為簡”的原則,不妨將整個電路功能簡化為3個相對獨立的主要組成部分:計數寄存器TMR0、分頻器和看門狗定時器WDT。參見如圖8.2所示的簡化方框圖。其中,看門狗定時器WDT在以后的章節中將作為專題介紹。預分頻器TMR0內部信號外部信號WDT8超時溢出溢出中斷T0CS數據總線PSA100100110⑴⑵⑶⑷第十八頁,共二十六頁,編輯于2023年,星期日

只是因為看門狗在電路上與TMR0之間存在一定的關聯,并且與TMR0共同分享同一個分頻器,于是兩者就有了同時出現在同一個章圖上的理由。圖8.3就是將看門狗定時器WDT剔除之后帶有可編程預分頻器的TMR0模塊的方框圖。預分頻器TMR0寄存器與內部時鐘同步溢出置位T0IF數據總線1010RA4/T0CK1T0SE異或門fosc/4MUX⑴MUX⑵PSoutPSoutPSAPS2~PS0T0CS圖8.3帶有可編程分頻器TMR0的模塊方框圖

第十九頁,共二十六頁,編輯于2023年,星期日

在圖8.2的簡化方框圖中,3個組成部分之間借助于3支由同一個PSA信號控制的切換開關MUX⑵、MUX⑶和MUX⑷相互聯結在一起.MUX⑵、MUX⑶和MUX⑷3只切換開關還可以理解為一只帶有3組單刀雙擲轉換開關的繼電器的3組觸點,如圖8.4所示.當PSA控制斷送來邏輯0低電平信號時,3開關靠自身彈力倒向靜合觸點“0”一端;而當PSA端送來邏輯1高電平信號時,繼電器得電吸合,3組開關靠磁力轉換到動合“1”一側。010011A1A2A3B1B2B3PSA圖8.4帶有3組單刀雙擲轉換開關的繼電器第二十頁,共二十六頁,編輯于2023年,星期日8.4.1分頻器

看門狗定時器WDT與TMR0共同分享同一個分頻器,但兩者不能同時使用。也就是說,在某一時刻分頻器只能分配給兩者當中的WDT或著TMR0。與TMR0配合使用時,它是以一個“預”分頻器的驕色出現在TMR0的輸入信號路徑中的;而與WDT配合使用時,它是以一個“后”分頻器的角色出現在WDT的輸出信號路徑中的。分頻器實際上也是一個8位累加計數器,不過它不能像TMR0那樣通過內部數據總線用程序進行讀、寫操作,并且它只能配合TMR0或WDT起分頻作用。由于它主要用來與TMR0配合工作,因此在廠家提供的產品手冊中總是習慣的把它叫做“預分頻器”,其實把它叫做“分頻器”筆者認為更確切,并且也不會產生任何舞會和影響。分頻器的電路結構示意圖如圖8.5所示,可以把它看作有2片CMOS通用集成電路構成,一片是12位二進制計數器CD4040(在此僅使用低8位),一片是8選1模擬開關CDCD4051(或者是一片8選1數據選擇器74LS1151)。當開關切換到Q1點時,時鐘信號CLOCK經過1級二進制分頻后送到OUT端,分頻為1:2;當開關切換到Q2點時,時鐘信號CLOCK經過2級二進制分頻后送到OUT端,分頻為1:4;當開關切換到Q3點時,時鐘信號CLOCK經過3級二進制分頻后送到OUT端,分頻為1:8;……;當開關切換到Q8點時,時鐘信號CLOCK經過8級二進制分頻后送到OUT,分頻比為1:256。開關的切換位置取決于PS2~PS0的值,也就是由PS2~PS0設定分頻比。第二十一頁,共二十六頁,編輯于2023年,星期日PS2PS1PS0OUTCLOCKQ7Q61Q4Q5Q3Q2Q1Q0圖8.5分頻器等效電路分頻器的功能就是將進入TMR0的時鐘信號或從WDT送出的時鐘信號頻率除以一個指定的倍數,這個倍數就是分頻筆,又OPTION_REG寄存器中的PS2~PS0決定。第二十二頁,共二十六頁,編輯于2023年,星期日

幾經將分頻器配置給WDT還是TMR0,這就要有控制信號PSA的邏輯電平來決定,當PSA為低電平時,分頻器歸TMR0所有,進入累加計數器TMR0的時鐘信號,都要經過分頻器;而當PSA為高電平時,分頻器與TMR0個例,進入TMR0的時鐘信號,不能再經過分頻器。應注意,當分頻器分配給TMR0時,任何以TMR0為目標的寫操作指令(如CLRF1,MOVWF1)都會同時將分頻器清0。同理,當分頻器分配給WDT時,一條清WDT的指令(CLRWDT)將會同時清0其分頻器。這里指的是分頻器清0,而分頻比和分頻對象并不會改變。第二十三頁,共二十六頁,編輯于2023年,星期日8.4.2TMR0累加計數寄存器

顧名思義,定時器/計數器TMR0模塊既可以作為定時器使用,也可以作為計數器使用,或者說,TMR0具有定時器和計數器兩種工作模式。實際上,兩種模式之間的主要差異就是送入累加計數寄存器TMR0的觸發信號的來源不同而已,(這里所說的觸發信號指的是數字電路學科中的時鐘信號的概念,所以也可以叫做時鐘信號)。TMR0的工作模式由T0CS位,即選項寄存器OPTION_REG位5決定,如表8.6所列。T0CSTMR0工作模式觸發信號的來源0定時器計數器的觸發信號取自內部指令周期

1數器計數器的觸發信號取自外部引腳T0CK1點平的上升沿/下降沿表8.6TMR0的工作模式第二十四頁,共二十六頁,編輯于2023年,星期日1.定時器模式

當T0CS(OPTION_REG<5>)=0時,TMR0模塊北設置為定時器模式,觸發信號源取自于芯片內部的指令周期信號。也常被說成是,指令周期信號作為累加器的時鐘信號源。在定時器工作

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論