|
|||||||||||
| 技術(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 |
請幫忙看看這么個情況 |
| 作者:qingxia 欄目:單片機 |
16F873A程序的一段 BSF STATUS,RP0 MOVLW B'11000111' MOVWF TRISB MOVLW B'00000001' MOVWF TRISC; MOVLW B'00000011' MOVWF TRISA BCF STATUS,RP0 ; 這段程序在單步運行的時候居然能對PORTB,PORTC的值進行修改。。。(B,C口上有外設(shè)動作,內(nèi)部文件寄存器值也變了),這時怎么回事呀?? |
| 2樓: | >>參與討論 |
| 作者: hotpower 于 2003/8/19 1:57:00 發(fā)布:
頭加 BCF STATUS,RP1 |
|
| 3樓: | >>參與討論 |
| 作者: 張明峰 于 2003/8/19 20:05:00 發(fā)布:
一點問題都沒有 在你的程序執(zhí)行前,所有的TRISx寄存器都是0xff,即全部的IO引腳都是輸入狀態(tài)。此時你觀察到的PORTx寄存器為當(dāng)前管腳上的輸入電平(0/1),注意這些值是由外部電路(信號)決定的。于此同時端口輸出鎖存器上的值是隨機的,由于管腳處于輸入狀態(tài),這些值“躲”起來了。 當(dāng)你做了端口TRISx的設(shè)定后,某些引腳變成了輸出狀態(tài),此時,原本在端口輸出鎖存器上的值就輸出到了管腳上,這些電平完全有可能和你作為輸入時讀到的外部電平不一樣。這就是你所謂的。。。 |
|
| 4樓: | >>參與討論 |
| 作者: qingxia 于 2003/8/20 15:43:00 發(fā)布:
恍然大悟。。。其實此前問題已解決 感謝斑竹的指點。。。明白了原理。在此之前,我已經(jīng)解決了這個問題:我在前面對PORTB,PORTC寄存器進行了清零,結(jié)果就沒有這個問題了。按照原理來看,對于PORTB,PORTC的清零似乎是可以對輸出鎖存器進行清除的? |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |