|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe |
程序問題!開機就進中斷!!如何改進程序質量呢?? |
| 作者:hpuyuxuan 欄目:單片機 |
程序問題!!開機就進中斷,RB口電平沒有變化,直接就進入中斷了, 我在RB5口又加了個判斷,才解決,可是為什么開機就中斷呢/???? 程序質量不夠!怎么改進呢,大蝦們多指較。! #include<pic.h> #include<pic16f62xa.h> __CONFIG(WDTDIS&PWRTEN&MCLRDIS&BOREN&UNPROTECT); #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 PORTBINT(); //RB口初始化 void INTRB(); //RB口中斷服務程序 void delay (int x) ;//延時程序。 main() { delay(10); PORTBINT(); //初始化RB口 ei(); //開啟總中斷 while(1) //等待中斷 { ; } } void PORTBINT() //RB口初始化 { TRISB=0xF0; //設置RB口為輸入方式 RBPU=0; //開啟RB口弱上拉 PORT_5=1; //RB5 先送高電平 RBIE=1; //開啟RB口中斷 PORTB=PORTB; //讀PORTB口,鎖存舊值,為變位中斷創(chuàng)造條件 } void interrupt RB() //RB口中斷服務程序 { if (RBIF==1) //是否RB口中斷 { if(PORT_5==0) INTRB();} //是否高電平到低電平變化引起中斷,剔出低至高變化中斷。 } void INTRB() //RB口中斷服務程序 { TRISA=0; RBIF=0; //清 RB口中斷標志位 PORTB=PORTB; //讀PORTB口,改變中斷發(fā)生的條件,防止開到位開關一直處于閉合狀態(tài)時, //再次發(fā)生中斷。 RA0=1; //BA0輸出高電平 } void delay (int x) //延時程序。 { int y; while(x--) { for(y=1000;y>0;y--){;} } } |
| 2樓: | >>參與討論 |
| 作者: wo07102329 于 2007/4/5 10:00:00 發(fā)布:
笑嘻嘻 松松散散 |
|
| 3樓: | >>參與討論 |
| 作者: hpuyuxuan 于 2007/4/5 10:08:00 發(fā)布:
大蝦,怎么松松散散呢?? 大蝦,怎么松松散散呢?? 請具體的指教下 不盛感激 |
|
| 4樓: | >>參與討論 |
| 作者: sillboy 于 2007/4/5 12:07:00 發(fā)布:
電路沒什么問題吧 |
|
| 5樓: | >>參與討論 |
| 作者: yewuyi 于 2007/4/5 13:33:00 發(fā)布:
如果用的是16系列的MCU 那么中斷函數肯定有問題。 在開某個中斷源時,一般都需要先軟件清除一下標志位,這是提高軟件健壯性常規(guī)方法 你仔細檢查一下中斷入口…… |
|
| 6樓: | >>參與討論 |
| 作者: hpuyuxuan 于 2007/4/5 13:46:00 發(fā)布:
謝謝 謝謝,電路肯定沒有問題。 因為我電路很簡單。 5樓的大蝦,謝謝啦!! 我用的就是16系列的, 我試試! |
|
| 7樓: | >>參與討論 |
| 作者: hpuyuxuan 于 2007/4/5 13:54:00 發(fā)布:
非常感謝5樓的大蝦 非常感謝5樓的大蝦, 我剛才試驗了, 就是沒有清標志位。 再次謝謝! |
|
| 8樓: | >>參與討論 |
| 作者: yewuyi 于 2007/4/5 15:34:00 發(fā)布:
似乎你的中斷函數也有點問題 |
|
| 9樓: | >>參與討論 |
| 作者: hpuyuxuan 于 2007/4/5 16:25:00 發(fā)布:
有什么問題!大蝦請指教! 有什么問題!大蝦請指教! 我是個新手,大蝦盡管批評。 謝謝!! |
|
| 10樓: | >>參與討論 |
| 作者: xieyuanbin 于 2007/4/5 19:26:00 發(fā)布:
端口不能懸空 所有的輸入端口不能懸空.中斷標志在開中斷前先清一遍,排除是否誤開了其他中斷. |
|
| 11樓: | >>參與討論 |
| 作者: hpuyuxuan 于 2007/4/6 14:14:00 發(fā)布:
xiexie 謝謝! 又長知識了 謝謝10樓大蝦 |
|
|
|
| 免費注冊為維庫電子開發(fā)網會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |