kingman 发表于 2009-4-18 20:17:53

从PIC中档单片机EEPROM数据存储器读写数据的顺序1

从EEPROM 数据存储器中读数据
要读出EEPROM 存储器的值,用户应先把读地址写到EEADR 寄存器中,并将控制位RD
(EECON1<0>) 置“1”。下一个指令周期,EEDATA 寄存器中的内容即为所读结果; EEDATA 将
该值一直保留到下一次读操作或用户对该寄存器进行写操作为止。
例 7-1: 数据EEPROM 的读操作

   BCF STATUS, RP0                         ; Bank0
   MOVLW CONFIG_ADDR                  ; Any location in Data EEPROM memory space
   MOVWF EEADR                           ; Address to read
   BSF STATUS, RP0                        ; Bank1
   BSF EECON1, RD                           ; EE Read
   BCF STATUS, RP0                        ; Bank0
   MOVF EEDATA, W                        ; W = EEDATA


向EEPROM 数据存储器中写数据
要向EEPROM 数据区写入数据,用户首先必须将地址写入EEADR 寄存器中,再将数据写入
EEDATA 寄存器中,然后必须按照特定顺序逐个字节地写入EEPROM。
例 7-2: 数据EEPROM 的写操作
      
                      BSF STATUS, RP0                        ; Bank1
                      BCF INTCON, GIE                        ; Disable INTs            .
                      BSF EECON1, WREN                     ; Enable Write
必须按照         MOVLW 55h ;
这个顺序         MOVWF EECON2                            ; 55h must be written to EECON2
                      MOVLW AAh                                  ; to start write sequence
                      MOVWF EECON2                            ; Write AAh
                      BSF EECON1,WR                            ; Set WR bit begin write
                      BSF INTCON, GIE                           ; Enable INTs.


如果未完全按照以上顺序(将 55h 写入 EECON2,将 AAh 写入 EECON2,然后将 WR 位置
“1”)逐个字节写入,写操作将不会开始。 我们强烈建议在该段代码中禁止中断。
此外, EECON1 的WREN 位应置“1”,写操作才会使能。这种机制可防止由于意外执行错误
代码(例如程序跑飞),造成对EEPROM 的错误写入。除了EEPROM 更新以外,WREN 位应
始终保持为“0”。WREN 位不会被硬件清零。
写操作启动后,将WREN 位清零并不会对写周期产生影响。除非将WREN 置“1”,否则WR
位将不执行置“1”操作。
写操作完成后, WR 位将被硬件清零,同时EEPROM 写入完成中断标志位(EEIF) 被置“1”。
用户可以使能中断或查询该位。EEIF 必须用软件清零。
页: [1]
查看完整版本: 从PIC中档单片机EEPROM数据存储器读写数据的顺序1