專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開發(fā)工具、應(yīng)用測試 完善的開發(fā)代碼案例庫分享
從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!
提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力
提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動態(tài)
用軟件仿真沒問題,但燒到片子里,不能正常運(yùn)行。情況是這樣的:假如循環(huán)向EEPROM中寫數(shù)據(jù),9,8,7,6,5,4,3,2,1,然后讀,發(fā)現(xiàn)每一位讀出的都一樣,是寫循環(huán)中第一個寫進(jìn)去的字節(jié),也就是9。其他的并沒有寫進(jìn)去。
請問各位有遇到過這樣的問題嗎?我是完全按照DATASHEET來的,實(shí)在沒著了,也沒有仿真器?
分別寫數(shù)據(jù)9和6到地址0和7,然后讀出并顯示。請教其中原因。很奇怪的!
.
.
BSF STATUS,RP0
CLRF EEADR ;地址0
MOVLW .9
MOVWF EEDAT ;待寫數(shù)據(jù)是9
BSF EECON1,WREN ;使能寫
MOVLW 0X55
MOVWF EECON2
MOVLW 0XAA
MOVWF EECON2
BSF EECON1,WR ;開始寫
NOP
NOP ;幾個NOP是另加的,怕對以下操作有影響
MOVLW .7
MOVWF EEADR ;地址7
MOVLW .6
MOVWF EEDAT ;待寫數(shù)據(jù)是6
MOVLW 0X55
MOVWF EECON2
MOVLW 0XAA
MOVWF EECON2
BSF EECON1,WR
NOP
BCF EECON1,WREN ;禁止寫
MOVLW .0 ;地址0
MOVWF EEADR
BSF EECON1,RD ;讀
MOVF EEDAT,W ;此處仿真W的內(nèi)容是9, 實(shí)際讀出也是9
.
. ;顯示以及延時程序
.
MOVLW .7 ;地址7
MOVWF EEADR
BSF EECON1,RD ;讀
MOVF EEDAT,W ;此處仿真W的內(nèi)容是6, 但實(shí)際運(yùn)行, 讀出是9
.
.
.
入EEPROM都有一個非易失性寫周期的,你自己也發(fā)現(xiàn)了延時可以。用EEIF可以用中斷方式而不需要延時方式(干嘛要死等呢?),如果要延時,參考write cycle time參數(shù)。
At the completion of the write cycle, the WR bit is
cleared in hardware and the EE Write Complete
Interrupt Flag bit (EEIF) is set. The user can either
enable this interrupt or poll this bit. The EEIF bit
(PIR<7>) register must be cleared by software.
Data EEPROM Memory
D120 ED Cell Endurance 100K 1M — E/W -40°C ≤ TA ≤ +85°C
D120A ED Cell Endurance 10K 100K — E/W +85°C ≤ TA ≤ +125°C
D121 VDRW VDD for read/write VMIN — 5.5 V VMIN = Minimum operating
voltage
D122 TDEW Erase/Write cycle time — 4(typ)- 8(max) ms