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