技术热线: 4007-888-234

PIC16F676单片机EEPROM的问题

更新时间: 2019-03-21
阅读量:277

用软件仿真没问题,但烧到片子里,不能正常运行。情况是这样的:假如循环向EEPROM中写数据,9,8,7,6,5,4,3,2,1,然后读,发现每一位读出的都一样,是写循环中第一个写进去的字节,也就是9。其他的并没有写进去。
       请问各位有遇到过这样的问题吗?我是完全按照DATASHEET来的,实在没着了,也没有仿真器?

       分别写数据9和6到地址0和7,然后读出并显示。请教其中原因。很奇怪的!
         .
         .
    BSF    STATUS,RP0
         CLRF    EEADR        ;地址0
    MOVLW    .9
    MOVWF    EEDAT        ;待写数据是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        ;待写数据是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的内容是9, 实际读出也是9
    .
    .            ;显示以及延时程序
    .    
         MOVLW    .7        ;地址7
    MOVWF    EEADR        
    BSF    EECON1,RD        ;读
    MOVF    EEDAT,W    ;此处仿真W的内容是6, 但实际运行, 读出是9
    .
    .
    .

入EEPROM都有一个非易失性写周期的,你自己也发现了延时可以。用EEIF可以用中断方式而不需要延时方式(干嘛要死等呢?),如果要延时,参考write cycle time参数。
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 &mdash; E/W -40&deg;C &le; TA &le; +85&deg;C
D120A ED Cell Endurance 10K 100K &mdash; E/W +85&deg;C &le; TA &le; +125&deg;C
D121 VDRW VDD for read/write VMIN &mdash; 5.5 V VMIN = Minimum operating
voltage
D122 TDEW Erase/Write cycle time &mdash; 4(typ)- 8(max) ms