2020PIC單片機(jī)原理及應(yīng)用2ppt課件_第1頁(yè)
2020PIC單片機(jī)原理及應(yīng)用2ppt課件_第2頁(yè)
2020PIC單片機(jī)原理及應(yīng)用2ppt課件_第3頁(yè)
2020PIC單片機(jī)原理及應(yīng)用2ppt課件_第4頁(yè)
2020PIC單片機(jī)原理及應(yīng)用2ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩130頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、PICPIC單片機(jī)原理及應(yīng)用單片機(jī)原理及應(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í)驗(yàn)端口實(shí)驗(yàn)輸出數(shù)據(jù)時(shí)輸出數(shù)據(jù)時(shí)輸出使能輸出使能輸出使能輸出使能=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í)輸入數(shù)據(jù)時(shí)輸入使能輸入使能輸入使能輸入使能=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 端口特點(diǎn)端口特點(diǎn)所有所有I/O I/O 輸入端口都輸入端口都是施密特觸發(fā)器輸是施密特觸發(fā)器輸入,以增強(qiáng)抗干擾入,以增強(qiáng)抗干擾性。性。有些端口除有些端口除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í),名字在前的外設(shè)優(yōu)先級(jí)高注:復(fù)用多種外設(shè)功能時(shí),名字在前的外設(shè)優(yōu)先級(jí)高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時(shí),其對(duì)應(yīng)的時(shí),其對(duì)應(yīng)的I/O I/O 端口為輸入。端口為輸入。TRISxTRISx的位為的位為“0“0時(shí),其對(duì)應(yīng)的時(shí),其對(duì)應(yīng)的I/O I/O 端口為輸出。端口為輸出。復(fù)位以后,所有端口引腳被定義為輸入。復(fù)位以后,所有端口引腳被定義為輸入。PORTxPORTx寄存器:寄存器:I/OI/O端口讀引腳電平狀態(tài)寄存器。讀時(shí),端口讀引腳電平狀態(tài)寄存器。讀時(shí),讀入的是端口引腳值;寫時(shí),數(shù)據(jù)寫到端口數(shù)據(jù)鎖讀入的

4、是端口引腳值;寫時(shí),數(shù)據(jù)寫到端口數(shù)據(jù)鎖存器輸出。存器輸出。LATxLATx寄存器:寄存器:I/OI/O端口電平輸出鎖存寄存器。讀時(shí),讀端口電平輸出鎖存寄存器。讀時(shí),讀入數(shù)據(jù)鎖存器里鎖存的值;寫時(shí),數(shù)據(jù)寫到端口數(shù)入數(shù)據(jù)鎖存器里鎖存的值;寫時(shí),數(shù)據(jù)寫到端口數(shù)據(jù)鎖存器輸出。據(jù)鎖存器輸出。1.2 I/O1.2 I/O端口控制端口控制dsPIC30F4011 dsPIC30F4011 端口寄存器端口寄存器例例1:1:實(shí)現(xiàn)發(fā)光二極管實(shí)現(xiàn)發(fā)光二極管D1D1閃爍功能。閃爍功能。硬件分析:發(fā)光二極管硬件分析:發(fā)光二極管D1D1連接著連接著3838引腳,即引腳,即RE0RE0端口;端口; RE0 RE0輸出高電平

5、時(shí)(輸出高電平時(shí)(=1=1),),D1D1亮;亮; RE0 RE0輸出低電平時(shí)(輸出低電平時(shí)(=0=0),),D1D1不亮;不亮;1.3 I/O1.3 I/O端口應(yīng)用舉例端口應(yīng)用舉例高電平(高電平(=1)低電平(低電平(=0)軟件分析:軟件分析:RE0RE0管腳對(duì)應(yīng)的寄存器及對(duì)應(yīng)位管腳對(duì)應(yīng)的寄存器及對(duì)應(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è)計(jì)為:軟件設(shè)計(jì)為: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(); /延時(shí)延時(shí)LATEbits.LATE0 =0; /RE0=0LATEbits.LATE0 =0; /RE0=0輸出低電平輸出低電平0V0V,滅燈滅燈 delay(); / delay(); /延時(shí)延時(shí) 12例例2 2、實(shí)現(xiàn)、實(shí)現(xiàn)6 6個(gè)發(fā)光二極管流水燈功能。個(gè)發(fā)光二極管流水燈功能。硬件分析:硬件分析:6 6個(gè)發(fā)光二極管個(gè)發(fā)光二極管D1-D6D1-D6分別連接著分別連接著33-3833-38引腳,即引腳,即RE0-RE5RE0-RE5端口;每個(gè)引腳輸出高電平時(shí)(端口;每個(gè)引腳輸出高電平時(shí)(=1=1燈亮;輸出低燈亮;輸出低電平時(shí)(電平時(shí)(=0=0

8、燈不亮。燈不亮。1.3 I/O1.3 I/O端口應(yīng)用舉例端口應(yīng)用舉例軟件分析:軟件分析:(1 1RE0-RE5RE0-RE5管腳對(duì)應(yīng)的寄存器及對(duì)應(yīng)位管腳對(duì)應(yīng)的寄存器及對(duì)應(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為輸出端口;為輸出端口;分別對(duì)分別對(duì)LATELATE寄存器的寄存器的LATE0-LATE5LATE0-LATE5位賦值為位賦值為1/01/0,6 6個(gè)端口分別輸出高個(gè)端口分別輸出高低電平;低電平;流水燈的實(shí)現(xiàn)方法流水燈的實(shí)現(xiàn)方法發(fā)光發(fā)光LEDD6D5D4D3D2D1端口端口RE5RE4RE3RE2RE1RE0輸出值輸出值1000001輸出值輸出值2000010輸出值輸出值3000100輸出值輸出值4001000輸出值輸出值5010000輸出值輸出值61000000 x010 x020 x040 x080 x100 x20方法一方法一循環(huán)輸出循環(huán)輸出方法二方法二移位輸出移位

10、輸出軟件設(shè)計(jì)軟件設(shè)計(jì)方法一:循環(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個(gè)輸出值個(gè)輸出值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個(gè)輸出值依次輸出循環(huán)點(diǎn)燈個(gè)輸出值依次輸出循環(huán)點(diǎn)燈 delay(); /delay(); /延時(shí)延時(shí) 軟件設(shè)計(jì)軟件設(shè)計(jì)方法二:移位輸出方法二:移位輸出int led=0 x01; int led=0 x01; /存放輸出值,初值是第一個(gè)存放輸出值,初值是第一個(gè)輸出值輸出值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; /點(diǎn)燈點(diǎn)燈 delay(); delay(); /延時(shí)延時(shí) l

12、ed = led1; led = ledSelect ToolsPICkit 3 選擇調(diào)試工具;選擇調(diào)試工具;(3點(diǎn)擊點(diǎn)擊DebuggerSettings,在,在Settings窗口中點(diǎn)擊窗口中點(diǎn)擊Power欄,選擇由欄,選擇由PICkit3向?qū)嶒?yàn)板供電;向?qū)嶒?yàn)板供電;(4完成實(shí)現(xiàn)發(fā)光完成實(shí)現(xiàn)發(fā)光LED燈閃爍實(shí)驗(yàn);燈閃爍實(shí)驗(yàn);(5完成實(shí)現(xiàn)流水燈或花樣彩燈實(shí)驗(yàn);完成實(shí)現(xiàn)流水燈或花樣彩燈實(shí)驗(yàn);(6完成實(shí)現(xiàn)按按鍵加完成實(shí)現(xiàn)按按鍵加1計(jì)數(shù)實(shí)驗(yàn)。計(jì)數(shù)實(shí)驗(yàn)。五五. 實(shí)驗(yàn)報(bào)告內(nèi)容與要求實(shí)驗(yàn)報(bào)告內(nèi)容與要求(1簡(jiǎn)述簡(jiǎn)述3個(gè)實(shí)驗(yàn)任務(wù)的程序設(shè)計(jì)方法;個(gè)實(shí)驗(yàn)任務(wù)的程序設(shè)計(jì)方法;(2分析觀察到的實(shí)驗(yàn)結(jié)果;分析觀察到的實(shí)

13、驗(yàn)結(jié)果;(3分析分析PIC單片機(jī)單片機(jī)IO端口輸入與輸出操作的不同之處。端口輸入與輸出操作的不同之處。主要內(nèi)容主要內(nèi)容第第2 2節(jié)節(jié) 中斷中斷中斷介紹中斷介紹中斷控制方法中斷控制方法中斷應(yīng)用舉例中斷應(yīng)用舉例外部中斷實(shí)驗(yàn)外部中斷實(shí)驗(yàn)1. 1. 中斷中斷中斷是指在程序運(yùn)行過(guò)程中,當(dāng)出現(xiàn)情況時(shí),中斷是指在程序運(yùn)行過(guò)程中,當(dāng)出現(xiàn)情況時(shí),CPUCPU暫暫時(shí)停止當(dāng)前程序的執(zhí)行,轉(zhuǎn)而執(zhí)行處理新情況的過(guò)程叫做時(shí)停止當(dāng)前程序的執(zhí)行,轉(zhuǎn)而執(zhí)行處理新情況的過(guò)程叫做中斷。中斷。 簡(jiǎn)單來(lái)說(shuō):中斷是一種發(fā)生了一個(gè)外部的事件時(shí)調(diào)用簡(jiǎn)單來(lái)說(shuō):中斷是一種發(fā)生了一個(gè)外部的事件時(shí)調(diào)用相應(yīng)的處理程序的過(guò)程。相應(yīng)的處理程序的過(guò)程。2.

14、2.中斷源中斷源引起中斷的原因,或能夠發(fā)出中斷請(qǐng)求信號(hào)的來(lái)源統(tǒng)引起中斷的原因,或能夠發(fā)出中斷請(qǐng)求信號(hào)的來(lái)源統(tǒng)稱為中斷源。稱為中斷源。(1 1軟件中斷源:軟件陷阱產(chǎn)生的中斷為軟件中斷源不軟件中斷源:軟件陷阱產(chǎn)生的中斷為軟件中斷源不可屏蔽中斷)可屏蔽中斷)(2 2硬件中斷源:外設(shè)發(fā)出的請(qǐng)求為硬件中斷源可屏蔽硬件中斷源:外設(shè)發(fā)出的請(qǐng)求為硬件中斷源可屏蔽中斷)中斷)2.1 2.1 中斷介紹中斷介紹3.3.中斷處理過(guò)程中斷處理過(guò)程 一個(gè)完整的中斷處理過(guò)程應(yīng)該包括:中斷請(qǐng)求、中一個(gè)完整的中斷處理過(guò)程應(yīng)該包括:中斷請(qǐng)求、中斷排隊(duì)或中斷判優(yōu)、中斷響應(yīng)、中斷處理和中斷返回。斷排隊(duì)或中斷判優(yōu)、中斷響應(yīng)、中斷處理和

15、中斷返回。2.1 2.1 中斷介紹中斷介紹正在執(zhí)行的程序正在執(zhí)行的程序中斷請(qǐng)求中斷請(qǐng)求繼續(xù)執(zhí)行原程序繼續(xù)執(zhí)行原程序中斷服務(wù)程序中斷服務(wù)程序中斷狀態(tài)標(biāo)志位置中斷狀態(tài)標(biāo)志位置126(1 1中斷排隊(duì)或中斷判優(yōu)中斷排隊(duì)或中斷判優(yōu) 在程序運(yùn)行過(guò)程中,幾個(gè)中斷請(qǐng)求可能同時(shí)出現(xiàn),但中在程序運(yùn)行過(guò)程中,幾個(gè)中斷請(qǐng)求可能同時(shí)出現(xiàn),但中斷系統(tǒng)只能按一定的次序來(lái)響應(yīng)和處理。這些中斷請(qǐng)求被按斷系統(tǒng)只能按一定的次序來(lái)響應(yīng)和處理。這些中斷請(qǐng)求被按照優(yōu)先級(jí)別順序進(jìn)行處理。最先被響應(yīng)的中斷具有最高優(yōu)先照優(yōu)先級(jí)別順序進(jìn)行處理。最先被響應(yīng)的中斷具有最高優(yōu)先級(jí)別。級(jí)別。PICPIC單片機(jī)中斷優(yōu)先級(jí)原則:?jiǎn)纹瑱C(jī)中斷優(yōu)先級(jí)原則:用戶可

16、設(shè)置中斷源優(yōu)先級(jí)為用戶可設(shè)置中斷源優(yōu)先級(jí)為1-7 1-7 級(jí)。級(jí)。優(yōu)先級(jí)設(shè)置中,優(yōu)先級(jí)設(shè)置中,1 1為最低優(yōu)先級(jí),為最低優(yōu)先級(jí),7 7 為最高優(yōu)先級(jí)。為最高優(yōu)先級(jí)。如果中斷源的優(yōu)先級(jí)設(shè)置為零,則中斷源被禁止。如果中斷源的優(yōu)先級(jí)設(shè)置為零,則中斷源被禁止。在用戶分配的優(yōu)先級(jí)相同時(shí),單片機(jī)內(nèi)部提供自然順序優(yōu)先級(jí)在用戶分配的優(yōu)先級(jí)相同時(shí),單片機(jī)內(nèi)部提供自然順序優(yōu)先級(jí)解決優(yōu)先級(jí)沖突。每個(gè)中斷源在中斷向量表解決優(yōu)先級(jí)沖突。每個(gè)中斷源在中斷向量表IVTIVT中的位置是中的位置是其自然順序優(yōu)先級(jí),中斷向量的編號(hào)越低,自然優(yōu)先級(jí)越高;其自然順序優(yōu)先級(jí),中斷向量的編號(hào)越低,自然優(yōu)先級(jí)越高;向量的編號(hào)越高,自然優(yōu)先

17、級(jí)越低。向量的編號(hào)越高,自然優(yōu)先級(jí)越低。高高低低自然順序優(yōu)先級(jí)自然順序優(yōu)先級(jí)(2 2中斷響應(yīng)中斷響應(yīng)(3 3中斷服務(wù)程序中斷服務(wù)程序保護(hù)現(xiàn)場(chǎng):目的是為了保護(hù)那些與保護(hù)現(xiàn)場(chǎng):目的是為了保護(hù)那些與主程序中有沖突的寄存器,沒(méi)主程序中有沖突的寄存器,沒(méi)有沖突的話,這一步驟可以省有沖突的話,這一步驟可以省略。略。開(kāi)中斷:是為了能實(shí)現(xiàn)中斷的嵌套。開(kāi)中斷:是為了能實(shí)現(xiàn)中斷的嵌套。為產(chǎn)生中斷的相應(yīng)設(shè)備提供服務(wù)為產(chǎn)生中斷的相應(yīng)設(shè)備提供服務(wù)恢復(fù)現(xiàn)場(chǎng):與保護(hù)現(xiàn)場(chǎng)對(duì)應(yīng)的,要恢復(fù)現(xiàn)場(chǎng):與保護(hù)現(xiàn)場(chǎng)對(duì)應(yīng)的,要注意數(shù)據(jù)恢復(fù)的次序,以免混注意數(shù)據(jù)恢復(fù)的次序,以免混亂。亂。 前往:將壓入堆棧的斷點(diǎn)地址返回前往:將壓入堆棧的斷點(diǎn)地

18、址返回PCPC301. 1. 中斷控制相關(guān)的寄存器中斷控制相關(guān)的寄存器INTCON1 INTCON1 和和INTCON2 INTCON2 寄存器:中斷控制寄存器,實(shí)現(xiàn)全局中斷控制功能。寄存器:中斷控制寄存器,實(shí)現(xiàn)全局中斷控制功能。NSTDISNSTDIS位:中斷嵌套禁止位位:中斷嵌套禁止位INTCON1INTCON1)。默認(rèn)為)。默認(rèn)為0 0;該位置;該位置1 1,則,則禁止中斷嵌套,即如果正在處理一個(gè)中斷,將禁止處理新的中斷,即使禁止中斷嵌套,即如果正在處理一個(gè)中斷,將禁止處理新的中斷,即使新中斷的優(yōu)先級(jí)比當(dāng)前正在處理的中斷優(yōu)先級(jí)高。新中斷的優(yōu)先級(jí)比當(dāng)前正在處理的中斷優(yōu)先級(jí)高。ALTIVTA

19、LTIVT位:使能備用中斷向量表位。使用標(biāo)準(zhǔn)向量表時(shí)該位置位:使能備用中斷向量表位。使用標(biāo)準(zhǔn)向量表時(shí)該位置0 0默許);默許);使用備用向量表時(shí)該位置使用備用向量表時(shí)該位置1 1 。INT2EP- INT0EPINT2EP- INT0EP位:外部中斷邊沿檢測(cè)極性選擇位。該位置位:外部中斷邊沿檢測(cè)極性選擇位。該位置1 1,是來(lái)負(fù)邊沿,是來(lái)負(fù)邊沿時(shí)產(chǎn)生中斷;該位置時(shí)產(chǎn)生中斷;該位置0 0默許),是來(lái)正邊沿時(shí)產(chǎn)生中斷默許),是來(lái)正邊沿時(shí)產(chǎn)生中斷2.2 2.2 中斷控制方法中斷控制方法31中斷標(biāo)志狀態(tài)寄存器中斷標(biāo)志狀態(tài)寄存器IFSxIFSx:所有中斷請(qǐng)求標(biāo)志都保存在這些寄存:所有中斷請(qǐng)求標(biāo)志都保存在這

20、些寄存器中,標(biāo)志狀態(tài)位記載是否已經(jīng)發(fā)生了中斷請(qǐng)求,每個(gè)中斷源的器中,標(biāo)志狀態(tài)位記載是否已經(jīng)發(fā)生了中斷請(qǐng)求,每個(gè)中斷源的中斷請(qǐng)求標(biāo)志由各自的外設(shè)置中斷請(qǐng)求標(biāo)志由各自的外設(shè)置1 1 ,通過(guò)軟件清零。,通過(guò)軟件清零。置置1 = 1 = 發(fā)生中斷請(qǐng)求發(fā)生中斷請(qǐng)求置置0 = 0 = 未發(fā)生中斷請(qǐng)求未發(fā)生中斷請(qǐng)求32中斷允許控制寄存器中斷允許控制寄存器IECxIECx:所有中斷允許控制位都保存在這些:所有中斷允許控制位都保存在這些寄存器中。這些控制位用于控制是否允許來(lái)自外的中斷請(qǐng)求被寄存器中。這些控制位用于控制是否允許來(lái)自外的中斷請(qǐng)求被響應(yīng)。響應(yīng)。置置1 =1 =允許中斷請(qǐng)求允許中斷請(qǐng)求置置0 =0 =不

21、允許中斷請(qǐng)求不允許中斷請(qǐng)求33中斷優(yōu)先級(jí)控制寄存器中斷優(yōu)先級(jí)控制寄存器IPCxIPCx:用于為每個(gè)中斷源設(shè)置中斷優(yōu)先:用于為每個(gè)中斷源設(shè)置中斷優(yōu)先級(jí)。每個(gè)用戶中斷源都可以設(shè)置為級(jí)。每個(gè)用戶中斷源都可以設(shè)置為1-7 1-7 的優(yōu)先級(jí),用三位二進(jìn)的優(yōu)先級(jí),用三位二進(jìn)制數(shù)表示。如果中斷源的優(yōu)先級(jí)設(shè)置為零,則中斷源被禁止。制數(shù)表示。如果中斷源的優(yōu)先級(jí)設(shè)置為零,則中斷源被禁止。342. 2. 中斷程序設(shè)計(jì)中斷程序設(shè)計(jì)(1 1中斷初始化配置中斷初始化配置若禁止中斷嵌套,設(shè)置若禁止中斷嵌套,設(shè)置NSTDIS NSTDIS 控制位控制位INTCON1 )INTCON1 )為為1 1;不做設(shè)置時(shí)該;不做設(shè)置時(shí)該

22、位默認(rèn)為位默認(rèn)為0 0,即中斷可以嵌套;,即中斷可以嵌套;設(shè)置中斷源優(yōu)先級(jí),給設(shè)置中斷源優(yōu)先級(jí),給IPCxIPCx寄存器中的相應(yīng)中斷置寄存器中的相應(yīng)中斷置1-71-7的優(yōu)先級(jí);的優(yōu)先級(jí);將中斷標(biāo)志狀態(tài)寄存器將中斷標(biāo)志狀態(tài)寄存器IFSxIFSx中的中斷標(biāo)志狀態(tài)位清零;中的中斷標(biāo)志狀態(tài)位清零;設(shè)置中斷允許控制寄存器設(shè)置中斷允許控制寄存器IECxIECx中的中斷允許控制位為中的中斷允許控制位為1 1,允許中斷請(qǐng)求,允許中斷請(qǐng)求void Initializeint0() void Initializeint0() INTCON1bits. NSTDIS= 1; INTCON1bits. NSTDIS=

23、 1; / /中斷嵌套禁止中斷嵌套禁止IFS0bits.INT0IF = 0; IFS0bits.INT0IF = 0; / /清除清除INT0INT0的中斷標(biāo)志的中斷標(biāo)志 IPC0bits.INT0IP = 7; IPC0bits.INT0IP = 7; / /中斷優(yōu)先級(jí)為中斷優(yōu)先級(jí)為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ù)指定進(jìn)入和退出參數(shù)指定進(jìn)入和退出ISR時(shí)需要保護(hù)和恢復(fù)的一個(gè)或多個(gè)變量;時(shí)需要保護(hù)和恢復(fù)的一個(gè)或多個(gè)變量;irq 參數(shù)允許將一個(gè)中斷向量對(duì)應(yīng)于一個(gè)特定的中斷,括號(hào)括起來(lái)的是中斷參數(shù)允許將一個(gè)中斷向量對(duì)應(yīng)于一個(gè)特定的中斷,括號(hào)括起來(lái)的是中斷ID號(hào);號(hào);altirq 參數(shù)允許將一個(gè)中斷

25、向量對(duì)應(yīng)于一個(gè)指定的備用中斷;參數(shù)允許將一個(gè)中斷向量對(duì)應(yīng)于一個(gè)指定的備用中斷;preprologue 參數(shù)允許在生成的代碼中,編譯器生成的函數(shù)參數(shù)允許在生成的代碼中,編譯器生成的函數(shù)prologue前插入?yún)R前插入?yún)R編語(yǔ)句。編語(yǔ)句。MPLAB C30 的關(guān)鍵字的關(guān)鍵字_attribute_ 用來(lái)指定特殊屬性。用來(lái)指定特殊屬性。雙括弧中的內(nèi)容是可選的屬性說(shuō)明。雙括弧中的內(nèi)容是可選的屬性說(shuō)明。屬性說(shuō)明屬性說(shuō)明中斷向量名中斷向量名例例1.1.單中斷應(yīng)用。按鍵單中斷應(yīng)用。按鍵S8S8鏈接鏈接1717管腳管腳RE8RE8端口做為外部中斷端口做為外部中斷INT0INT0使用。無(wú)中斷時(shí)程序執(zhí)行流水燈,來(lái)中斷時(shí)

26、使用。無(wú)中斷時(shí)程序執(zhí)行流水燈,來(lái)中斷時(shí)6 6個(gè)發(fā)光個(gè)發(fā)光LEDLED全亮,中斷結(jié)束返回后繼續(xù)執(zhí)行流水燈程序。全亮,中斷結(jié)束返回后繼續(xù)執(zhí)行流水燈程序。硬件分析:硬件分析:S8S8不按下時(shí),不按下時(shí),5 5管腳輸入為高電平;管腳輸入為高電平;S8S8按下再松開(kāi)時(shí),按下再松開(kāi)時(shí),1717管腳輸入一個(gè)低電平脈沖信號(hào),即產(chǎn)生外部中斷管腳輸入一個(gè)低電平脈沖信號(hào),即產(chǎn)生外部中斷INT0INT0。2.3 2.3 中斷應(yīng)用舉例中斷應(yīng)用舉例軟件分析:軟件分析:(1 1外部中斷外部中斷INT0INT0對(duì)應(yīng)的寄存器對(duì)應(yīng)的寄存器中斷標(biāo)志狀態(tài)寄存器中斷標(biāo)志狀態(tài)寄存器IFS0IFS0的的 INT0IF INT0IF位;位;

27、中斷允許控制寄存器中斷允許控制寄存器IEC0IEC0的的 INT0IE INT0IE位;位;中斷優(yōu)先級(jí)控制寄存器中斷優(yōu)先級(jí)控制寄存器IPC0IPC0的的 INT0IP INT0IP位;位;(2 2外部中斷外部中斷INT0INT0的產(chǎn)生及設(shè)置:的產(chǎn)生及設(shè)置:外部中斷輸入正或負(fù)邊沿時(shí)產(chǎn)生中斷;外部中斷輸入正或負(fù)邊沿時(shí)產(chǎn)生中斷;INTCON2 INTCON2 寄存器的寄存器的INT0EPINT0EP位置位置1 1是負(fù)邊沿時(shí)產(chǎn)生中斷;置是負(fù)邊沿時(shí)產(chǎn)生中斷;置0 0是正邊是正邊沿時(shí)產(chǎn)生中斷默認(rèn)設(shè)置);沿時(shí)產(chǎn)生中斷默認(rèn)設(shè)置);(3 3程序設(shè)計(jì)程序設(shè)計(jì)編寫外部中斷編寫外部中斷INT0INT0初始化程序,設(shè)置

28、并使能初始化程序,設(shè)置并使能INT0INT0;編寫中斷服務(wù)程序編寫中斷服務(wù)程序ISRISR,點(diǎn)亮,點(diǎn)亮6 6個(gè)發(fā)光個(gè)發(fā)光LEDLED;編寫主程序,調(diào)用初始化程序,實(shí)現(xiàn)流水燈功能程序;編寫主程序,調(diào)用初始化程序,實(shí)現(xiàn)流水燈功能程序;38#include void Initializeint0() IFS0bits.INT0IF = 0; /清除清除INT0的中斷標(biāo)志的中斷標(biāo)志 IPC0bits.INT0IP = 7; /中斷優(yōu)先級(jí)為中斷優(yōu)先級(jí)為7 IEC0bits.INT0IE = 1; /使能中斷使能中斷void _attribute_(_interrupt_) _INT0Interrupt(

29、void)IFS0bits.INT0IF = 0; /清清INT0中斷標(biāo)志中斷標(biāo)志 PORTE =0 x3f;/6個(gè)個(gè)LED燈全亮燈全亮 delay(); /延時(shí)延時(shí)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點(diǎn)擊點(diǎn)擊Deb

30、uggerSettings,在,在Settings窗口中點(diǎn)擊窗口中點(diǎn)擊Power欄,選擇由欄,選擇由PICkit3向?qū)嶒?yàn)板供電;向?qū)嶒?yàn)板供電;(4完成單中斷程序?qū)嶒?yàn);完成單中斷程序?qū)嶒?yàn);(5完成多中斷程序?qū)嶒?yàn);完成多中斷程序?qū)嶒?yàn);五五. 實(shí)驗(yàn)報(bào)告內(nèi)容與要求實(shí)驗(yàn)報(bào)告內(nèi)容與要求(1簡(jiǎn)述中斷程序設(shè)計(jì)方法;簡(jiǎn)述中斷程序設(shè)計(jì)方法;(2分析單中斷實(shí)驗(yàn)結(jié)果,總結(jié)中斷處理過(guò)程;分析單中斷實(shí)驗(yàn)結(jié)果,總結(jié)中斷處理過(guò)程;(3分析多中斷實(shí)驗(yàn)結(jié)果,總結(jié)優(yōu)先級(jí)處理原則;分析多中斷實(shí)驗(yàn)結(jié)果,總結(jié)優(yōu)先級(jí)處理原則;(4分析多中斷實(shí)驗(yàn)結(jié)果,總結(jié)中斷嵌套工作原理。分析多中斷實(shí)驗(yàn)結(jié)果,總結(jié)中斷嵌套工作原理。主要內(nèi)容主要內(nèi)容第第3 3

31、節(jié)節(jié) 定時(shí)器定時(shí)器定時(shí)器介紹定時(shí)器介紹定時(shí)器的控制方法定時(shí)器的控制方法定時(shí)器應(yīng)用舉例定時(shí)器應(yīng)用舉例定時(shí)器實(shí)驗(yàn)定時(shí)器實(shí)驗(yàn)3.1 3.1 定時(shí)器介紹定時(shí)器介紹模式模式定時(shí)器定時(shí)器模塊模塊16位定時(shí)器位定時(shí)器模式模式同步計(jì)數(shù)器同步計(jì)數(shù)器模式模式異步計(jì)數(shù)器異步計(jì)數(shù)器模式模式門控時(shí)間累門控時(shí)間累加模式加模式32位定時(shí)器位定時(shí)器Timer1Timer2Timer3Timer4Timer51. 1. 定時(shí)器模塊及其工作模式定時(shí)器模塊及其工作模式3.1 3.1 定時(shí)器介紹定時(shí)器介紹2.2.工作模式工作模式(1 1定時(shí)器模式定時(shí)器模式定時(shí)器顧名思義就是定時(shí)定時(shí)器顧名思義就是定時(shí) ,單片機(jī)的定時(shí)功能可產(chǎn)生精確的定

32、時(shí)時(shí)間。,單片機(jī)的定時(shí)功能可產(chǎn)生精確的定時(shí)時(shí)間。 定時(shí)器是單片機(jī)里最定時(shí)器是單片機(jī)里最“活潑活潑的部件之一的部件之一, ,很多程序、應(yīng)用系統(tǒng)都離不很多程序、應(yīng)用系統(tǒng)都離不開(kāi)它。開(kāi)它。定時(shí)器的核心是計(jì)數(shù)器定時(shí)器的核心是計(jì)數(shù)器例如一個(gè)鬧鐘,將它定時(shí)在例如一個(gè)鬧鐘,將它定時(shí)在1 1個(gè)小時(shí)后鬧響,也能說(shuō)是秒針走了個(gè)小時(shí)后鬧響,也能說(shuō)是秒針走了36003600次后鬧響。因秒針每一次走動(dòng)的時(shí)間正好是次后鬧響。因秒針每一次走動(dòng)的時(shí)間正好是1 1秒,所以定時(shí)時(shí)間秒,所以定時(shí)時(shí)間就轉(zhuǎn)化為秒針走的次數(shù),也就是計(jì)數(shù)的數(shù)值就轉(zhuǎn)化為秒針走的次數(shù),也就是計(jì)數(shù)的數(shù)值36003600次)??梢?jiàn),定時(shí)次)??梢?jiàn),定時(shí)時(shí)間與秒針

33、基準(zhǔn)時(shí)鐘源)、計(jì)數(shù)值之間具有密切關(guān)系。時(shí)間與秒針基準(zhǔn)時(shí)鐘源)、計(jì)數(shù)值之間具有密切關(guān)系。(2 2計(jì)數(shù)器模式計(jì)數(shù)器模式計(jì)數(shù)器是記錄外界發(fā)生的事情,即統(tǒng)計(jì)外部輸入的脈沖次數(shù)。計(jì)數(shù)器是記錄外界發(fā)生的事情,即統(tǒng)計(jì)外部輸入的脈沖次數(shù)。計(jì)數(shù)的例程處處可見(jiàn),如錄音的時(shí)長(zhǎng)、家里用的電度表、汽車上計(jì)數(shù)的例程處處可見(jiàn),如錄音的時(shí)長(zhǎng)、家里用的電度表、汽車上的里程表等。的里程表等。計(jì)數(shù)器的核心也是計(jì)數(shù)器計(jì)數(shù)器的核心也是計(jì)數(shù)器計(jì)數(shù)器時(shí)鐘源由外部提供:計(jì)數(shù)器時(shí)鐘源由外部提供:外部輸入時(shí)鐘源與系統(tǒng)指令周期時(shí)鐘外部輸入時(shí)鐘源與系統(tǒng)指令周期時(shí)鐘TCY TCY 同步的是同步計(jì)數(shù)器同步的是同步計(jì)數(shù)器外部輸入時(shí)鐘源與系統(tǒng)指令周期時(shí)鐘外

34、部輸入時(shí)鐘源與系統(tǒng)指令周期時(shí)鐘TCY TCY 不同步的是異步計(jì)數(shù)器不同步的是異步計(jì)數(shù)器(3 3門控時(shí)間累加模式門控時(shí)間累加模式當(dāng)外部門控信號(hào)為由低變高時(shí),對(duì)應(yīng)的定時(shí)器開(kāi)始遞增計(jì)數(shù);當(dāng)外部門控信號(hào)為由低變高時(shí),對(duì)應(yīng)的定時(shí)器開(kāi)始遞增計(jì)數(shù);當(dāng)外部門控信號(hào)為由高變低時(shí),對(duì)應(yīng)的定時(shí)器停止遞增計(jì)數(shù)。當(dāng)外部門控信號(hào)為由高變低時(shí),對(duì)應(yīng)的定時(shí)器停止遞增計(jì)數(shù)。定時(shí)器時(shí)鐘源來(lái)自于內(nèi)部系統(tǒng)時(shí)鐘。定時(shí)器時(shí)鐘源來(lái)自于內(nèi)部系統(tǒng)時(shí)鐘。3.2 3.2 定時(shí)器的控制方法定時(shí)器的控制方法1. Timer1模塊內(nèi)部結(jié)構(gòu)( Timer2/3/4/5結(jié)構(gòu)基本相同 )指令周期時(shí)鐘指令周期時(shí)鐘Fosc/4)時(shí)鐘選擇時(shí)鐘選擇定時(shí)器開(kāi)關(guān)定時(shí)器開(kāi)

35、關(guān)PR1周期寄存器:決定定時(shí)時(shí)間周期寄存器:決定定時(shí)時(shí)間定時(shí)模式工作時(shí)定時(shí)模式工作時(shí)TMR1計(jì)數(shù)寄存器計(jì)數(shù)寄存器定時(shí)中斷標(biāo)志位置定時(shí)中斷標(biāo)志位置12.2.時(shí)鐘時(shí)鐘定時(shí)器的輸入時(shí)鐘由內(nèi)部系統(tǒng)時(shí)鐘提供定時(shí)器的輸入時(shí)鐘由內(nèi)部系統(tǒng)時(shí)鐘提供系統(tǒng)時(shí)鐘系統(tǒng)時(shí)鐘FoscFosc四分頻產(chǎn)生內(nèi)部指令周期時(shí)鐘四分頻產(chǎn)生內(nèi)部指令周期時(shí)鐘FcyFcy,即,即Fcy=Fosc/4Fcy=Fosc/4定時(shí)器按照指令周期時(shí)鐘進(jìn)行計(jì)數(shù)預(yù)分頻比為定時(shí)器按照指令周期時(shí)鐘進(jìn)行計(jì)數(shù)預(yù)分頻比為1:11:1時(shí)時(shí) )。)。3.3.定時(shí)器預(yù)分頻器定時(shí)器預(yù)分頻器定時(shí)器預(yù)分頻器把系統(tǒng)時(shí)鐘的頻率按倍數(shù)分頻,那么一個(gè)計(jì)數(shù)周期定時(shí)器預(yù)分頻器把系統(tǒng)時(shí)鐘的

36、頻率按倍數(shù)分頻,那么一個(gè)計(jì)數(shù)周期就按倍數(shù)變大。就按倍數(shù)變大。1616位定時(shí)器的輸入時(shí)鐘位定時(shí)器的輸入時(shí)鐘FOSC/4 FOSC/4 或外部時(shí)鐘的預(yù)分頻比選項(xiàng)為或外部時(shí)鐘的預(yù)分頻比選項(xiàng)為1:11:1、1:81:8、1:64 1:64 和和1:2561:256。例如:原本例如:原本1 1個(gè)指令周期時(shí)鐘計(jì)數(shù)個(gè)指令周期時(shí)鐘計(jì)數(shù)1 1次如次如1ms1ms計(jì)數(shù)計(jì)數(shù)1 1次),預(yù)分頻次),預(yù)分頻器設(shè)為器設(shè)為1 1:4 4 后,就是后,就是4 4個(gè)指令周期計(jì)數(shù)個(gè)指令周期計(jì)數(shù)1 1次即次即4ms4ms計(jì)數(shù)計(jì)數(shù)1 1次)。次)。3.2 3.2 定時(shí)器的控制方法定時(shí)器的控制方法定時(shí)器開(kāi)控制位定時(shí)器開(kāi)控制位1= 啟動(dòng)

37、定時(shí)器啟動(dòng)定時(shí)器0= 停止定時(shí)器停止定時(shí)器定時(shí)器門控時(shí)間累加使能位定時(shí)器門控時(shí)間累加使能位1= 門控時(shí)間累加使能門控時(shí)間累加使能0= 門控時(shí)間累加禁止門控時(shí)間累加禁止定時(shí)器輸入時(shí)鐘定時(shí)器輸入時(shí)鐘預(yù)分頻選擇位預(yù)分頻選擇位11 = 預(yù)分頻比是預(yù)分頻比是1:25610 = 預(yù)分頻比是預(yù)分頻比是1:6401 = 預(yù)分頻比是預(yù)分頻比是1:800 = 預(yù)分頻比是預(yù)分頻比是1:1定時(shí)器外部時(shí)鐘輸入同定時(shí)器外部時(shí)鐘輸入同步選擇位步選擇位當(dāng)當(dāng)TCS=1 時(shí):時(shí):1= 同步外部時(shí)鐘輸入同步外部時(shí)鐘輸入0= 不同步外部時(shí)鐘輸入不同步外部時(shí)鐘輸入當(dāng)當(dāng)TCS=0 時(shí),時(shí), Timer1 使使用內(nèi)部時(shí)鐘。用內(nèi)部時(shí)鐘。3.

38、2 3.2 定時(shí)器的控制方法定時(shí)器的控制方法4. Timer4. Timer模塊相關(guān)的寄存器模塊相關(guān)的寄存器TMR1TMR1計(jì)數(shù)寄存器:存放計(jì)數(shù)的值;計(jì)數(shù)寄存器:存放計(jì)數(shù)的值;PR1PR1周期寄存器:存放周期值,該值決定定時(shí)時(shí)間;周期寄存器:存放周期值,該值決定定時(shí)時(shí)間;T1CONT1CON控制寄存器:控制控制寄存器:控制Timer1Timer1模塊所有操作。模塊所有操作。定時(shí)器時(shí)鐘源選擇位定時(shí)器時(shí)鐘源選擇位1= 來(lái)自來(lái)自TxCK 引腳的外部時(shí)鐘引腳的外部時(shí)鐘0= 內(nèi)部時(shí)鐘內(nèi)部時(shí)鐘FOSC/4)32 位定時(shí)器模式選擇位位定時(shí)器模式選擇位1=TMR2 和和TMR3 形成形成32 位定時(shí)器位定時(shí)器

39、0=TMR2和和TMR3為獨(dú)立的為獨(dú)立的16 位定時(shí)器位定時(shí)器32 位定時(shí)器模式選擇位位定時(shí)器模式選擇位1=TMR4 和和TMR5 形成形成32 位定時(shí)器位定時(shí)器0=TMR4和和TMR5為獨(dú)立的為獨(dú)立的16 位定時(shí)器位定時(shí)器545 5、定時(shí)器周期值計(jì)算、定時(shí)器周期值計(jì)算(1 1系統(tǒng)時(shí)鐘系統(tǒng)時(shí)鐘FoscFosc四分頻產(chǎn)生內(nèi)部指令周期時(shí)鐘四分頻產(chǎn)生內(nèi)部指令周期時(shí)鐘FcyFcy,即,即Fcy=Fosc/4Fcy=Fosc/4 Tcy Tcy指令周期指令周期=1/Fcy=1/=1/Fcy=1/(fosc/4) fosc/4) (2 2定時(shí)器的周期值計(jì)算公式:定時(shí)器的周期值計(jì)算公式:定時(shí)器周期值定時(shí)器周

40、期值= =所需定時(shí)時(shí)間所需定時(shí)時(shí)間/ /(指令周期分頻比(指令周期分頻比) )例如:系統(tǒng)時(shí)鐘頻率為例如:系統(tǒng)時(shí)鐘頻率為fosc=7.3728MHzfosc=7.3728MHz,定時(shí),定時(shí)1 1秒。周期值秒。周期值計(jì)算如下:計(jì)算如下: 指令周期指令周期=1/=1/(fosc/4)=1/1843200fosc/4)=1/1843200 定時(shí)器周期值定時(shí)器周期值= =所需定時(shí)時(shí)間所需定時(shí)時(shí)間/ /(分頻比指令周期(分頻比指令周期) ) =1s/(256 =1s/(256* *1/1843200)1/1843200) =7200 =7200 =0 x1c20 =0 x1c203.2 3.2 定時(shí)器的控

41、制方法定時(shí)器的控制方法6. 6. 定時(shí)器中斷定時(shí)器中斷設(shè)置定時(shí)器中斷使能位設(shè)置定時(shí)器中斷使能位TxIETxIE,可使能定時(shí)器中斷。,可使能定時(shí)器中斷。16 16 位定時(shí)器在發(fā)生周期匹配時(shí)位定時(shí)器在發(fā)生周期匹配時(shí)TMRxTMRx中的值與中的值與PRxPRx中的值相中的值相等時(shí)產(chǎn)生定時(shí)中斷,相應(yīng)的定時(shí)器中斷標(biāo)志狀態(tài)位等時(shí)產(chǎn)生定時(shí)中斷,相應(yīng)的定時(shí)器中斷標(biāo)志狀態(tài)位TxIF TxIF 會(huì)被置會(huì)被置1 1。3.2 3.2 定時(shí)器的控制方法定時(shí)器的控制方法周期匹配周期匹配 定時(shí)器中斷相關(guān)寄存器定時(shí)器中斷相關(guān)寄存器3.3 3.3 定時(shí)器應(yīng)用舉例定時(shí)器應(yīng)用舉例例例1:流水燈時(shí)間間隔為:流水燈時(shí)間間隔為1s。vo

42、id InitializeTMR1() TMR1 = 0; /計(jì)數(shù)寄存器計(jì)數(shù)寄存器TMR10,從,從0開(kāi)始計(jì)數(shù)開(kāi)始計(jì)數(shù) T1CON = 0 x0030;/關(guān)閉定時(shí)器,使用內(nèi)部時(shí)鐘,預(yù)分頻關(guān)閉定時(shí)器,使用內(nèi)部時(shí)鐘,預(yù)分頻比比1:256 PR1 =0 x1c20; /周期寄存器賦值,使定時(shí)時(shí)間為周期寄存器賦值,使定時(shí)時(shí)間為1s IFS0bits.T1IF = 0; /清除清除TMR1的中斷標(biāo)志的中斷標(biāo)志 IPC0bits.T1IP = 7; /中斷優(yōu)先級(jí)為中斷優(yōu)先級(jí)為7 IEC0bits.T1IE = 1; /使能定時(shí)中斷使能定時(shí)中斷void _attribute_(_interrupt_) _T

43、1Interrupt(void) TMR1=0; IFS0bits.T1IF = 0; /清定時(shí)器中斷標(biāo)志狀態(tài)位清定時(shí)器中斷標(biāo)志狀態(tài)位 led = led1;int main() InitializeTMR1(); T1CONbits.TON = 1;/打開(kāi)定時(shí)器打開(kāi)定時(shí)器 .3.3 3.3 定時(shí)器應(yīng)用舉例定時(shí)器應(yīng)用舉例例例2:設(shè)計(jì)簡(jiǎn)易計(jì)時(shí)器,在:設(shè)計(jì)簡(jiǎn)易計(jì)時(shí)器,在LCD上顯示計(jì)時(shí)時(shí)間上顯示計(jì)時(shí)時(shí)間mm:ss)。)。void InitializeTMR1() TMR1 = 0; /計(jì)數(shù)寄存器計(jì)數(shù)寄存器TMR10,從,從0開(kāi)始計(jì)數(shù)開(kāi)始計(jì)數(shù) T1CON = 0 x0030;/關(guān)閉定時(shí)器,使用內(nèi)部時(shí)

44、鐘,預(yù)分頻關(guān)閉定時(shí)器,使用內(nèi)部時(shí)鐘,預(yù)分頻比比1:256 PR1 =0 x1c20; /周期寄存器賦值,使定時(shí)時(shí)間為周期寄存器賦值,使定時(shí)時(shí)間為1s IFS0bits.T1IF = 0; /清除清除TMR1的中斷標(biāo)志的中斷標(biāo)志 IPC0bits.T1IP = 7; /中斷優(yōu)先級(jí)為中斷優(yōu)先級(jí)為7 IEC0bits.T1IE = 1; /使能定時(shí)中斷使能定時(shí)中斷int main() OpenLCD( ) ;putrsLCD(mm:ss) ;InitializeTMR1();T1CONbits.TON = 1;/打開(kāi)定時(shí)器打開(kāi)定時(shí)器void _attribute_(_interrupt_) _T1I

45、nterrupt(void) if(seconds59)seconds+;elseseconds=0;if(minutesSelect ToolsPICkit 3 選擇調(diào)試工具;選擇調(diào)試工具;(3點(diǎn)擊點(diǎn)擊DebuggerSettings,在,在Settings窗口中點(diǎn)擊窗口中點(diǎn)擊Power欄,選擇由欄,選擇由PICkit3向?qū)嶒?yàn)板供電;向?qū)嶒?yàn)板供電;(4完成間隔完成間隔1s/5s/10s的流水燈實(shí)驗(yàn);的流水燈實(shí)驗(yàn);(5完成簡(jiǎn)易計(jì)數(shù)器實(shí)驗(yàn);完成簡(jiǎn)易計(jì)數(shù)器實(shí)驗(yàn);(6完成交通燈實(shí)驗(yàn);完成交通燈實(shí)驗(yàn);五五. 實(shí)驗(yàn)報(bào)告內(nèi)容與要求實(shí)驗(yàn)報(bào)告內(nèi)容與要求(1簡(jiǎn)述定時(shí)器工作原理;簡(jiǎn)述定時(shí)器工作原理;(2總結(jié)定時(shí)器

46、的設(shè)計(jì)方法??偨Y(jié)定時(shí)器的設(shè)計(jì)方法。主要內(nèi)容主要內(nèi)容第第4 4節(jié)節(jié) 輸出比較輸出比較輸出比較介紹輸出比較介紹輸出比較的工作模式輸出比較的工作模式輸出比較的控制寄存器輸出比較的控制寄存器輸出比較應(yīng)用舉例輸出比較應(yīng)用舉例輸出比較實(shí)驗(yàn)輸出比較實(shí)驗(yàn)631.1.輸出比較輸出比較輸出比較模塊工作時(shí),把所選的定時(shí)器的時(shí)基值與輸出比較模塊工作時(shí),把所選的定時(shí)器的時(shí)基值與1/21/2個(gè)比個(gè)比較寄存器的值作比較,在比較匹配相等發(fā)生時(shí)能產(chǎn)生較寄存器的值作比較,在比較匹配相等發(fā)生時(shí)能產(chǎn)生單個(gè)脈沖輸出或連續(xù)脈沖輸出。單個(gè)脈沖輸出或連續(xù)脈沖輸出。輸出比較模塊從引腳輸出的脈沖頻率和占空比可調(diào),該信號(hào)輸出比較模塊從引腳輸出的脈

47、沖頻率和占空比可調(diào),該信號(hào)可以用來(lái)控制外部設(shè)備以滿足不同用途的需要,如延時(shí)驅(qū)可以用來(lái)控制外部設(shè)備以滿足不同用途的需要,如延時(shí)驅(qū)動(dòng)、功率控制、直流或步進(jìn)電機(jī)、可控硅觸發(fā)等。動(dòng)、功率控制、直流或步進(jìn)電機(jī)、可控硅觸發(fā)等。dsPIC30F4011dsPIC30F4011有有4 4個(gè)輸出比較通道,以符號(hào)個(gè)輸出比較通道,以符號(hào)OC1/2/3/4OC1/2/3/4等表示。等表示。所有輸出比較通道功能上是都相同的。所有輸出比較通道功能上是都相同的。4.1 4.1 輸出比較介紹輸出比較介紹4.1 4.1 輸出比較介紹輸出比較介紹2.2.輸出比較模式框圖輸出比較模式框圖定時(shí)器時(shí)基值定時(shí)器時(shí)基值比較寄存器比較寄存器

48、定時(shí)器周期匹配信號(hào)定時(shí)器周期匹配信號(hào)比較匹配比較匹配周期匹配周期匹配654.2 4.2 輸出比較工作模式輸出比較工作模式1.1. 每個(gè)輸出比較模塊均有以下工作模式:每個(gè)輸出比較模塊均有以下工作模式:2.2. 單比較匹配模式單比較匹配模式3.3. 比較強(qiáng)制比較強(qiáng)制I/O I/O 引腳為低電平輸出引腳為低電平輸出4.4. 比較強(qiáng)制比較強(qiáng)制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. 單個(gè)輸出脈沖單個(gè)輸出脈沖8.8. 連續(xù)輸出脈沖連續(xù)輸出脈沖9.9. 簡(jiǎn)單脈沖寬度調(diào)制簡(jiǎn)單脈

49、沖寬度調(diào)制PWMPWM方式方式662.2.單比較匹配模式單比較匹配模式 輸出比較模塊把一個(gè)值裝入輸出比較模塊把一個(gè)值裝入OCxR OCxR 寄存器,并將該值與所選定寄存器,并將該值與所選定時(shí)器的計(jì)數(shù)器寄存器時(shí)器的計(jì)數(shù)器寄存器TMRTMR的值作比較,當(dāng)比較匹配事件發(fā)生時(shí):的值作比較,當(dāng)比較匹配事件發(fā)生時(shí):(1 1OCx OCx 引腳的初始狀態(tài)為低電平時(shí),比較匹配事件強(qiáng)制該引引腳的初始狀態(tài)為低電平時(shí),比較匹配事件強(qiáng)制該引腳為高電平;兩個(gè)指令時(shí)鐘后,相應(yīng)通道的中斷標(biāo)志位腳為高電平;兩個(gè)指令時(shí)鐘后,相應(yīng)通道的中斷標(biāo)志位OCxIF OCxIF 被置被置1 1。4.2 4.2 輸出比較工作模式輸出比較工作

50、模式寄寄存存器器值值預(yù)預(yù)先先設(shè)設(shè)置置(2 2當(dāng)當(dāng)OCx OCx 引腳的初始狀態(tài)為高電平時(shí),比較匹配事件強(qiáng)引腳的初始狀態(tài)為高電平時(shí),比較匹配事件強(qiáng)制該引腳為低電平;兩個(gè)指令時(shí)鐘后,相應(yīng)通道的中斷標(biāo)制該引腳為低電平;兩個(gè)指令時(shí)鐘后,相應(yīng)通道的中斷標(biāo)志位志位OCxIF OCxIF 被置被置1 1 。寄寄存存器器值值預(yù)預(yù)先先設(shè)設(shè)置置68(3 3輸出引腳輸出引腳Ocx Ocx 初始化驅(qū)動(dòng)為低電平,比較匹配事件使初始化驅(qū)動(dòng)為低電平,比較匹配事件使OCx OCx 引腳電平交替翻轉(zhuǎn)輸出高低電平。引腳電平交替翻轉(zhuǎn)輸出高低電平。寄存器值預(yù)先設(shè)置寄存器值預(yù)先設(shè)置PR2 OCxROCOC引腳輸出脈沖信號(hào)的周期由引腳輸

51、出脈沖信號(hào)的周期由2 2* *PRPR的值決定的值決定OCOC引腳輸出脈沖信號(hào)的占空比為引腳輸出脈沖信號(hào)的占空比為50%50%693. 3. 雙比較匹配模式雙比較匹配模式單個(gè)輸出脈沖單個(gè)輸出脈沖連續(xù)輸出脈沖連續(xù)輸出脈沖 輸出比較模塊把輸出比較模塊把2 2個(gè)值分別裝入個(gè)值分別裝入OCxR OCxR 寄存器和寄存器和OCxRS OCxRS 寄存器,寄存器,OCxROCxR寄存器的值與所選的定時(shí)器的計(jì)數(shù)器寄存器寄存器的值與所選的定時(shí)器的計(jì)數(shù)器寄存器TMRTMR的值作比的值作比較,在比較匹配事件發(fā)生時(shí),在較,在比較匹配事件發(fā)生時(shí),在OCx OCx 引腳上產(chǎn)生脈沖的前引腳上產(chǎn)生脈沖的前上升沿。上升沿。O

52、CxRSOCxRS寄存器的值與所選的定時(shí)器的計(jì)數(shù)器寄存器寄存器的值與所選的定時(shí)器的計(jì)數(shù)器寄存器TMRTMR的值作比的值作比較,在比較匹配事件發(fā)生時(shí),在較,在比較匹配事件發(fā)生時(shí),在OCx OCx 引腳上產(chǎn)生脈沖的后引腳上產(chǎn)生脈沖的后下降沿。下降沿。4.2 4.2 輸出比較工作模式輸出比較工作模式70(1單個(gè)輸出脈沖寄寄存存器器值值預(yù)預(yù)先先設(shè)設(shè)置置71(2連續(xù)輸出脈沖OC引腳輸出脈沖信號(hào)的周期由引腳輸出脈沖信號(hào)的周期由PRy的值決定的值決定OC引腳輸出脈沖信號(hào)的占空比引腳輸出脈沖信號(hào)的占空比OCxRS-OCxR)/PRy寄寄存存器器值值預(yù)預(yù)先先設(shè)設(shè)置置4. 4. 簡(jiǎn)單簡(jiǎn)單PWMPWM模式模式脈沖寬

53、度調(diào)制脈沖寬度調(diào)制PWMPWM是英文是英文“Pulse Width “Pulse Width ModulationModulation的縮寫,簡(jiǎn)稱脈寬調(diào)制。它是利用微處理器的縮寫,簡(jiǎn)稱脈寬調(diào)制。它是利用微處理器的數(shù)字輸出來(lái)對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù),的數(shù)字輸出來(lái)對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù),廣泛應(yīng)用于測(cè)量,通訊,功率控制與變換等許多領(lǐng)域。廣泛應(yīng)用于測(cè)量,通訊,功率控制與變換等許多領(lǐng)域。 不帶故障保護(hù)輸入的不帶故障保護(hù)輸入的PWM PWM 方式方式 帶故障保護(hù)輸入的帶故障保護(hù)輸入的PWM PWM 方式故障保護(hù)通過(guò)方式故障保護(hù)通過(guò)OCFA OCFA 引腳提供,引腳提供,當(dāng)引腳

54、上檢測(cè)到了邏輯當(dāng)引腳上檢測(cè)到了邏輯“0”“0”,所選的,所選的PWM PWM 輸出引腳將被置輸出引腳將被置于高阻態(tài),于高阻態(tài),PWM PWM 輸出立即關(guān)閉)輸出立即關(guān)閉)724.2 4.2 輸出比較工作模式輸出比較工作模式輸出比較模塊配置為輸出比較模塊配置為PWM PWM 工作模式時(shí),工作模式時(shí),通過(guò)寫入所選定時(shí)器的周期寄存器通過(guò)寫入所選定時(shí)器的周期寄存器PRyPRy設(shè)置設(shè)置PWM PWM 周期;周期;OCxR OCxR 是主鎖存器只讀);是主鎖存器只讀);OCxRS OCxRS 是輔助鎖存器,用戶通過(guò)寫入是輔助鎖存器,用戶通過(guò)寫入OCxRS OCxRS 寄存器設(shè)置寄存器設(shè)置PWM PWM 占

55、空占空比;比;在每個(gè)定時(shí)器與周期寄存器匹配事件產(chǎn)生時(shí)在每個(gè)定時(shí)器與周期寄存器匹配事件產(chǎn)生時(shí)PWM PWM 周期結(jié)束時(shí)),周期結(jié)束時(shí)),寄存器寄存器OCxROCxR被裝載被裝載OCxRSOCxRS的內(nèi)容。的內(nèi)容。73PWM 周期周期 = (PR) + 1 4 TOSC (TMR 預(yù)分頻值預(yù)分頻值)PWM 輸出波形輸出波形寄寄存存器器值值預(yù)預(yù)先先設(shè)設(shè)置置75每個(gè)輸出比較通道均有下列寄存器:每個(gè)輸出比較通道均有下列寄存器:OCxCON OCxCON :通道的控制寄存器:通道的控制寄存器OCxR OCxR :輸出比較通道的數(shù)據(jù)寄存器:輸出比較通道的數(shù)據(jù)寄存器OCxRS OCxRS :輸出比較通道的輔助

56、數(shù)據(jù)寄存器:輸出比較通道的輔助數(shù)據(jù)寄存器4.3 4.3 輸出比較的控制寄存器輸出比較的控制寄存器76輸出比較定時(shí)器選擇位輸出比較定時(shí)器選擇位1 = Timer 3 是比較是比較x 的時(shí)鐘源的時(shí)鐘源0 = Timer 2 是比較是比較x 的時(shí)鐘源的時(shí)鐘源OCM:輸出比較模式選擇位:輸出比較模式選擇位111 = OCx 處于處于PWM 方式,錯(cuò)誤引腳使能方式,錯(cuò)誤引腳使能110 = OCx 處于處于PWM 方式,錯(cuò)誤引腳禁止方式,錯(cuò)誤引腳禁止101 = 初始化初始化OCx 引腳為低電平,在引腳為低電平,在OCx 引腳上產(chǎn)生連續(xù)的輸出脈沖雙)引腳上產(chǎn)生連續(xù)的輸出脈沖雙)100 = 初始化初始化OCx

57、 引腳為低電平,在引腳為低電平,在OCx 引腳上產(chǎn)生單個(gè)輸出脈沖引腳上產(chǎn)生單個(gè)輸出脈沖011 = 比較匹配事件使比較匹配事件使OCx 引腳的電平交替翻轉(zhuǎn)單)引腳的電平交替翻轉(zhuǎn)單)010 = 初始化初始化OCx 引腳為高電平,比較匹配事件強(qiáng)制引腳為高電平,比較匹配事件強(qiáng)制OCx 引腳為低電平引腳為低電平001 = 初始化初始化OCx 引腳為低電平,比較匹配事件強(qiáng)制引腳為低電平,比較匹配事件強(qiáng)制OCx 引腳為高電平引腳為高電平000 = 輸出比較通道禁止輸出比較通道禁止例例1 1:采用單比較匹配模式在:采用單比較匹配模式在OC4OC4RD3RD3引腳產(chǎn)生引腳產(chǎn)生1.6k Hz1.6k Hz占空比為

58、占空比為50%50%)的連續(xù)信號(hào)。)的連續(xù)信號(hào)。設(shè)置分析:設(shè)置分析:(1 1要求輸出的信號(hào)要求輸出的信號(hào) f= 1.6k Hz f= 1.6k Hz 系統(tǒng)時(shí)鐘頻率為系統(tǒng)時(shí)鐘頻率為 Fosc=7.3728MHz Fosc=7.3728MHz 指令周期時(shí)鐘頻率為指令周期時(shí)鐘頻率為 Fcy=Fosc/4=1.8432MHz Fcy=Fosc/4=1.8432MHz(2 2輸出比較模塊采用輸出比較模塊采用1616位定時(shí)器位定時(shí)器Time2Time2,Time2Time2使用內(nèi)部使用內(nèi)部時(shí)鐘,預(yù)分頻時(shí)鐘,預(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的時(shí)鐘源的時(shí)鐘源 OC4R = 0 x0200; /設(shè)置匹配值設(shè)置匹配值0 x0200 T2CON = 0 x0000;/預(yù)分頻預(yù)分頻1:1,16位定時(shí)器,使用內(nèi)部時(shí)鐘位定時(shí)器,使用內(nèi)部時(shí)鐘 PR2 = 0 x0240; /周期寄存器賦值周期寄存器賦值0 x02

60、40,TMR2在在0 x0240處復(fù)位處復(fù)位 TMR2 = 0 x00; /TMR2初值初值0 x00 IFS1bits.OC4IF = 0; /清除輸出比較中斷標(biāo)志位清除輸出比較中斷標(biāo)志位 IEC1bits.OC4IE = 1; /使能輸出比較中斷使能輸出比較中斷 IPC5bits.OC4IP = 7; /設(shè)置中斷優(yōu)先級(jí)設(shè)置中斷優(yōu)先級(jí)7 IEC0bits.T2IE = 0; /不使能不使能Timer2定時(shí)器中斷定時(shí)器中斷/*中斷子程序:輸出比較中斷子程序:輸出比較3中斷,比較匹配時(shí)產(chǎn)生中斷中斷,比較匹配時(shí)產(chǎn)生中斷*/void _attribute_(_interrupt_) _OC4Inte

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論