|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
B口中斷怎麼連進(jìn)兩次 |
| 作者:ms 欄目:單片機(jī) |
我的程序見下 #include <pic.h> void interrupt pbint(void) { RBIF = 0; //清中斷 PORTB = PORTB; PORTD += 1; } main() { TRISD=0X00; PORTD=0X00; PORTB = 0X10; //設(shè)定4為輸入 ei(); //開中斷 RBIE = 1; //B口中斷 while(1) { ; } } 輸出波型見下圖,B口來一個變化,D口就變了兩次,為何 ../uploadfile/200705151225479114.jpg ![]() |
| 2樓: | >>參與討論 |
| 作者: XIEYUANBIN 于 2004/9/2 8:40:00 發(fā)布:
每次變化都會引起中斷 B口電平中斷在每次電平改變的時候都會產(chǎn)生中斷,不管是上升沿還是下降沿,并且應(yīng)在清中斷標(biāo)志之前讀RB口的值,你那個是在清標(biāo)志之后,當(dāng)然會進(jìn)去兩次。另外為防止干擾,需將其它不用的口設(shè)置成輸出。 * - 本貼最后修改時間:2004-9-2 8:45:53 修改者:XIEYUANBIN |
|
| 3樓: | >>參與討論 |
| 作者: ms 于 2004/9/2 9:32:00 發(fā)布:
改了清標(biāo)誌的順序,好了,多謝,謝元彬先生,是嗎 |
|
| 4樓: | >>參與討論 |
| 作者: XIEYUANBIN 于 2004/9/2 9:45:00 發(fā)布:
值得探討 還有PORTB=PORTB那句值得探討,如果你對PORTB口的電平很有把握,那么這句程序應(yīng)該說沒問題,但如果沒把握的話,由于I/O口的讀—修改—寫的過程,這句最好改成W=PORTB或TEMP=PORTB,否則會錯過一些變化或引起一些不必要的麻煩。 |
|
| 5樓: | >>參與討論 |
| 作者: ms 于 2004/9/2 10:16:00 發(fā)布:
嗯,那我再試一下 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |