PIC16F877A的定時,計數(shù)器TMR1
發(fā)布時間:2012/6/12 19:57:52 訪問次數(shù):4123
PIC16F877A芯片有三HY628400LLG-55個不同的定時器,這里以TMR1為例來講解。
TMR1是一個1 6位的定時,計數(shù)器,圖3是簡化后的TMR1工作原理圖。
TMR1的訃數(shù)信號可以有2個來源,第一個來源是內(nèi)部時鐘(fosc)經(jīng)4分頻后得到,使用這一來源就是將TMR1作為定時器來使用。第二個來源是RCO引腳或者是RC1引腳,由T10SCEN選擇,該部分與本文無關(guān),不作展開說明。計數(shù)信號隨即送入前分頻器進行處理,可以對信號進行4種分頻處理,即1分頻、2分頻、4分頻和8分頻,這通過TICKPS1和”CKPSO兩位進行設(shè)定。經(jīng)過前分頻器后的信號可以直接送入計數(shù)器,也可以在通過同步處理后再進入計數(shù)器,這通過TISYNC位來設(shè)置。TMR10N作為計數(shù)信號的最后一道控制關(guān),只有該位為“1”計數(shù)信號才能進入計數(shù)器。
TMR1由TMRlH和TMRIL兩個8位的寄存器組成一個1 6位的計數(shù)器,每來一個計數(shù)脈>中,其值加1,當其計數(shù)值從OOOOH增加到FFFFH,再加1即回到OOOOH,此時產(chǎn)生中斷溢出標志TMR11F。如果中斷允許,那么CPU將接收到中斷請求標志。
TICON寄存器是控制TMR1工作模式最關(guān)鍵的一個寄存器,它的定義如表1所示,其中bit7和bit6沒有定義,其余各位的定義已在上文中描述。
在學(xué)習(xí)了PIC 16F877A的定時器和中斷系統(tǒng)后,下面就用定時中斷的方法點亮如圖4所示的LED點陣塊。
圖4中J1是編程和調(diào)試插座,J2是音頻信號輸入插座,點陣塊使用SD411988,由PORTB和PORT∞Ⅸ動列,而PORTD驅(qū)動行。PZ1和P22分別是100kfl和10k(l的排電阻;S1一S4是按鈕開關(guān)。
【程序分析】:main()函數(shù)調(diào)用Init_10 TMRl()對及定時器TMR1進行初始化。因為系統(tǒng)晶振頻率是12MHz,計數(shù)信號是12MHz的4分頻即3MHz,因此指令周期是0.333“s。定時初值設(shè)定為3000,因此定時周期是3000×0.3333~1000U s。main()函教在初始化工作結(jié)束及開啟中斷允許位,沒有什么事要做,使用for㈥:進入無限循環(huán),將所有工作交給中斷程序處理。
Hrl-ECH的C編譯器使用interrupt關(guān)鍵字來描述中斷處理程序,因此,void interrupt TimerlO是中斷處理程序,程序名Timerl可以自行定義。進入中斷處理程序后,用if(TMRlIF==1&&TMRlIE==1)語句查詢TMR11F及TMR lIE是否同時為1,如果是,說明確實是TMR1產(chǎn)生的中斷。每次中斷處理一列數(shù)據(jù),根據(jù)計數(shù)器靜態(tài)變量I的值來決定在16列中的哪一列顯示數(shù)據(jù),這通過對變量Vscan逐次右移來實現(xiàn)對待顯示列進行控制。
根據(jù)i的值從顯示緩j中區(qū)取得待顯示數(shù)據(jù),顯示緩/中區(qū)的數(shù)據(jù)在0—8之間,如果是0就不點亮任何一個LED,否則點亮相應(yīng)個數(shù)的LED,程序中通過if語句來判斷,如果顯示緩>中區(qū)中的值為0則送Oxff到PORTD,否則通過查Code[]表來確定應(yīng)該送到PORTD的數(shù)據(jù)。
TMR1是一個1 6位的定時,計數(shù)器,圖3是簡化后的TMR1工作原理圖。
TMR1的訃數(shù)信號可以有2個來源,第一個來源是內(nèi)部時鐘(fosc)經(jīng)4分頻后得到,使用這一來源就是將TMR1作為定時器來使用。第二個來源是RCO引腳或者是RC1引腳,由T10SCEN選擇,該部分與本文無關(guān),不作展開說明。計數(shù)信號隨即送入前分頻器進行處理,可以對信號進行4種分頻處理,即1分頻、2分頻、4分頻和8分頻,這通過TICKPS1和”CKPSO兩位進行設(shè)定。經(jīng)過前分頻器后的信號可以直接送入計數(shù)器,也可以在通過同步處理后再進入計數(shù)器,這通過TISYNC位來設(shè)置。TMR10N作為計數(shù)信號的最后一道控制關(guān),只有該位為“1”計數(shù)信號才能進入計數(shù)器。
TMR1由TMRlH和TMRIL兩個8位的寄存器組成一個1 6位的計數(shù)器,每來一個計數(shù)脈>中,其值加1,當其計數(shù)值從OOOOH增加到FFFFH,再加1即回到OOOOH,此時產(chǎn)生中斷溢出標志TMR11F。如果中斷允許,那么CPU將接收到中斷請求標志。
TICON寄存器是控制TMR1工作模式最關(guān)鍵的一個寄存器,它的定義如表1所示,其中bit7和bit6沒有定義,其余各位的定義已在上文中描述。
在學(xué)習(xí)了PIC 16F877A的定時器和中斷系統(tǒng)后,下面就用定時中斷的方法點亮如圖4所示的LED點陣塊。
圖4中J1是編程和調(diào)試插座,J2是音頻信號輸入插座,點陣塊使用SD411988,由PORTB和PORT∞Ⅸ動列,而PORTD驅(qū)動行。PZ1和P22分別是100kfl和10k(l的排電阻;S1一S4是按鈕開關(guān)。
【程序分析】:main()函數(shù)調(diào)用Init_10 TMRl()對及定時器TMR1進行初始化。因為系統(tǒng)晶振頻率是12MHz,計數(shù)信號是12MHz的4分頻即3MHz,因此指令周期是0.333“s。定時初值設(shè)定為3000,因此定時周期是3000×0.3333~1000U s。main()函教在初始化工作結(jié)束及開啟中斷允許位,沒有什么事要做,使用for㈥:進入無限循環(huán),將所有工作交給中斷程序處理。
Hrl-ECH的C編譯器使用interrupt關(guān)鍵字來描述中斷處理程序,因此,void interrupt TimerlO是中斷處理程序,程序名Timerl可以自行定義。進入中斷處理程序后,用if(TMRlIF==1&&TMRlIE==1)語句查詢TMR11F及TMR lIE是否同時為1,如果是,說明確實是TMR1產(chǎn)生的中斷。每次中斷處理一列數(shù)據(jù),根據(jù)計數(shù)器靜態(tài)變量I的值來決定在16列中的哪一列顯示數(shù)據(jù),這通過對變量Vscan逐次右移來實現(xiàn)對待顯示列進行控制。
根據(jù)i的值從顯示緩j中區(qū)取得待顯示數(shù)據(jù),顯示緩/中區(qū)的數(shù)據(jù)在0—8之間,如果是0就不點亮任何一個LED,否則點亮相應(yīng)個數(shù)的LED,程序中通過if語句來判斷,如果顯示緩>中區(qū)中的值為0則送Oxff到PORTD,否則通過查Code[]表來確定應(yīng)該送到PORTD的數(shù)據(jù)。
PIC16F877A芯片有三HY628400LLG-55個不同的定時器,這里以TMR1為例來講解。
TMR1是一個1 6位的定時,計數(shù)器,圖3是簡化后的TMR1工作原理圖。
TMR1的訃數(shù)信號可以有2個來源,第一個來源是內(nèi)部時鐘(fosc)經(jīng)4分頻后得到,使用這一來源就是將TMR1作為定時器來使用。第二個來源是RCO引腳或者是RC1引腳,由T10SCEN選擇,該部分與本文無關(guān),不作展開說明。計數(shù)信號隨即送入前分頻器進行處理,可以對信號進行4種分頻處理,即1分頻、2分頻、4分頻和8分頻,這通過TICKPS1和”CKPSO兩位進行設(shè)定。經(jīng)過前分頻器后的信號可以直接送入計數(shù)器,也可以在通過同步處理后再進入計數(shù)器,這通過TISYNC位來設(shè)置。TMR10N作為計數(shù)信號的最后一道控制關(guān),只有該位為“1”計數(shù)信號才能進入計數(shù)器。
TMR1由TMRlH和TMRIL兩個8位的寄存器組成一個1 6位的計數(shù)器,每來一個計數(shù)脈>中,其值加1,當其計數(shù)值從OOOOH增加到FFFFH,再加1即回到OOOOH,此時產(chǎn)生中斷溢出標志TMR11F。如果中斷允許,那么CPU將接收到中斷請求標志。
TICON寄存器是控制TMR1工作模式最關(guān)鍵的一個寄存器,它的定義如表1所示,其中bit7和bit6沒有定義,其余各位的定義已在上文中描述。
在學(xué)習(xí)了PIC 16F877A的定時器和中斷系統(tǒng)后,下面就用定時中斷的方法點亮如圖4所示的LED點陣塊。
圖4中J1是編程和調(diào)試插座,J2是音頻信號輸入插座,點陣塊使用SD411988,由PORTB和PORT∞Ⅸ動列,而PORTD驅(qū)動行。PZ1和P22分別是100kfl和10k(l的排電阻;S1一S4是按鈕開關(guān)。
【程序分析】:main()函數(shù)調(diào)用Init_10 TMRl()對及定時器TMR1進行初始化。因為系統(tǒng)晶振頻率是12MHz,計數(shù)信號是12MHz的4分頻即3MHz,因此指令周期是0.333“s。定時初值設(shè)定為3000,因此定時周期是3000×0.3333~1000U s。main()函教在初始化工作結(jié)束及開啟中斷允許位,沒有什么事要做,使用for㈥:進入無限循環(huán),將所有工作交給中斷程序處理。
Hrl-ECH的C編譯器使用interrupt關(guān)鍵字來描述中斷處理程序,因此,void interrupt TimerlO是中斷處理程序,程序名Timerl可以自行定義。進入中斷處理程序后,用if(TMRlIF==1&&TMRlIE==1)語句查詢TMR11F及TMR lIE是否同時為1,如果是,說明確實是TMR1產(chǎn)生的中斷。每次中斷處理一列數(shù)據(jù),根據(jù)計數(shù)器靜態(tài)變量I的值來決定在16列中的哪一列顯示數(shù)據(jù),這通過對變量Vscan逐次右移來實現(xiàn)對待顯示列進行控制。
根據(jù)i的值從顯示緩j中區(qū)取得待顯示數(shù)據(jù),顯示緩/中區(qū)的數(shù)據(jù)在0—8之間,如果是0就不點亮任何一個LED,否則點亮相應(yīng)個數(shù)的LED,程序中通過if語句來判斷,如果顯示緩>中區(qū)中的值為0則送Oxff到PORTD,否則通過查Code[]表來確定應(yīng)該送到PORTD的數(shù)據(jù)。
TMR1是一個1 6位的定時,計數(shù)器,圖3是簡化后的TMR1工作原理圖。
TMR1的訃數(shù)信號可以有2個來源,第一個來源是內(nèi)部時鐘(fosc)經(jīng)4分頻后得到,使用這一來源就是將TMR1作為定時器來使用。第二個來源是RCO引腳或者是RC1引腳,由T10SCEN選擇,該部分與本文無關(guān),不作展開說明。計數(shù)信號隨即送入前分頻器進行處理,可以對信號進行4種分頻處理,即1分頻、2分頻、4分頻和8分頻,這通過TICKPS1和”CKPSO兩位進行設(shè)定。經(jīng)過前分頻器后的信號可以直接送入計數(shù)器,也可以在通過同步處理后再進入計數(shù)器,這通過TISYNC位來設(shè)置。TMR10N作為計數(shù)信號的最后一道控制關(guān),只有該位為“1”計數(shù)信號才能進入計數(shù)器。
TMR1由TMRlH和TMRIL兩個8位的寄存器組成一個1 6位的計數(shù)器,每來一個計數(shù)脈>中,其值加1,當其計數(shù)值從OOOOH增加到FFFFH,再加1即回到OOOOH,此時產(chǎn)生中斷溢出標志TMR11F。如果中斷允許,那么CPU將接收到中斷請求標志。
TICON寄存器是控制TMR1工作模式最關(guān)鍵的一個寄存器,它的定義如表1所示,其中bit7和bit6沒有定義,其余各位的定義已在上文中描述。
在學(xué)習(xí)了PIC 16F877A的定時器和中斷系統(tǒng)后,下面就用定時中斷的方法點亮如圖4所示的LED點陣塊。
圖4中J1是編程和調(diào)試插座,J2是音頻信號輸入插座,點陣塊使用SD411988,由PORTB和PORT∞Ⅸ動列,而PORTD驅(qū)動行。PZ1和P22分別是100kfl和10k(l的排電阻;S1一S4是按鈕開關(guān)。
【程序分析】:main()函數(shù)調(diào)用Init_10 TMRl()對及定時器TMR1進行初始化。因為系統(tǒng)晶振頻率是12MHz,計數(shù)信號是12MHz的4分頻即3MHz,因此指令周期是0.333“s。定時初值設(shè)定為3000,因此定時周期是3000×0.3333~1000U s。main()函教在初始化工作結(jié)束及開啟中斷允許位,沒有什么事要做,使用for㈥:進入無限循環(huán),將所有工作交給中斷程序處理。
Hrl-ECH的C編譯器使用interrupt關(guān)鍵字來描述中斷處理程序,因此,void interrupt TimerlO是中斷處理程序,程序名Timerl可以自行定義。進入中斷處理程序后,用if(TMRlIF==1&&TMRlIE==1)語句查詢TMR11F及TMR lIE是否同時為1,如果是,說明確實是TMR1產(chǎn)生的中斷。每次中斷處理一列數(shù)據(jù),根據(jù)計數(shù)器靜態(tài)變量I的值來決定在16列中的哪一列顯示數(shù)據(jù),這通過對變量Vscan逐次右移來實現(xiàn)對待顯示列進行控制。
根據(jù)i的值從顯示緩j中區(qū)取得待顯示數(shù)據(jù),顯示緩/中區(qū)的數(shù)據(jù)在0—8之間,如果是0就不點亮任何一個LED,否則點亮相應(yīng)個數(shù)的LED,程序中通過if語句來判斷,如果顯示緩>中區(qū)中的值為0則送Oxff到PORTD,否則通過查Code[]表來確定應(yīng)該送到PORTD的數(shù)據(jù)。
上一篇:讓單片機并行工作
上一篇:音頻顯示窗的實現(xiàn)
熱門點擊
- PIC16F877A的定時,計數(shù)器TMR1
- 電動式儀表
- 模擬開關(guān)
- JFET模擬開關(guān)的設(shè)計
- 用洞洞板做一個簡易數(shù)字鐘擴展板
- 瑞典發(fā)明機器人芭蕾舞演員
- 元件及制作
- 單個功率模塊的結(jié)構(gòu)
- 電機
- 執(zhí)行器部分
推薦技術(shù)資料
- 中國傳媒大學(xué)傳媒博物館開
- 傳媒博物館開館儀式隆童舉行。教育都i國家廣電總局等部門... [詳細]
- CV/CC InnoSwitch3-AQ 開
- URF1DxxM-60WR3系
- 1-6W URA24xxN-x
- 閉環(huán)磁通門信號調(diào)節(jié)芯片NSDRV401
- SK-RiSC-SOM-H27X-V1.1應(yīng)
- RISC技術(shù)8位微控制器參數(shù)設(shè)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究