|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
CCP1輸入捕捉中斷問題 |
| 作者:hpuyuxuan 欄目:單片機 |
CCP1輸入捕捉中斷問題又要麻煩大蝦了,我自己寫的CCP1 捕捉輸入中斷,查了N多資料才寫出來的 費了好大勁,程序?qū)懲炅耍瑓s不能正常中斷,編譯能過,大蝦們多指教。 #include<pic.h> #include<pic16f62xa.h> __CONFIG(WDTDIS&PWRTEN&BOREN&UNPROTECT&LVPDIS); #define PORTBIT(add,bit) ((unsigned)(&add)*8+(bit)) static bit PORT_0 @ PORTBIT(PORTB,0); //定義PORTB 0位 static bit PORT_1 @ PORTBIT(PORTB,1); //定義PORTB 1位 static bit PORT_2 @ PORTBIT(PORTB,2); //定義PORTB 2位 static bit PORT_3 @ PORTBIT(PORTB,3); //定義PORTB 3位 static bit PORT_4 @ PORTBIT(PORTB,4); //定義PORTB 4位 static bit PORT_5 @ PORTBIT(PORTB,5); //定義PORTB 5位 static bit PORT_6 @ PORTBIT(PORTB,6); //定義PORTB 6位 static bit PORT_7 @ PORTBIT(PORTB,7); //定義PORTB 7位 void ccpint(); //ccp中斷初始化程序 void delay (int x) ; //延時程序 main() { delay(10); ccpint(); //ccp中斷初始化程序 ei(); //開總中斷 while(1) { ; } } //等待中斷 void ccpint() //ccp中斷初始化程序 { CCP1CON=0x04; //設(shè)置CCP捕捉每個脈沖的下降沿 TRISB3=1; //RB3為輸入方式 PORT_3=1; //RB3先送高電平 T1OSCEN=0; //關(guān)閉T1振蕩器 TMR1H=0; //定時器清零 TMR1L=0; TMR1ON=1; //使能TMR1 TMR1CS=0; //TMR工作在定時器模式 CCP1IF=0; //清除CCP1的中斷標(biāo)志,以免中斷一打開就進入中斷 PEIE=1; //外圍中斷允許 CCP1IE=1; //CCP中斷允許 TRISB3=1; //PORTB3設(shè)置為輸入方式 } void interrupt int_ccp() //ccp中斷服務(wù)程序 { if(CCP1IF==1) { CCP1IF=0; //清除CCP中斷標(biāo)志位 TRISB1=TRISB2=0; PORT_1=PORT_2=0; //電機停止轉(zhuǎn)動。 TRISA=0; RA0=1; //RA0輸出高電平,燈亮,證明進入中斷。 } } void delay (int x) //延時程序。 { int y; while(x--) { for(y=1000;y>0;y--){;} } } |
| 2樓: | >>參與討論 |
| 作者: hpuyuxuan 于 2007/4/7 17:09:00 發(fā)布:
怎么沒有人理我呢? 大蝦們,幫小弟看看程序好不好?? 謝謝, |
|
| 3樓: | >>參與討論 |
| 作者: hpuyuxuan 于 2007/4/10 9:56:00 發(fā)布:
難道沒有人看我的程序嗎? 高手在哪里?? 高手在哪里??高手在哪里??高手在哪里??高手在哪里?? 高手在哪里?? 難道沒有人看我的程序嗎? |
|
| 4樓: | >>參與討論 |
| 作者: puppyh 于 2007/4/10 10:01:00 發(fā)布:
幫你頂一下 對于初學(xué)者我是大力相助的,只可惜我已經(jīng)8年不要MICROCHIP的單片機,幫不上忙。只能幫你往上頂! |
|
| 5樓: | >>參與討論 |
| 作者: hpuyuxuan 于 2007/4/10 16:09:00 發(fā)布:
謝謝幫頂! 高手都是由初學(xué)者轉(zhuǎn)變來的 。 希望高手們也不吝賜教。 幫幫初學(xué)者,我代表初學(xué)者向大蝦們表示敬意!! |
|
| 6樓: | >>參與討論 |
| 作者: xieyuanbin 于 2007/4/10 16:40:00 發(fā)布:
在每個數(shù)據(jù)手冊的每個功能中,都有相關(guān)寄存器集合 可看看你還有那些沒設(shè)置好. 一般要設(shè)置的是:INTCON:GIE,PEIE;PIE1或PIE2,CCPxCON等. |
|
| 7樓: | >>參與討論 |
| 作者: 蘭天白云 于 2007/4/10 21:07:00 發(fā)布:
ei(); 在哪里? |
|
| 8樓: | >>參與討論 |
| 作者: hpuyuxuan 于 2007/4/11 8:54:00 發(fā)布:
開總中斷已經(jīng)有了 總中斷已經(jīng)開了!! 謝謝樓上的大蝦! 真是郁悶?zāi)牵?br>問題到底在哪里??? |
|
| 9樓: | >>參與討論 |
| 作者: hzwei 于 2007/4/11 19:49:00 發(fā)布:
先用軟件模擬調(diào)試,看能不能進入中斷? TRISB3=1; //RB3為輸入方式 PORT_3=1; //RB3先送高電平 既然RB3設(shè)置為輸入,為何又能:RB3先送高電平? |
|
| 10樓: | >>參與討論 |
| 作者: xiyuan188 于 2007/4/13 16:12:00 發(fā)布:
ccp1捕捉中斷問題 在ccp1初始化程序中應(yīng)該清除ccp1,tmr1中斷允許位和中斷標(biāo)志位. 啟動tmr1時最好不要在初始化程序中,應(yīng)該在主程序中啟動定時器. |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |