新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC單片機:讀-修改-寫問題及解決方案

        PIC單片機:讀-修改-寫問題及解決方案

        作者: 時間:2011-04-30 來源:網絡 收藏

        何謂讀--寫,導致的及其解決之道:

        本文引用地址:http://www.104case.com/article/172847.htm

          只要micro的命令,所處理的FILE (暫存器,內存,和I/O的統稱),其最終的值,和命令處理前的值有關,那么,這種命令便是所謂的讀--寫命令。因為這類命令的操作,可以再細分為三個小步驟,即是讀(READ),(MODIFY),接著才是寫(WRITE)。

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

          在使用這類命令的時候,如果所處理的FILE是I/O, 就必須要特別小心。因為,假設任務電壓為5V;而您在PORTB的8支腳,沒有串接電阻,分別接了8顆二極管(也許是LED)到地。如果,您在先前下了BSF PORTB,0這條命令,使得PORTB第0腳上的LED亮了。當您再運行了”BSF PORTB,1這條命令后,雖然PORTB第1腳上的LED亮了,但是,PORTB第0腳上的LED卻會熄掉。原因是因為,運行”BSF PORTB,1”時,會先將整個PORTB的值往回讀,而它讀到的PORTB第0腳,卻是相當於低電位(被二極管拉為0.7V)。當它再把整個PORTB的值寫出去的時候,PORTB第0腳就被寫成低電位,自然燈就熄了。

          解決之道是:串電阻,或者不要直接對I/O作讀-修改-寫命令。

          另外還有一類要注意的狀況是:如當您將”BSF PORTB,0”和”BSF PORTB,1”兩條命令連在一起,沒有空運行時,縱使您沒有上一段所述線路設計不良之狀況,有時候您也會發現PORTB, 0的高電位也會不見了。導致這個現象的原因是:因為也許您這兩支腳的外面接了長導線,有相當大的電容、電感性會阻止電位的變化;而且,命令運行是在最后1/4周期時”寫出”,而在第一個1/4周期時”讀入”,PORTB,0還來不及升至高電位,便被下一個命令讀回去了。

          解決之道是:通常在兩道命令間插入個NOP命令就可以了。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 古蔺县| 昌吉市| 雅安市| 炎陵县| 贺州市| 利津县| 磐石市| 平南县| 洪洞县| 云梦县| 杂多县| 上高县| 桂阳县| 恭城| 洪洞县| 德惠市| 滦南县| 黄浦区| 嫩江县| 靖安县| 嘉善县| 建阳市| 通辽市| 乌拉特中旗| 郯城县| 桐庐县| 满城县| 崇文区| 恩平市| 武义县| 彰化县| 三门峡市| 通化市| 安宁市| 大洼县| 民县| 麟游县| 宝山区| 哈尔滨市| 汉阴县| 杭锦后旗|