版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、PICPIC單片機原理及應(yīng)用單片機原理及應(yīng)用第五章第五章 功能模塊功能模塊1主要內(nèi)容主要內(nèi)容第第1 1節(jié)節(jié) I/O I/O端口端口I/OI/O端口介紹端口介紹I/OI/O端口的控制方法端口的控制方法I/OI/O端口的應(yīng)用舉例端口的應(yīng)用舉例I/OI/O端口實驗端口實驗輸出數(shù)據(jù)時輸出數(shù)據(jù)時輸出使能輸出使能輸出使能輸出使能=1輸出數(shù)據(jù)輸出數(shù)據(jù)輸出數(shù)據(jù)輸出數(shù)據(jù)輸出數(shù)據(jù)輸出數(shù)據(jù)1.1 I/O1.1 I/O端口介紹端口介紹1. I/O1. I/O端口結(jié)構(gòu)圖端口結(jié)構(gòu)圖輸入數(shù)據(jù)時輸入數(shù)據(jù)時輸入使能輸入使能輸入使能輸入使能=0輸入數(shù)據(jù)輸入數(shù)據(jù)輸入數(shù)據(jù)輸入數(shù)據(jù)輸入引腳數(shù)據(jù)輸入引腳數(shù)據(jù)數(shù)據(jù)傳送給數(shù)據(jù)總線數(shù)據(jù)傳送給數(shù)
2、據(jù)總線52. I/O 2. I/O 端口特點端口特點所有所有I/O I/O 輸入端口都輸入端口都是施密特觸發(fā)器輸是施密特觸發(fā)器輸入,以增強抗干擾入,以增強抗干擾性。性。有些端口除有些端口除VDDVDD、VSSVSS、MCLR MCLR 和和OSC1/CLKIOSC1/CLKI之外為之外為多功能復(fù)用端口。多功能復(fù)用端口。I/O I/O 引腳可復(fù)用多種引腳可復(fù)用多種外設(shè)功能外設(shè)功能1.1 I/O1.1 I/O端口介紹端口介紹6注:復(fù)用多種外設(shè)功能時,名字在前的外設(shè)優(yōu)先級高注:復(fù)用多種外設(shè)功能時,名字在前的外設(shè)優(yōu)先級高71.2 I/O1.2 I/O端口控制端口控制1. I/O1. I/O端口分組管理
3、端口分組管理82. I/O2. I/O端口的控制寄存器端口的控制寄存器TRISxTRISx寄存器:寄存器:I/OI/O端口方向控制寄存器。端口方向控制寄存器。TRISxTRISx的位為的位為“1“1時,其對應(yīng)的時,其對應(yīng)的I/O I/O 端口為輸入。端口為輸入。TRISxTRISx的位為的位為“0“0時,其對應(yīng)的時,其對應(yīng)的I/O I/O 端口為輸出。端口為輸出。復(fù)位以后,所有端口引腳被定義為輸入。復(fù)位以后,所有端口引腳被定義為輸入。PORTxPORTx寄存器:寄存器:I/OI/O端口讀引腳電平狀態(tài)寄存器。讀時,端口讀引腳電平狀態(tài)寄存器。讀時,讀入的是端口引腳值;寫時,數(shù)據(jù)寫到端口數(shù)據(jù)鎖讀入的
4、是端口引腳值;寫時,數(shù)據(jù)寫到端口數(shù)據(jù)鎖存器輸出。存器輸出。LATxLATx寄存器:寄存器:I/OI/O端口電平輸出鎖存寄存器。讀時,讀端口電平輸出鎖存寄存器。讀時,讀入數(shù)據(jù)鎖存器里鎖存的值;寫時,數(shù)據(jù)寫到端口數(shù)入數(shù)據(jù)鎖存器里鎖存的值;寫時,數(shù)據(jù)寫到端口數(shù)據(jù)鎖存器輸出。據(jù)鎖存器輸出。1.2 I/O1.2 I/O端口控制端口控制dsPIC30F4011 dsPIC30F4011 端口寄存器端口寄存器例例1:1:實現(xiàn)發(fā)光二極管實現(xiàn)發(fā)光二極管D1D1閃爍功能。閃爍功能。硬件分析:發(fā)光二極管硬件分析:發(fā)光二極管D1D1連接著連接著3838引腳,即引腳,即RE0RE0端口;端口; RE0 RE0輸出高電平
5、時(輸出高電平時(=1=1),),D1D1亮;亮; RE0 RE0輸出低電平時(輸出低電平時(=0=0),),D1D1不亮;不亮;1.3 I/O1.3 I/O端口應(yīng)用舉例端口應(yīng)用舉例高電平(高電平(=1)低電平(低電平(=0)軟件分析:軟件分析:RE0RE0管腳對應(yīng)的寄存器及對應(yīng)位管腳對應(yīng)的寄存器及對應(yīng)位方向控制寄存器方向控制寄存器TRISETRISE的的 TRISE0 TRISE0位;位;LATELATE寄存器的寄存器的 LATE0 LATE0位;位;PORTEPORTE寄存器的寄存器的 RE0 RE0位;位;控制步驟:控制步驟:將將TRISETRISE寄存器的寄存器的TRISE0TRISE
6、0位置位置0 0,設(shè)置,設(shè)置RE0RE0為數(shù)據(jù)輸出端口;為數(shù)據(jù)輸出端口;給給LATELATE寄存器的寄存器的LATE0LATE0位賦值為位賦值為1/0, RE01/0, RE0輸出高低電平;輸出高低電平;軟件設(shè)計為:軟件設(shè)計為:int main()int main() TRISEbits.TRISE0 = 0; /TRISEbits.TRISE0 = 0; /設(shè)置設(shè)置RE0RE0為輸出為輸出(1(1輸入,輸入,0 0輸出輸出) );while(1)while(1) LATEbits.LATE0 =1;LATEbits.LATE0 =1; /RE0=1 /RE0=1輸出高電平輸出高電平+5V+5
7、V,亮燈,亮燈delay(); /delay(); /延時延時LATEbits.LATE0 =0; /RE0=0LATEbits.LATE0 =0; /RE0=0輸出低電平輸出低電平0V0V,滅燈滅燈 delay(); / delay(); /延時延時 12例例2 2、實現(xiàn)、實現(xiàn)6 6個發(fā)光二極管流水燈功能。個發(fā)光二極管流水燈功能。硬件分析:硬件分析:6 6個發(fā)光二極管個發(fā)光二極管D1-D6D1-D6分別連接著分別連接著33-3833-38引腳,即引腳,即RE0-RE5RE0-RE5端口;每個引腳輸出高電平時(端口;每個引腳輸出高電平時(=1=1燈亮;輸出低燈亮;輸出低電平時(電平時(=0=0
8、燈不亮。燈不亮。1.3 I/O1.3 I/O端口應(yīng)用舉例端口應(yīng)用舉例軟件分析:軟件分析:(1 1RE0-RE5RE0-RE5管腳對應(yīng)的寄存器及對應(yīng)位管腳對應(yīng)的寄存器及對應(yīng)位方向控制寄存器方向控制寄存器TRISETRISE的的 TRISE0-TRISE5 TRISE0-TRISE5位;位;LATELATE寄存器的寄存器的 LATE0-LATE5 LATE0-LATE5位;位;PORTEPORTE寄存器的寄存器的 RE0-RE5 RE0-RE5位;位;(2 2控制步驟:控制步驟:將將TRISETRISE寄存器的寄存器的TRISE0-RISE5TRISE0-RISE5位置位置0 0,設(shè)置,設(shè)置RE0
9、-RE5RE0-RE5為輸出端口;為輸出端口;分別對分別對LATELATE寄存器的寄存器的LATE0-LATE5LATE0-LATE5位賦值為位賦值為1/01/0,6 6個端口分別輸出高個端口分別輸出高低電平;低電平;流水燈的實現(xiàn)方法流水燈的實現(xiàn)方法發(fā)光發(fā)光LEDD6D5D4D3D2D1端口端口RE5RE4RE3RE2RE1RE0輸出值輸出值1000001輸出值輸出值2000010輸出值輸出值3000100輸出值輸出值4001000輸出值輸出值5010000輸出值輸出值61000000 x010 x020 x040 x080 x100 x20方法一方法一循環(huán)輸出循環(huán)輸出方法二方法二移位輸出移位
10、輸出軟件設(shè)計軟件設(shè)計方法一:循環(huán)輸出方法一:循環(huán)輸出int ledcode6=0 x01,0 x02, 0 x04, 0 x08, 0 x10, 0 x20; int ledcode6=0 x01,0 x02, 0 x04, 0 x08, 0 x10, 0 x20; /存放存放6 6個輸出值個輸出值int main(void)int main(void) TRISE =0 x00; TRISE =0 x00; /設(shè)置設(shè)置RE0-RE5RE0-RE5為輸出為輸出while(1)while(1) for (i=0;i6;i+) for (i=0;i6;i+) LATE=ledcodei;LATE=
11、ledcodei;/6/6個輸出值依次輸出循環(huán)點燈個輸出值依次輸出循環(huán)點燈 delay(); /delay(); /延時延時 軟件設(shè)計軟件設(shè)計方法二:移位輸出方法二:移位輸出int led=0 x01; int led=0 x01; /存放輸出值,初值是第一個存放輸出值,初值是第一個輸出值輸出值int main(void)int main(void) TRISE =0 x00; TRISE =0 x00; /設(shè)置設(shè)置RE0-RE5RE0-RE5為輸出為輸出while(1)while(1) LATE =led; LATE =led; /點燈點燈 delay(); delay(); /延時延時 l
12、ed = led1; led = ledSelect ToolsPICkit 3 選擇調(diào)試工具;選擇調(diào)試工具;(3點擊點擊DebuggerSettings,在,在Settings窗口中點擊窗口中點擊Power欄,選擇由欄,選擇由PICkit3向?qū)嶒灠骞╇姡幌驅(qū)嶒灠骞╇?;?完成實現(xiàn)發(fā)光完成實現(xiàn)發(fā)光LED燈閃爍實驗;燈閃爍實驗;(5完成實現(xiàn)流水燈或花樣彩燈實驗;完成實現(xiàn)流水燈或花樣彩燈實驗;(6完成實現(xiàn)按按鍵加完成實現(xiàn)按按鍵加1計數(shù)實驗。計數(shù)實驗。五五. 實驗報告內(nèi)容與要求實驗報告內(nèi)容與要求(1簡述簡述3個實驗任務(wù)的程序設(shè)計方法;個實驗任務(wù)的程序設(shè)計方法;(2分析觀察到的實驗結(jié)果;分析觀察到的實
13、驗結(jié)果;(3分析分析PIC單片機單片機IO端口輸入與輸出操作的不同之處。端口輸入與輸出操作的不同之處。主要內(nèi)容主要內(nèi)容第第2 2節(jié)節(jié) 中斷中斷中斷介紹中斷介紹中斷控制方法中斷控制方法中斷應(yīng)用舉例中斷應(yīng)用舉例外部中斷實驗外部中斷實驗1. 1. 中斷中斷中斷是指在程序運行過程中,當出現(xiàn)情況時,中斷是指在程序運行過程中,當出現(xiàn)情況時,CPUCPU暫暫時停止當前程序的執(zhí)行,轉(zhuǎn)而執(zhí)行處理新情況的過程叫做時停止當前程序的執(zhí)行,轉(zhuǎn)而執(zhí)行處理新情況的過程叫做中斷。中斷。 簡單來說:中斷是一種發(fā)生了一個外部的事件時調(diào)用簡單來說:中斷是一種發(fā)生了一個外部的事件時調(diào)用相應(yīng)的處理程序的過程。相應(yīng)的處理程序的過程。2.
14、2.中斷源中斷源引起中斷的原因,或能夠發(fā)出中斷請求信號的來源統(tǒng)引起中斷的原因,或能夠發(fā)出中斷請求信號的來源統(tǒng)稱為中斷源。稱為中斷源。(1 1軟件中斷源:軟件陷阱產(chǎn)生的中斷為軟件中斷源不軟件中斷源:軟件陷阱產(chǎn)生的中斷為軟件中斷源不可屏蔽中斷)可屏蔽中斷)(2 2硬件中斷源:外設(shè)發(fā)出的請求為硬件中斷源可屏蔽硬件中斷源:外設(shè)發(fā)出的請求為硬件中斷源可屏蔽中斷)中斷)2.1 2.1 中斷介紹中斷介紹3.3.中斷處理過程中斷處理過程 一個完整的中斷處理過程應(yīng)該包括:中斷請求、中一個完整的中斷處理過程應(yīng)該包括:中斷請求、中斷排隊或中斷判優(yōu)、中斷響應(yīng)、中斷處理和中斷返回。斷排隊或中斷判優(yōu)、中斷響應(yīng)、中斷處理和
15、中斷返回。2.1 2.1 中斷介紹中斷介紹正在執(zhí)行的程序正在執(zhí)行的程序中斷請求中斷請求繼續(xù)執(zhí)行原程序繼續(xù)執(zhí)行原程序中斷服務(wù)程序中斷服務(wù)程序中斷狀態(tài)標志位置中斷狀態(tài)標志位置126(1 1中斷排隊或中斷判優(yōu)中斷排隊或中斷判優(yōu) 在程序運行過程中,幾個中斷請求可能同時出現(xiàn),但中在程序運行過程中,幾個中斷請求可能同時出現(xiàn),但中斷系統(tǒng)只能按一定的次序來響應(yīng)和處理。這些中斷請求被按斷系統(tǒng)只能按一定的次序來響應(yīng)和處理。這些中斷請求被按照優(yōu)先級別順序進行處理。最先被響應(yīng)的中斷具有最高優(yōu)先照優(yōu)先級別順序進行處理。最先被響應(yīng)的中斷具有最高優(yōu)先級別。級別。PICPIC單片機中斷優(yōu)先級原則:單片機中斷優(yōu)先級原則:用戶可
16、設(shè)置中斷源優(yōu)先級為用戶可設(shè)置中斷源優(yōu)先級為1-7 1-7 級。級。優(yōu)先級設(shè)置中,優(yōu)先級設(shè)置中,1 1為最低優(yōu)先級,為最低優(yōu)先級,7 7 為最高優(yōu)先級。為最高優(yōu)先級。如果中斷源的優(yōu)先級設(shè)置為零,則中斷源被禁止。如果中斷源的優(yōu)先級設(shè)置為零,則中斷源被禁止。在用戶分配的優(yōu)先級相同時,單片機內(nèi)部提供自然順序優(yōu)先級在用戶分配的優(yōu)先級相同時,單片機內(nèi)部提供自然順序優(yōu)先級解決優(yōu)先級沖突。每個中斷源在中斷向量表解決優(yōu)先級沖突。每個中斷源在中斷向量表IVTIVT中的位置是中的位置是其自然順序優(yōu)先級,中斷向量的編號越低,自然優(yōu)先級越高;其自然順序優(yōu)先級,中斷向量的編號越低,自然優(yōu)先級越高;向量的編號越高,自然優(yōu)先
17、級越低。向量的編號越高,自然優(yōu)先級越低。高高低低自然順序優(yōu)先級自然順序優(yōu)先級(2 2中斷響應(yīng)中斷響應(yīng)(3 3中斷服務(wù)程序中斷服務(wù)程序保護現(xiàn)場:目的是為了保護那些與保護現(xiàn)場:目的是為了保護那些與主程序中有沖突的寄存器,沒主程序中有沖突的寄存器,沒有沖突的話,這一步驟可以省有沖突的話,這一步驟可以省略。略。開中斷:是為了能實現(xiàn)中斷的嵌套。開中斷:是為了能實現(xiàn)中斷的嵌套。為產(chǎn)生中斷的相應(yīng)設(shè)備提供服務(wù)為產(chǎn)生中斷的相應(yīng)設(shè)備提供服務(wù)恢復(fù)現(xiàn)場:與保護現(xiàn)場對應(yīng)的,要恢復(fù)現(xiàn)場:與保護現(xiàn)場對應(yīng)的,要注意數(shù)據(jù)恢復(fù)的次序,以免混注意數(shù)據(jù)恢復(fù)的次序,以免混亂。亂。 前往:將壓入堆棧的斷點地址返回前往:將壓入堆棧的斷點地
18、址返回PCPC301. 1. 中斷控制相關(guān)的寄存器中斷控制相關(guān)的寄存器INTCON1 INTCON1 和和INTCON2 INTCON2 寄存器:中斷控制寄存器,實現(xiàn)全局中斷控制功能。寄存器:中斷控制寄存器,實現(xiàn)全局中斷控制功能。NSTDISNSTDIS位:中斷嵌套禁止位位:中斷嵌套禁止位INTCON1INTCON1)。默認為)。默認為0 0;該位置;該位置1 1,則,則禁止中斷嵌套,即如果正在處理一個中斷,將禁止處理新的中斷,即使禁止中斷嵌套,即如果正在處理一個中斷,將禁止處理新的中斷,即使新中斷的優(yōu)先級比當前正在處理的中斷優(yōu)先級高。新中斷的優(yōu)先級比當前正在處理的中斷優(yōu)先級高。ALTIVTA
19、LTIVT位:使能備用中斷向量表位。使用標準向量表時該位置位:使能備用中斷向量表位。使用標準向量表時該位置0 0默許);默許);使用備用向量表時該位置使用備用向量表時該位置1 1 。INT2EP- INT0EPINT2EP- INT0EP位:外部中斷邊沿檢測極性選擇位。該位置位:外部中斷邊沿檢測極性選擇位。該位置1 1,是來負邊沿,是來負邊沿時產(chǎn)生中斷;該位置時產(chǎn)生中斷;該位置0 0默許),是來正邊沿時產(chǎn)生中斷默許),是來正邊沿時產(chǎn)生中斷2.2 2.2 中斷控制方法中斷控制方法31中斷標志狀態(tài)寄存器中斷標志狀態(tài)寄存器IFSxIFSx:所有中斷請求標志都保存在這些寄存:所有中斷請求標志都保存在這
20、些寄存器中,標志狀態(tài)位記載是否已經(jīng)發(fā)生了中斷請求,每個中斷源的器中,標志狀態(tài)位記載是否已經(jīng)發(fā)生了中斷請求,每個中斷源的中斷請求標志由各自的外設(shè)置中斷請求標志由各自的外設(shè)置1 1 ,通過軟件清零。,通過軟件清零。置置1 = 1 = 發(fā)生中斷請求發(fā)生中斷請求置置0 = 0 = 未發(fā)生中斷請求未發(fā)生中斷請求32中斷允許控制寄存器中斷允許控制寄存器IECxIECx:所有中斷允許控制位都保存在這些:所有中斷允許控制位都保存在這些寄存器中。這些控制位用于控制是否允許來自外的中斷請求被寄存器中。這些控制位用于控制是否允許來自外的中斷請求被響應(yīng)。響應(yīng)。置置1 =1 =允許中斷請求允許中斷請求置置0 =0 =不
21、允許中斷請求不允許中斷請求33中斷優(yōu)先級控制寄存器中斷優(yōu)先級控制寄存器IPCxIPCx:用于為每個中斷源設(shè)置中斷優(yōu)先:用于為每個中斷源設(shè)置中斷優(yōu)先級。每個用戶中斷源都可以設(shè)置為級。每個用戶中斷源都可以設(shè)置為1-7 1-7 的優(yōu)先級,用三位二進的優(yōu)先級,用三位二進制數(shù)表示。如果中斷源的優(yōu)先級設(shè)置為零,則中斷源被禁止。制數(shù)表示。如果中斷源的優(yōu)先級設(shè)置為零,則中斷源被禁止。342. 2. 中斷程序設(shè)計中斷程序設(shè)計(1 1中斷初始化配置中斷初始化配置若禁止中斷嵌套,設(shè)置若禁止中斷嵌套,設(shè)置NSTDIS NSTDIS 控制位控制位INTCON1 )INTCON1 )為為1 1;不做設(shè)置時該;不做設(shè)置時該
22、位默認為位默認為0 0,即中斷可以嵌套;,即中斷可以嵌套;設(shè)置中斷源優(yōu)先級,給設(shè)置中斷源優(yōu)先級,給IPCxIPCx寄存器中的相應(yīng)中斷置寄存器中的相應(yīng)中斷置1-71-7的優(yōu)先級;的優(yōu)先級;將中斷標志狀態(tài)寄存器將中斷標志狀態(tài)寄存器IFSxIFSx中的中斷標志狀態(tài)位清零;中的中斷標志狀態(tài)位清零;設(shè)置中斷允許控制寄存器設(shè)置中斷允許控制寄存器IECxIECx中的中斷允許控制位為中的中斷允許控制位為1 1,允許中斷請求,允許中斷請求void Initializeint0() void Initializeint0() INTCON1bits. NSTDIS= 1; INTCON1bits. NSTDIS=
23、 1; / /中斷嵌套禁止中斷嵌套禁止IFS0bits.INT0IF = 0; IFS0bits.INT0IF = 0; / /清除清除INT0INT0的中斷標志的中斷標志 IPC0bits.INT0IP = 7; IPC0bits.INT0IP = 7; / /中斷優(yōu)先級為中斷優(yōu)先級為7 7 IEC0bits.INT0IE = 1; IEC0bits.INT0IE = 1; / /使能中斷使能中斷 2.2 2.2 中斷控制方法中斷控制方法(2中斷服務(wù)程序中斷服務(wù)程序ISR的編寫的編寫void _attribute_(_interrupt_(_save_(variable1,variable2
24、) _INT0Interrupt(void)/中斷服務(wù)程序代碼中斷服務(wù)程序代碼_attribute_(_interrupt_ ( _save_ (symbol-list) , _ irq_ (irqid) , _ altirq_ (altirqid) , _ preprologue_ (asm) ) )save 參數(shù)指定進入和退出參數(shù)指定進入和退出ISR時需要保護和恢復(fù)的一個或多個變量;時需要保護和恢復(fù)的一個或多個變量;irq 參數(shù)允許將一個中斷向量對應(yīng)于一個特定的中斷,括號括起來的是中斷參數(shù)允許將一個中斷向量對應(yīng)于一個特定的中斷,括號括起來的是中斷ID號;號;altirq 參數(shù)允許將一個中斷
25、向量對應(yīng)于一個指定的備用中斷;參數(shù)允許將一個中斷向量對應(yīng)于一個指定的備用中斷;preprologue 參數(shù)允許在生成的代碼中,編譯器生成的函數(shù)參數(shù)允許在生成的代碼中,編譯器生成的函數(shù)prologue前插入?yún)R前插入?yún)R編語句。編語句。MPLAB C30 的關(guān)鍵字的關(guān)鍵字_attribute_ 用來指定特殊屬性。用來指定特殊屬性。雙括弧中的內(nèi)容是可選的屬性說明。雙括弧中的內(nèi)容是可選的屬性說明。屬性說明屬性說明中斷向量名中斷向量名例例1.1.單中斷應(yīng)用。按鍵單中斷應(yīng)用。按鍵S8S8鏈接鏈接1717管腳管腳RE8RE8端口做為外部中斷端口做為外部中斷INT0INT0使用。無中斷時程序執(zhí)行流水燈,來中斷時
26、使用。無中斷時程序執(zhí)行流水燈,來中斷時6 6個發(fā)光個發(fā)光LEDLED全亮,中斷結(jié)束返回后繼續(xù)執(zhí)行流水燈程序。全亮,中斷結(jié)束返回后繼續(xù)執(zhí)行流水燈程序。硬件分析:硬件分析:S8S8不按下時,不按下時,5 5管腳輸入為高電平;管腳輸入為高電平;S8S8按下再松開時,按下再松開時,1717管腳輸入一個低電平脈沖信號,即產(chǎn)生外部中斷管腳輸入一個低電平脈沖信號,即產(chǎn)生外部中斷INT0INT0。2.3 2.3 中斷應(yīng)用舉例中斷應(yīng)用舉例軟件分析:軟件分析:(1 1外部中斷外部中斷INT0INT0對應(yīng)的寄存器對應(yīng)的寄存器中斷標志狀態(tài)寄存器中斷標志狀態(tài)寄存器IFS0IFS0的的 INT0IF INT0IF位;位;
27、中斷允許控制寄存器中斷允許控制寄存器IEC0IEC0的的 INT0IE INT0IE位;位;中斷優(yōu)先級控制寄存器中斷優(yōu)先級控制寄存器IPC0IPC0的的 INT0IP INT0IP位;位;(2 2外部中斷外部中斷INT0INT0的產(chǎn)生及設(shè)置:的產(chǎn)生及設(shè)置:外部中斷輸入正或負邊沿時產(chǎn)生中斷;外部中斷輸入正或負邊沿時產(chǎn)生中斷;INTCON2 INTCON2 寄存器的寄存器的INT0EPINT0EP位置位置1 1是負邊沿時產(chǎn)生中斷;置是負邊沿時產(chǎn)生中斷;置0 0是正邊是正邊沿時產(chǎn)生中斷默認設(shè)置);沿時產(chǎn)生中斷默認設(shè)置);(3 3程序設(shè)計程序設(shè)計編寫外部中斷編寫外部中斷INT0INT0初始化程序,設(shè)置
28、并使能初始化程序,設(shè)置并使能INT0INT0;編寫中斷服務(wù)程序編寫中斷服務(wù)程序ISRISR,點亮,點亮6 6個發(fā)光個發(fā)光LEDLED;編寫主程序,調(diào)用初始化程序,實現(xiàn)流水燈功能程序;編寫主程序,調(diào)用初始化程序,實現(xiàn)流水燈功能程序;38#include void Initializeint0() IFS0bits.INT0IF = 0; /清除清除INT0的中斷標志的中斷標志 IPC0bits.INT0IP = 7; /中斷優(yōu)先級為中斷優(yōu)先級為7 IEC0bits.INT0IE = 1; /使能中斷使能中斷void _attribute_(_interrupt_) _INT0Interrupt(
29、void)IFS0bits.INT0IF = 0; /清清INT0中斷標志中斷標志 PORTE =0 x3f;/6個個LED燈全亮燈全亮 delay(); /延時延時int main() Initializeint0(); /調(diào)用調(diào)用INT0初始化程序初始化程序 int ledcode6=0 x01,0 x02, 0 x04, 0 x08, 0 x10, 0 x20; TRISE =0 x0100; /RE0-RE5配置為輸出,配置為輸出,RE8外部外部INT0輸入輸入while(1) for (i=0;iSelect ToolsPICkit 3 選擇調(diào)試工具;選擇調(diào)試工具;(3點擊點擊Deb
30、uggerSettings,在,在Settings窗口中點擊窗口中點擊Power欄,選擇由欄,選擇由PICkit3向?qū)嶒灠骞╇?;向?qū)嶒灠骞╇?;?完成單中斷程序?qū)嶒灒煌瓿蓡沃袛喑绦驅(qū)嶒?;?完成多中斷程序?qū)嶒灒煌瓿啥嘀袛喑绦驅(qū)嶒?;五? 實驗報告內(nèi)容與要求實驗報告內(nèi)容與要求(1簡述中斷程序設(shè)計方法;簡述中斷程序設(shè)計方法;(2分析單中斷實驗結(jié)果,總結(jié)中斷處理過程;分析單中斷實驗結(jié)果,總結(jié)中斷處理過程;(3分析多中斷實驗結(jié)果,總結(jié)優(yōu)先級處理原則;分析多中斷實驗結(jié)果,總結(jié)優(yōu)先級處理原則;(4分析多中斷實驗結(jié)果,總結(jié)中斷嵌套工作原理。分析多中斷實驗結(jié)果,總結(jié)中斷嵌套工作原理。主要內(nèi)容主要內(nèi)容第第3 3
31、節(jié)節(jié) 定時器定時器定時器介紹定時器介紹定時器的控制方法定時器的控制方法定時器應(yīng)用舉例定時器應(yīng)用舉例定時器實驗定時器實驗3.1 3.1 定時器介紹定時器介紹模式模式定時器定時器模塊模塊16位定時器位定時器模式模式同步計數(shù)器同步計數(shù)器模式模式異步計數(shù)器異步計數(shù)器模式模式門控時間累門控時間累加模式加模式32位定時器位定時器Timer1Timer2Timer3Timer4Timer51. 1. 定時器模塊及其工作模式定時器模塊及其工作模式3.1 3.1 定時器介紹定時器介紹2.2.工作模式工作模式(1 1定時器模式定時器模式定時器顧名思義就是定時定時器顧名思義就是定時 ,單片機的定時功能可產(chǎn)生精確的定
32、時時間。,單片機的定時功能可產(chǎn)生精確的定時時間。 定時器是單片機里最定時器是單片機里最“活潑活潑的部件之一的部件之一, ,很多程序、應(yīng)用系統(tǒng)都離不很多程序、應(yīng)用系統(tǒng)都離不開它。開它。定時器的核心是計數(shù)器定時器的核心是計數(shù)器例如一個鬧鐘,將它定時在例如一個鬧鐘,將它定時在1 1個小時后鬧響,也能說是秒針走了個小時后鬧響,也能說是秒針走了36003600次后鬧響。因秒針每一次走動的時間正好是次后鬧響。因秒針每一次走動的時間正好是1 1秒,所以定時時間秒,所以定時時間就轉(zhuǎn)化為秒針走的次數(shù),也就是計數(shù)的數(shù)值就轉(zhuǎn)化為秒針走的次數(shù),也就是計數(shù)的數(shù)值36003600次)??梢?,定時次)??梢?,定時時間與秒針
33、基準時鐘源)、計數(shù)值之間具有密切關(guān)系。時間與秒針基準時鐘源)、計數(shù)值之間具有密切關(guān)系。(2 2計數(shù)器模式計數(shù)器模式計數(shù)器是記錄外界發(fā)生的事情,即統(tǒng)計外部輸入的脈沖次數(shù)。計數(shù)器是記錄外界發(fā)生的事情,即統(tǒng)計外部輸入的脈沖次數(shù)。計數(shù)的例程處處可見,如錄音的時長、家里用的電度表、汽車上計數(shù)的例程處處可見,如錄音的時長、家里用的電度表、汽車上的里程表等。的里程表等。計數(shù)器的核心也是計數(shù)器計數(shù)器的核心也是計數(shù)器計數(shù)器時鐘源由外部提供:計數(shù)器時鐘源由外部提供:外部輸入時鐘源與系統(tǒng)指令周期時鐘外部輸入時鐘源與系統(tǒng)指令周期時鐘TCY TCY 同步的是同步計數(shù)器同步的是同步計數(shù)器外部輸入時鐘源與系統(tǒng)指令周期時鐘外
34、部輸入時鐘源與系統(tǒng)指令周期時鐘TCY TCY 不同步的是異步計數(shù)器不同步的是異步計數(shù)器(3 3門控時間累加模式門控時間累加模式當外部門控信號為由低變高時,對應(yīng)的定時器開始遞增計數(shù);當外部門控信號為由低變高時,對應(yīng)的定時器開始遞增計數(shù);當外部門控信號為由高變低時,對應(yīng)的定時器停止遞增計數(shù)。當外部門控信號為由高變低時,對應(yīng)的定時器停止遞增計數(shù)。定時器時鐘源來自于內(nèi)部系統(tǒng)時鐘。定時器時鐘源來自于內(nèi)部系統(tǒng)時鐘。3.2 3.2 定時器的控制方法定時器的控制方法1. Timer1模塊內(nèi)部結(jié)構(gòu)( Timer2/3/4/5結(jié)構(gòu)基本相同 )指令周期時鐘指令周期時鐘Fosc/4)時鐘選擇時鐘選擇定時器開關(guān)定時器開
35、關(guān)PR1周期寄存器:決定定時時間周期寄存器:決定定時時間定時模式工作時定時模式工作時TMR1計數(shù)寄存器計數(shù)寄存器定時中斷標志位置定時中斷標志位置12.2.時鐘時鐘定時器的輸入時鐘由內(nèi)部系統(tǒng)時鐘提供定時器的輸入時鐘由內(nèi)部系統(tǒng)時鐘提供系統(tǒng)時鐘系統(tǒng)時鐘FoscFosc四分頻產(chǎn)生內(nèi)部指令周期時鐘四分頻產(chǎn)生內(nèi)部指令周期時鐘FcyFcy,即,即Fcy=Fosc/4Fcy=Fosc/4定時器按照指令周期時鐘進行計數(shù)預(yù)分頻比為定時器按照指令周期時鐘進行計數(shù)預(yù)分頻比為1:11:1時時 )。)。3.3.定時器預(yù)分頻器定時器預(yù)分頻器定時器預(yù)分頻器把系統(tǒng)時鐘的頻率按倍數(shù)分頻,那么一個計數(shù)周期定時器預(yù)分頻器把系統(tǒng)時鐘的
36、頻率按倍數(shù)分頻,那么一個計數(shù)周期就按倍數(shù)變大。就按倍數(shù)變大。1616位定時器的輸入時鐘位定時器的輸入時鐘FOSC/4 FOSC/4 或外部時鐘的預(yù)分頻比選項為或外部時鐘的預(yù)分頻比選項為1:11:1、1:81:8、1:64 1:64 和和1:2561:256。例如:原本例如:原本1 1個指令周期時鐘計數(shù)個指令周期時鐘計數(shù)1 1次如次如1ms1ms計數(shù)計數(shù)1 1次),預(yù)分頻次),預(yù)分頻器設(shè)為器設(shè)為1 1:4 4 后,就是后,就是4 4個指令周期計數(shù)個指令周期計數(shù)1 1次即次即4ms4ms計數(shù)計數(shù)1 1次)。次)。3.2 3.2 定時器的控制方法定時器的控制方法定時器開控制位定時器開控制位1= 啟動
37、定時器啟動定時器0= 停止定時器停止定時器定時器門控時間累加使能位定時器門控時間累加使能位1= 門控時間累加使能門控時間累加使能0= 門控時間累加禁止門控時間累加禁止定時器輸入時鐘定時器輸入時鐘預(yù)分頻選擇位預(yù)分頻選擇位11 = 預(yù)分頻比是預(yù)分頻比是1:25610 = 預(yù)分頻比是預(yù)分頻比是1:6401 = 預(yù)分頻比是預(yù)分頻比是1:800 = 預(yù)分頻比是預(yù)分頻比是1:1定時器外部時鐘輸入同定時器外部時鐘輸入同步選擇位步選擇位當當TCS=1 時:時:1= 同步外部時鐘輸入同步外部時鐘輸入0= 不同步外部時鐘輸入不同步外部時鐘輸入當當TCS=0 時,時, Timer1 使使用內(nèi)部時鐘。用內(nèi)部時鐘。3.
38、2 3.2 定時器的控制方法定時器的控制方法4. Timer4. Timer模塊相關(guān)的寄存器模塊相關(guān)的寄存器TMR1TMR1計數(shù)寄存器:存放計數(shù)的值;計數(shù)寄存器:存放計數(shù)的值;PR1PR1周期寄存器:存放周期值,該值決定定時時間;周期寄存器:存放周期值,該值決定定時時間;T1CONT1CON控制寄存器:控制控制寄存器:控制Timer1Timer1模塊所有操作。模塊所有操作。定時器時鐘源選擇位定時器時鐘源選擇位1= 來自來自TxCK 引腳的外部時鐘引腳的外部時鐘0= 內(nèi)部時鐘內(nèi)部時鐘FOSC/4)32 位定時器模式選擇位位定時器模式選擇位1=TMR2 和和TMR3 形成形成32 位定時器位定時器
39、0=TMR2和和TMR3為獨立的為獨立的16 位定時器位定時器32 位定時器模式選擇位位定時器模式選擇位1=TMR4 和和TMR5 形成形成32 位定時器位定時器0=TMR4和和TMR5為獨立的為獨立的16 位定時器位定時器545 5、定時器周期值計算、定時器周期值計算(1 1系統(tǒng)時鐘系統(tǒng)時鐘FoscFosc四分頻產(chǎn)生內(nèi)部指令周期時鐘四分頻產(chǎn)生內(nèi)部指令周期時鐘FcyFcy,即,即Fcy=Fosc/4Fcy=Fosc/4 Tcy Tcy指令周期指令周期=1/Fcy=1/=1/Fcy=1/(fosc/4) fosc/4) (2 2定時器的周期值計算公式:定時器的周期值計算公式:定時器周期值定時器周
40、期值= =所需定時時間所需定時時間/ /(指令周期分頻比(指令周期分頻比) )例如:系統(tǒng)時鐘頻率為例如:系統(tǒng)時鐘頻率為fosc=7.3728MHzfosc=7.3728MHz,定時,定時1 1秒。周期值秒。周期值計算如下:計算如下: 指令周期指令周期=1/=1/(fosc/4)=1/1843200fosc/4)=1/1843200 定時器周期值定時器周期值= =所需定時時間所需定時時間/ /(分頻比指令周期(分頻比指令周期) ) =1s/(256 =1s/(256* *1/1843200)1/1843200) =7200 =7200 =0 x1c20 =0 x1c203.2 3.2 定時器的控
41、制方法定時器的控制方法6. 6. 定時器中斷定時器中斷設(shè)置定時器中斷使能位設(shè)置定時器中斷使能位TxIETxIE,可使能定時器中斷。,可使能定時器中斷。16 16 位定時器在發(fā)生周期匹配時位定時器在發(fā)生周期匹配時TMRxTMRx中的值與中的值與PRxPRx中的值相中的值相等時產(chǎn)生定時中斷,相應(yīng)的定時器中斷標志狀態(tài)位等時產(chǎn)生定時中斷,相應(yīng)的定時器中斷標志狀態(tài)位TxIF TxIF 會被置會被置1 1。3.2 3.2 定時器的控制方法定時器的控制方法周期匹配周期匹配 定時器中斷相關(guān)寄存器定時器中斷相關(guān)寄存器3.3 3.3 定時器應(yīng)用舉例定時器應(yīng)用舉例例例1:流水燈時間間隔為:流水燈時間間隔為1s。vo
42、id InitializeTMR1() TMR1 = 0; /計數(shù)寄存器計數(shù)寄存器TMR10,從,從0開始計數(shù)開始計數(shù) T1CON = 0 x0030;/關(guān)閉定時器,使用內(nèi)部時鐘,預(yù)分頻關(guān)閉定時器,使用內(nèi)部時鐘,預(yù)分頻比比1:256 PR1 =0 x1c20; /周期寄存器賦值,使定時時間為周期寄存器賦值,使定時時間為1s IFS0bits.T1IF = 0; /清除清除TMR1的中斷標志的中斷標志 IPC0bits.T1IP = 7; /中斷優(yōu)先級為中斷優(yōu)先級為7 IEC0bits.T1IE = 1; /使能定時中斷使能定時中斷void _attribute_(_interrupt_) _T
43、1Interrupt(void) TMR1=0; IFS0bits.T1IF = 0; /清定時器中斷標志狀態(tài)位清定時器中斷標志狀態(tài)位 led = led1;int main() InitializeTMR1(); T1CONbits.TON = 1;/打開定時器打開定時器 .3.3 3.3 定時器應(yīng)用舉例定時器應(yīng)用舉例例例2:設(shè)計簡易計時器,在:設(shè)計簡易計時器,在LCD上顯示計時時間上顯示計時時間mm:ss)。)。void InitializeTMR1() TMR1 = 0; /計數(shù)寄存器計數(shù)寄存器TMR10,從,從0開始計數(shù)開始計數(shù) T1CON = 0 x0030;/關(guān)閉定時器,使用內(nèi)部時
44、鐘,預(yù)分頻關(guān)閉定時器,使用內(nèi)部時鐘,預(yù)分頻比比1:256 PR1 =0 x1c20; /周期寄存器賦值,使定時時間為周期寄存器賦值,使定時時間為1s IFS0bits.T1IF = 0; /清除清除TMR1的中斷標志的中斷標志 IPC0bits.T1IP = 7; /中斷優(yōu)先級為中斷優(yōu)先級為7 IEC0bits.T1IE = 1; /使能定時中斷使能定時中斷int main() OpenLCD( ) ;putrsLCD(mm:ss) ;InitializeTMR1();T1CONbits.TON = 1;/打開定時器打開定時器void _attribute_(_interrupt_) _T1I
45、nterrupt(void) if(seconds59)seconds+;elseseconds=0;if(minutesSelect ToolsPICkit 3 選擇調(diào)試工具;選擇調(diào)試工具;(3點擊點擊DebuggerSettings,在,在Settings窗口中點擊窗口中點擊Power欄,選擇由欄,選擇由PICkit3向?qū)嶒灠骞╇?;向?qū)嶒灠骞╇姡唬?完成間隔完成間隔1s/5s/10s的流水燈實驗;的流水燈實驗;(5完成簡易計數(shù)器實驗;完成簡易計數(shù)器實驗;(6完成交通燈實驗;完成交通燈實驗;五五. 實驗報告內(nèi)容與要求實驗報告內(nèi)容與要求(1簡述定時器工作原理;簡述定時器工作原理;(2總結(jié)定時器
46、的設(shè)計方法。總結(jié)定時器的設(shè)計方法。主要內(nèi)容主要內(nèi)容第第4 4節(jié)節(jié) 輸出比較輸出比較輸出比較介紹輸出比較介紹輸出比較的工作模式輸出比較的工作模式輸出比較的控制寄存器輸出比較的控制寄存器輸出比較應(yīng)用舉例輸出比較應(yīng)用舉例輸出比較實驗輸出比較實驗631.1.輸出比較輸出比較輸出比較模塊工作時,把所選的定時器的時基值與輸出比較模塊工作時,把所選的定時器的時基值與1/21/2個比個比較寄存器的值作比較,在比較匹配相等發(fā)生時能產(chǎn)生較寄存器的值作比較,在比較匹配相等發(fā)生時能產(chǎn)生單個脈沖輸出或連續(xù)脈沖輸出。單個脈沖輸出或連續(xù)脈沖輸出。輸出比較模塊從引腳輸出的脈沖頻率和占空比可調(diào),該信號輸出比較模塊從引腳輸出的脈
47、沖頻率和占空比可調(diào),該信號可以用來控制外部設(shè)備以滿足不同用途的需要,如延時驅(qū)可以用來控制外部設(shè)備以滿足不同用途的需要,如延時驅(qū)動、功率控制、直流或步進電機、可控硅觸發(fā)等。動、功率控制、直流或步進電機、可控硅觸發(fā)等。dsPIC30F4011dsPIC30F4011有有4 4個輸出比較通道,以符號個輸出比較通道,以符號OC1/2/3/4OC1/2/3/4等表示。等表示。所有輸出比較通道功能上是都相同的。所有輸出比較通道功能上是都相同的。4.1 4.1 輸出比較介紹輸出比較介紹4.1 4.1 輸出比較介紹輸出比較介紹2.2.輸出比較模式框圖輸出比較模式框圖定時器時基值定時器時基值比較寄存器比較寄存器
48、定時器周期匹配信號定時器周期匹配信號比較匹配比較匹配周期匹配周期匹配654.2 4.2 輸出比較工作模式輸出比較工作模式1.1. 每個輸出比較模塊均有以下工作模式:每個輸出比較模塊均有以下工作模式:2.2. 單比較匹配模式單比較匹配模式3.3. 比較強制比較強制I/O I/O 引腳為低電平輸出引腳為低電平輸出4.4. 比較強制比較強制I/O I/O 引腳為高電平輸出引腳為高電平輸出5.5. 比較使比較使I/O I/O 引腳狀態(tài)翻轉(zhuǎn)輸出引腳狀態(tài)翻轉(zhuǎn)輸出6.6. 雙比較匹配模式產(chǎn)生雙比較匹配模式產(chǎn)生7.7. 單個輸出脈沖單個輸出脈沖8.8. 連續(xù)輸出脈沖連續(xù)輸出脈沖9.9. 簡單脈沖寬度調(diào)制簡單脈
49、沖寬度調(diào)制PWMPWM方式方式662.2.單比較匹配模式單比較匹配模式 輸出比較模塊把一個值裝入輸出比較模塊把一個值裝入OCxR OCxR 寄存器,并將該值與所選定寄存器,并將該值與所選定時器的計數(shù)器寄存器時器的計數(shù)器寄存器TMRTMR的值作比較,當比較匹配事件發(fā)生時:的值作比較,當比較匹配事件發(fā)生時:(1 1OCx OCx 引腳的初始狀態(tài)為低電平時,比較匹配事件強制該引引腳的初始狀態(tài)為低電平時,比較匹配事件強制該引腳為高電平;兩個指令時鐘后,相應(yīng)通道的中斷標志位腳為高電平;兩個指令時鐘后,相應(yīng)通道的中斷標志位OCxIF OCxIF 被置被置1 1。4.2 4.2 輸出比較工作模式輸出比較工作
50、模式寄寄存存器器值值預(yù)預(yù)先先設(shè)設(shè)置置(2 2當當OCx OCx 引腳的初始狀態(tài)為高電平時,比較匹配事件強引腳的初始狀態(tài)為高電平時,比較匹配事件強制該引腳為低電平;兩個指令時鐘后,相應(yīng)通道的中斷標制該引腳為低電平;兩個指令時鐘后,相應(yīng)通道的中斷標志位志位OCxIF OCxIF 被置被置1 1 。寄寄存存器器值值預(yù)預(yù)先先設(shè)設(shè)置置68(3 3輸出引腳輸出引腳Ocx Ocx 初始化驅(qū)動為低電平,比較匹配事件使初始化驅(qū)動為低電平,比較匹配事件使OCx OCx 引腳電平交替翻轉(zhuǎn)輸出高低電平。引腳電平交替翻轉(zhuǎn)輸出高低電平。寄存器值預(yù)先設(shè)置寄存器值預(yù)先設(shè)置PR2 OCxROCOC引腳輸出脈沖信號的周期由引腳輸
51、出脈沖信號的周期由2 2* *PRPR的值決定的值決定OCOC引腳輸出脈沖信號的占空比為引腳輸出脈沖信號的占空比為50%50%693. 3. 雙比較匹配模式雙比較匹配模式單個輸出脈沖單個輸出脈沖連續(xù)輸出脈沖連續(xù)輸出脈沖 輸出比較模塊把輸出比較模塊把2 2個值分別裝入個值分別裝入OCxR OCxR 寄存器和寄存器和OCxRS OCxRS 寄存器,寄存器,OCxROCxR寄存器的值與所選的定時器的計數(shù)器寄存器寄存器的值與所選的定時器的計數(shù)器寄存器TMRTMR的值作比的值作比較,在比較匹配事件發(fā)生時,在較,在比較匹配事件發(fā)生時,在OCx OCx 引腳上產(chǎn)生脈沖的前引腳上產(chǎn)生脈沖的前上升沿。上升沿。O
52、CxRSOCxRS寄存器的值與所選的定時器的計數(shù)器寄存器寄存器的值與所選的定時器的計數(shù)器寄存器TMRTMR的值作比的值作比較,在比較匹配事件發(fā)生時,在較,在比較匹配事件發(fā)生時,在OCx OCx 引腳上產(chǎn)生脈沖的后引腳上產(chǎn)生脈沖的后下降沿。下降沿。4.2 4.2 輸出比較工作模式輸出比較工作模式70(1單個輸出脈沖寄寄存存器器值值預(yù)預(yù)先先設(shè)設(shè)置置71(2連續(xù)輸出脈沖OC引腳輸出脈沖信號的周期由引腳輸出脈沖信號的周期由PRy的值決定的值決定OC引腳輸出脈沖信號的占空比引腳輸出脈沖信號的占空比OCxRS-OCxR)/PRy寄寄存存器器值值預(yù)預(yù)先先設(shè)設(shè)置置4. 4. 簡單簡單PWMPWM模式模式脈沖寬
53、度調(diào)制脈沖寬度調(diào)制PWMPWM是英文是英文“Pulse Width “Pulse Width ModulationModulation的縮寫,簡稱脈寬調(diào)制。它是利用微處理器的縮寫,簡稱脈寬調(diào)制。它是利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種非常有效的技術(shù),的數(shù)字輸出來對模擬電路進行控制的一種非常有效的技術(shù),廣泛應(yīng)用于測量,通訊,功率控制與變換等許多領(lǐng)域。廣泛應(yīng)用于測量,通訊,功率控制與變換等許多領(lǐng)域。 不帶故障保護輸入的不帶故障保護輸入的PWM PWM 方式方式 帶故障保護輸入的帶故障保護輸入的PWM PWM 方式故障保護通過方式故障保護通過OCFA OCFA 引腳提供,引腳提供,當引腳
54、上檢測到了邏輯當引腳上檢測到了邏輯“0”“0”,所選的,所選的PWM PWM 輸出引腳將被置輸出引腳將被置于高阻態(tài),于高阻態(tài),PWM PWM 輸出立即關(guān)閉)輸出立即關(guān)閉)724.2 4.2 輸出比較工作模式輸出比較工作模式輸出比較模塊配置為輸出比較模塊配置為PWM PWM 工作模式時,工作模式時,通過寫入所選定時器的周期寄存器通過寫入所選定時器的周期寄存器PRyPRy設(shè)置設(shè)置PWM PWM 周期;周期;OCxR OCxR 是主鎖存器只讀);是主鎖存器只讀);OCxRS OCxRS 是輔助鎖存器,用戶通過寫入是輔助鎖存器,用戶通過寫入OCxRS OCxRS 寄存器設(shè)置寄存器設(shè)置PWM PWM 占
55、空占空比;比;在每個定時器與周期寄存器匹配事件產(chǎn)生時在每個定時器與周期寄存器匹配事件產(chǎn)生時PWM PWM 周期結(jié)束時),周期結(jié)束時),寄存器寄存器OCxROCxR被裝載被裝載OCxRSOCxRS的內(nèi)容。的內(nèi)容。73PWM 周期周期 = (PR) + 1 4 TOSC (TMR 預(yù)分頻值預(yù)分頻值)PWM 輸出波形輸出波形寄寄存存器器值值預(yù)預(yù)先先設(shè)設(shè)置置75每個輸出比較通道均有下列寄存器:每個輸出比較通道均有下列寄存器:OCxCON OCxCON :通道的控制寄存器:通道的控制寄存器OCxR OCxR :輸出比較通道的數(shù)據(jù)寄存器:輸出比較通道的數(shù)據(jù)寄存器OCxRS OCxRS :輸出比較通道的輔助
56、數(shù)據(jù)寄存器:輸出比較通道的輔助數(shù)據(jù)寄存器4.3 4.3 輸出比較的控制寄存器輸出比較的控制寄存器76輸出比較定時器選擇位輸出比較定時器選擇位1 = Timer 3 是比較是比較x 的時鐘源的時鐘源0 = Timer 2 是比較是比較x 的時鐘源的時鐘源OCM:輸出比較模式選擇位:輸出比較模式選擇位111 = OCx 處于處于PWM 方式,錯誤引腳使能方式,錯誤引腳使能110 = OCx 處于處于PWM 方式,錯誤引腳禁止方式,錯誤引腳禁止101 = 初始化初始化OCx 引腳為低電平,在引腳為低電平,在OCx 引腳上產(chǎn)生連續(xù)的輸出脈沖雙)引腳上產(chǎn)生連續(xù)的輸出脈沖雙)100 = 初始化初始化OCx
57、 引腳為低電平,在引腳為低電平,在OCx 引腳上產(chǎn)生單個輸出脈沖引腳上產(chǎn)生單個輸出脈沖011 = 比較匹配事件使比較匹配事件使OCx 引腳的電平交替翻轉(zhuǎn)單)引腳的電平交替翻轉(zhuǎn)單)010 = 初始化初始化OCx 引腳為高電平,比較匹配事件強制引腳為高電平,比較匹配事件強制OCx 引腳為低電平引腳為低電平001 = 初始化初始化OCx 引腳為低電平,比較匹配事件強制引腳為低電平,比較匹配事件強制OCx 引腳為高電平引腳為高電平000 = 輸出比較通道禁止輸出比較通道禁止例例1 1:采用單比較匹配模式在:采用單比較匹配模式在OC4OC4RD3RD3引腳產(chǎn)生引腳產(chǎn)生1.6k Hz1.6k Hz占空比為
58、占空比為50%50%)的連續(xù)信號。)的連續(xù)信號。設(shè)置分析:設(shè)置分析:(1 1要求輸出的信號要求輸出的信號 f= 1.6k Hz f= 1.6k Hz 系統(tǒng)時鐘頻率為系統(tǒng)時鐘頻率為 Fosc=7.3728MHz Fosc=7.3728MHz 指令周期時鐘頻率為指令周期時鐘頻率為 Fcy=Fosc/4=1.8432MHz Fcy=Fosc/4=1.8432MHz(2 2輸出比較模塊采用輸出比較模塊采用1616位定時器位定時器Time2Time2,Time2Time2使用內(nèi)部使用內(nèi)部時鐘,預(yù)分頻時鐘,預(yù)分頻1:11:1,可得:,可得:2 2* *PR=T/Tcy=Fcy/f =1.8432MHz /
59、1.6kHz=1152PR=T/Tcy=Fcy/f =1.8432MHz /1.6kHz=1152PR=576=0 x240PR=576=0 x240774.4 4.4 輸出比較的應(yīng)用舉例輸出比較的應(yīng)用舉例void ConfigOC4()/輸出比較模塊配置輸出比較模塊配置 OC4CON = 0 x0000; /Timer2是比較是比較4的時鐘源的時鐘源 OC4R = 0 x0200; /設(shè)置匹配值設(shè)置匹配值0 x0200 T2CON = 0 x0000;/預(yù)分頻預(yù)分頻1:1,16位定時器,使用內(nèi)部時鐘位定時器,使用內(nèi)部時鐘 PR2 = 0 x0240; /周期寄存器賦值周期寄存器賦值0 x02
60、40,TMR2在在0 x0240處復(fù)位處復(fù)位 TMR2 = 0 x00; /TMR2初值初值0 x00 IFS1bits.OC4IF = 0; /清除輸出比較中斷標志位清除輸出比較中斷標志位 IEC1bits.OC4IE = 1; /使能輸出比較中斷使能輸出比較中斷 IPC5bits.OC4IP = 7; /設(shè)置中斷優(yōu)先級設(shè)置中斷優(yōu)先級7 IEC0bits.T2IE = 0; /不使能不使能Timer2定時器中斷定時器中斷/*中斷子程序:輸出比較中斷子程序:輸出比較3中斷,比較匹配時產(chǎn)生中斷中斷,比較匹配時產(chǎn)生中斷*/void _attribute_(_interrupt_) _OC4Inte
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人租賃屋頂合同范例
- 代購騰訊合同范例
- ktv食品供貨合同模板
- 農(nóng)村住宅出租合同范例
- 企業(yè)設(shè)備維保合同范例
- 產(chǎn)期合同到期延續(xù)合同范例
- 農(nóng)業(yè)大棚租賃合同范例
- 人工協(xié)議合同范例
- 加盟美容項目合同范例
- 參考合同范例
- 企業(yè)信用修復(fù)服務(wù)協(xié)議
- 部編人教版三年級語文上冊期中測試卷5份(含答案)
- 期中測評試卷(1-4單元)(試題)-2024-2025學(xué)年人教版三年級數(shù)學(xué)上冊
- 2023年國家公務(wù)員錄用考試《行測》行政執(zhí)法卷-解析
- 城市軌道交通脫軌事故應(yīng)急預(yù)案
- 2024新版七年級英語單詞表
- 2024年廣東省高職高考語文試卷及答案
- 2024至2030年中國眼部護理行業(yè)運營現(xiàn)狀與未來需求趨勢分析報告
- 圓圈正義讀書分享課件
- 四平事業(yè)單位筆試真題及答案2024
- 一年級數(shù)學(xué)上冊蘇教版《連加、連減》教學(xué)設(shè)計
評論
0/150
提交評論