PIC单片机

单片机

PIC单片机 PIC单片机自学 PIC单片机编程 PIC单片机教材下载 PIC单片机学习源程序 PIC单片机仿真器|PIC单片机编程器 PIC单片机编程器实验板定价 PIC单片机学习开发板购买方式 PIC单片机学习论坛
PIC单片机】主题文章: 回复文章:PIC16F676单片机EEPROM的问题
发信人:nameliji 发表时间:2003-06-20 08:34:40

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


PIC单片机 www.pic16.com  

 回复文章:程序是这样的,有点长,麻烦各位
发信人:nameliji 发表时间:2003-06-20 09:56:23

分别写数据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
    .
    .
    .



PIC单片机 www.pic16.com  

 回复文章:延时一段时间可以
发信人:nameliji 发表时间:2003-06-20 13:39:11

是写的原因,在两次写操作之间加入一段较长延时,一切正常了,可按照datasheet和软件仿真来看,有两个指令周期就可以完成写操作,具体要延时多少时间?有没有一个理论上的数值?


PIC单片机 www.pic16.com 

 回复文章:奇怪,没人遇到过这个问题?
发信人:nameliji 发表时间:2003-06-20 13:42:33

还是我的程序有问题?


PIC单片机 www.pic16.com  

 回复文章:非易失性写周期
发信人:martin 发表时间:2003-06-20 15:41:09

写入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 — 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


PIC单片机 www.pic16.com  

 回复文章:谢谢martin!
发信人:nameliji 发表时间:2003-06-23 09:18:11




PIC单片机 www.pic16.com  

 回复文章:程序
发信人:anycrying 发表时间:2003-06-23 10:39:06

    BCF     STATUS,RP0
    CLRF    EEADR        ;地址0
    MOVLW    .9
    MOVWF   EEDAT        ;待写数据是9
    BSF     STATUS,RP0
    BSF     EECON1,WREN    ;使能写
    MOVLW   0X55
    MOVWF   EECON2
    MOVLW    0XAA
    MOVWF   EECON2
    BSF     EECON1,WR        ;开始写
    NOP
    NOP        ;几个NOP是另加的,怕对以下操作有影响
    BCF      STATUS,RP0
    MOVLW    .7
    MOVWF    EEADR        ;地址7
    MOVLW    .6
    MOVWF    EEDAT        ;待写数据是6
    BSF      STATUS,RP0
    MOVLW    0X55
    MOVWF    EECON2
    MOVLW    0XAA
    MOVWF    EECON2
    BSF    EECON1,WR
    NOP
    BCF    EECON1,WREN    ;禁止写
    BCF    STATUS,RP0
    MOVLW    .0        ;地址0
    MOVWF    EEADR
    BSF    STATUS,RP0
    BSF    EECON1,RD        ;读
    BCF    STATUS,RP0 
    MOVF    EEDAT,W       ;此处仿真W的内容是9, 实际读出也是9
    .
    .            ;显示以及延时程序
    .    
         MOVLW    .7        ;地址7
    MOVWF    EEADR        
    BSF    STATUS,RP0
    BSF    EECON1,RD        ;读
    BCF    STATUS,RP0
    MOVF    EEDAT,W    ;此处仿真W的内容是6, 但实际运行, 读出是


PIC单片机 www.pic16.com  

 回复文章:为什么要禁止写?
发信人:wdy160 发表时间:2003-06-23 19:29:05

为什么要禁止写?



PIC单片机 www.pic16.com  

 回复文章:When I used the ICD2 to debug the 16F877
发信人:zhzhdao 发表时间:2003-06-24 15:46:27

I found that the operation on EEPROM was not the expect, especaily write operation! I can`t write data to EEPROM through my programm which can be run well under MPLAM SIM, why? I think the write delay is enough.


PIC单片机 www.pic16.com  

 回复文章:ICD2 to debug EEPROM
发信人:张明峰 发表时间:2003-06-24 17:29:12

You must run the ICD2 at the full speed in order to debug EEPROM write function. You'll never get succeeded if you are in single step mode.

You'd better use flag polling instead of simple time delay for EEPROM write-wait.


PIC单片机 www.pic16.com  

 回复文章:一般eeprom的自写周期大于2ms,请注意。avr单片机也类似。
发信人:leinuo 发表时间:2003-06-24 21:21:32




PIC单片机 www.pic16.com  

 回复文章:检查相应的标志位即可
发信人:eling 发表时间:2003-06-28 15:59:44




PIC单片机 www.pic16.com  

 回复文章:检查标志位
发信人:louis.liu 发表时间:2003-06-28 17:06:11

EEPROM的写通过判断标志位就可以,但是在下一次写之前要清除上一次写完成的标志位。也就是说,每次写完要清除完成标志位,否则下一次写不进去。


PIC单片机 www.pic16.com