中文字幕无码不卡一区二区三区_少妇被又大又粗又爽毛片久久黑人_91精品国产在热久久无毒不卡_久久久久久亚洲综合网站

技術(shù)熱線(xiàn): 4007-888-234

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

提供開(kāi)發(fā)工具、應(yīng)用測(cè)試 完善的開(kāi)發(fā)代碼案例庫(kù)分享

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

技術(shù)支持

何謂Read-Modify-Write,導(dǎo)致的問(wèn)題及其解決之道

更新時(shí)間: 2019-03-26

只要PICmicro的指令,所處理的FILE (暫存器,記憶體,和I/O的統(tǒng)稱(chēng)),其最終的值,和指令處理前的值有關(guān),那麼,這種指令便是所謂的Read-Modify-Write指令。因?yàn)檫@類(lèi)指令的動(dòng)作,可以再細(xì)分為三個(gè)小步驟,即是讀(READ),修改(MODIFY),接著才是寫(xiě)(WRITE)。

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

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

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

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



404
返回首頁(yè) |  返回上一頁(yè)
贺兰县| 庆阳市| 沁水县| 深泽县| 泸州市| 抚远县| 密云县| 嵊州市| 吴桥县| 龙川县| 宁城县| 黄浦区| 开江县| 开阳县| 安康市| 宜川县| 芜湖县| 临江市| 和龙市| 通化县| 扶余县| 潮州市| 屯留县| 抚远县| 北宁市| 临漳县| 西乌珠穆沁旗| 宣威市| 新龙县| 沂南县| 中江县| 平乡县| 石柱| 剑河县| 曲阳县| 土默特左旗| 泗阳县| 灵台县| 卢龙县| 澄江县| 五家渠市|