我在公车被蹭水后当晚就来了月经,在公车上露着奶被男人玩,公车上的人妻沦陷完整版,(NP、高H、纯肉)公车,公车娇喘抽搐喷潮H文苏小暖,公车全黄H全肉短篇公车之狼

技術熱線: 4007-888-234
設計開發(fā)

專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

開發(fā)工具

提供開發(fā)工具、應用測試 完善的開發(fā)代碼案例庫分享

技術支持

從全面的產(chǎn)品導入到強大技術支援服務 全程貼心伴隨服務,創(chuàng)造無限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力

新聞中心

提供最新的單片機資訊,行業(yè)消息以及公司新聞動態(tài)

何謂Read-Modify-Write,導致的問題及其解決之道

更新時間: 2019-03-26
閱讀量:5587

只要PICmicro的指令,所處理的FILE (暫存器,記憶體,和I/O的統(tǒng)稱),其最終的值,和指令處理前的值有關,那麼,這種指令便是所謂的Read-Modify-Write指令。因為這類指令的動作,可以再細分為三個小步驟,即是讀(READ),修改(MODIFY),接著才是寫(WRITE)。

如:ADDWF,DECF,IORWF,XORWF,BSF,BCF,‥‥等等皆是。

在使用這類指令的時候,如果所處理的FILE是I/O, 就必須要特別小心。因為,假設工作電壓為5V;而您在PORTB的8支腳,沒有串接電阻,便分別接了8顆二極體(也許是LED)到地。如果,您在先前下了"BSF PORTB,0"這道指令,使得PORTB第0腳上的LED亮了。當您再執(zhí)行了”BSF PORTB,1"這道指令後,雖然備PORTB第1腳上的LED亮了,但是,PORTB第0腳上的LED卻會熄掉。原因是因為,執(zhí)行”BSF PORTB,1”時,會先將整個PORTB的值往回讀,而它讀到的PORTB第0腳,卻是相當於低電位(被二極體拉為0.7V)。當它再把整個PORTB的值寫出去的時候,PORTB第0腳就被寫成低電位,自然燈就熄了。
解決之道是:串電阻,或者不要直接對I/O作Read-Modify-Write指令。

另外還有一類要注意的狀況是:如當您將”BSF PORTB,0”和”BSF PORTB,1”兩道指令相連地,沒有空檔地執(zhí)行時,縱使您沒有上一段所述線路設計不良之狀況,有時候您也會發(fā)現(xiàn)PORTB, 0的高電位也會不見了。導致這個現(xiàn)象的原因是:因為也許您這兩支腳的外面接了長導線,有相當大的電容、電感性會阻止電位的變化;而且,PIC指令執(zhí)行是在最後1/4週期時”寫出”,而在第一個1/4週期時”讀入”,PORTB,0還來不及升至高電位,便被下一個指令讀回去了。
解決之道是:通常在兩道指令間插入個NOP指令就可以了。

不過,PIC18有新的暫存器LATx。舉凡寫入LATx的值,皆會被映射寫至PORTx。但,從LATx讀回(也許是因Read-Modify-Write讀回)的值,則不受PORTx的影響。所以,簡單的說,想寫值到PORTx去,就只要寫到LATx去就可以了;而想從PORTx讀回值,就直接讀PORTx。 也就是說,對LATx下指令,就不必考慮"Read-Modify-Write"的現(xiàn)象了。



瑞昌市| 西畴县| 镶黄旗| 胶州市| 图木舒克市| 大石桥市| 阳朔县| 卓资县| 石首市| 松原市| 崇仁县| 酉阳| 无为县| 个旧市| 荃湾区| 五大连池市| 怀宁县| 瑞金市| 靖安县| 恩施市| 尉氏县| 阿城市| 延吉市| 潞城市| 诏安县| 丹凤县| 广昌县| 莎车县| 乐平市| 大同县| 濮阳市| 循化| 安图县| 丹凤县| 义乌市| 大冶市| 乡城县| 元江| 墨江| 垣曲县| 响水县|