|
|||||||||||
| 技術(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 |
緊急求救! |
| 作者:lb0021 欄目:單片機 |
我現(xiàn)在用ICD調(diào)試時出現(xiàn)了奇怪的問題,現(xiàn)象如下: void interrupt isr(void) { if(RCIF && RCIE) { if(reset_mode) { k++; byte = sci_GetByte(); if(byte!=table[k]) { timing_error=1; } .... 在中斷中我是通過判斷RCIF進來的,可是當(dāng)我執(zhí)行了幾條指令后發(fā)現(xiàn)在sci_GetByte()中停住了,原因是RCIF什么時候被清0了,倒是沒有出現(xiàn)像cly0324說的CREN被清0,我用單步看匯編指令,看到是執(zhí)行到if(RCIF && RCIE)時PICC編譯的一條:bsf 0x03,0x05使RCIF變?yōu)?了,請問為什么PICC要加入一條清status,PD位的指令,而且會影響到RCIF??在線等待。 另附 unsigned CHAR sci_GetByte(void) { while(!RCIF) /* set when register is not empty */ { CLRWDT(); continue; } //RCIF=0; //read ONLY,當(dāng)數(shù)據(jù)從RCREG中讀出即清0 return RCREG; } |
| 2樓: | >>參與討論 |
| 作者: 張明峰 于 2003/10/20 14:50:00 發(fā)布:
清除RCIF bsf 0x03,0x05并不是清status,PD位,而是置BANK位RP0的指令。相信不會影響到其它寄存器。 連續(xù)運行試試 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |