技术热线: 4007-888-234
设计开发

专注差异化嵌入式产品解决方案 给智能产品定制注入灵魂给予生命

开发工具

提供开发工具、应用测试 完善的开发代码案例库分享

技术支持

从全面的产品导入到强大技术支援服务 全程贴心伴随服务,创造无限潜能!

新闻中心

提供最新的单片机资讯,行业消息以及公司新闻动态

PIC16F676单片机EEPROM的问题

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

用软件仿真没问题,但烧到片子里,不能正常运行。情况是这样的:假如循环向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