⑴ 如何將數據寫入EEPROM
很多工藝過程需要對一些變數做長久保存。比如某些控制參數,在程序運行過程中可能會被修改,在改變後必須再一次永久保存以防掉電丟失。自然,這些參數不能由數據塊或初始化予以預置。因此,S7-200提供了將數據寫入EEPROM的功能。由於寫EEPROM是在每個掃描周期的尾部執行的,我的理解是一次掃描只能寫一個數據。這就帶來一個問題,如果有多個數據需要同時寫入這么辦?按照手冊上提供的方法,重復多寫幾個Network、多用幾個使能標識位可以嗎?這樣簡單的重復顯然會有問題:由於使用上升沿觸發寫EEPROM程序,完成了第一個寫入後程序將進入下一個掃描周期,盡管SM31.7已經被釋放,但後幾個使能位的上升沿已經不存在了;因此還是只能寫一個數據。 為了保證所有數據都能寫入EEPROM,我對手冊上的範例做了一些改動,相關程序請看附件。詳細說明如下: 1、為了將多個數據寫入EEPROM,就必須用多個掃描周期,而且保證每個掃描周期依次寫入一個數據,直到全部寫完。這樣,每個數據寫入的使能標識位在數據尚未寫入時必須處在使能狀態。而在寫入完成後必須退出使能狀態。 2、由於寫入程序的觸發還有一個SM31.7作為判斷條件,按照程序的時序關系,前一個寫入程序被使能後,後面的寫入程序必然會被屏蔽,因此無需擔心寫入條件發生改變。 3、在數據寫入被使能後及時退出本數據的寫入使能,避免下一個掃描周期被再次觸發。同時釋放寫入請求以使下一個數據的寫入請求能被響應。 4、一般來說,寫EEPROM不是一件經常發生的事件,因此不必擔心兩個相鄰掃描周期內同一個寫入使能位被再次觸發。除非程序本身的編寫有誤。 5、實常式序中用M0.0使能VD100的寫入,用M0.1使能VD104的寫入,M0.2同時使能上述兩個標識位(也可以在監控狀態下單獨使能某個位)。這里我們討論兩個標識位同時被使能的情況。 6、M0.0置位後,SM31.7=0,執行VD100的寫入程序;然後置位SM31.7,並立即復位M0.0。由於SM31.7被置位,即使M0.1也處於被使能狀態,在本次掃描周期內VD104的寫入請求被忽略,而M0.1還保持使能狀態。 7、在下一個掃描周期內,由於M0.0已經退出使能狀態,因此VD104的寫入請求將被響應。與M0.0一樣,寫入請求被響應後M0.1也立即退出使能狀態。 8、這樣,在兩個掃描周期內兩個數據被寫入EEPROM。如果有更多的數據需要保存,可以以此類推。 9、檢驗本程序的方法:在系統塊中將V寄存器的掉電保持全部取消,可以看到重新上電後前一次寫入V寄存器的數據會丟失。此時用本程序保存VD100和VD104,重新上電後可以看到這兩個寄存器內的數據依然存在。 10、兩個被寫入的寄存器地址可以隨意改變,無所謂是否連續。 這個程序是我自己琢磨出來的,貼出來供大夥兒拍拍磚。 西門子官方網站提供了一個免費的庫程序,可以一次寫入多個數據。網址是 「 http://support.automation.siemens.com/CN/llisapi.dll/17471561?func=ll&objId=17471561&objAction=csView&nodeid0=10805150&lang=zh&siteid=cseus&aktprim=0&extranet=standard&viewreg=CN&load=content 」。
⑵ 怎樣將數據寫到EEPROM
大神都不說啊,我外行說一下吧。首先看你的EEPROM的介面方式,SPI,還是I2C;然後網上下載個基本驅動函數,SPI的和I2C的到處找的到。然後是寫自己的函數,一般是自己寫的函數中調用基本函數。自己函數讀和寫都有協議和時序的,自己看datasheet;比如:先發0xXX,表示寫,接著發地址0xYY(也可能是0xYYYY),接著發數據,0xZZ。都發完了就表示:把0xZZ寫入0xYY了。可以再讀一下驗證,方法類似就是多一條返回數據的採集。基本驅動函數里就有。
⑶ pic單片機EEPROM怎麼編寫程序
在你的C文件里引用EEPROM函數的頭文件,eeprom_routines.h
然後在程序中使用
voideeprom_write(unsignedcharaddr,unsignedcharvalue);
unsignedchareeprom_read(unsignedcharaddr);
這兩個函數了。
這兩個函數一個讀一個寫。比如你想寫0x10到地址為0x55的EEPROM,
就寫:eeprom_write(0x55,0x10);
同理,如果想讀取0x55地址處的值,
就寫:ee_value=eeprom_read(0x55);
如果編譯時編譯器提示找不到eeprom_routines.h,可以在
X:ProgramFilesHI-TECHSoftwarePICC9.81include目錄下找,然後復制到自己項目文件夾下。
對了,我用的是MPLabIDE,編譯器使用的是PICC。
⑷ stc單片機,如何往eeprom里寫程序,請高手進
eeprom 不是程序區,不能運行程序。
有部分型號, 程序區 和 eeprom區 共用的就可以在運行時修改程序。
⑸ STC89C52單片機如何在運行時向EEPROM內寫入數據,使數據斷電後不消失,下次運行繼續用.
1、首先打開電腦中的keil軟體。
⑹ pic單片機EEPROM怎麼編寫程序
在你的C文件里引用EEPROM函數的頭文件,eeprom_routines.h
然後在程序中使用
void eeprom_write(unsigned char addr, unsigned char value);
unsigned char eeprom_read(unsigned char addr);
這兩個函數了。
這兩個函數一個讀一個寫。比如你想寫0x10到地址為0x55的EEPROM,
就寫:eeprom_write(0x55,0x10);
同理,如果想讀取0x55地址處的值,
就寫:ee_value = eeprom_read(0x55);
如果編譯時編譯器提示找不到eeprom_routines.h,可以在
X:Program FilesHI-TECH SoftwarePICC9.81include 目錄下找,然後復制到自己項目文件夾下。
對了,我用的是MPLab IDE,編譯器使用的是PICC。
⑺ 在proteus裡面,怎樣往Eprom裡面寫入數據啊。。。
EPROM是要高電壓編程的,不知你是什麼型號的晶元。
1、你可以設計電路讓EPROM晶元具備編程所需的要求(下面是M27256功能表)
在對話框中選擇你剛才建立的文件。至此,Protues中EPROM晶元就有數據了。