|
从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 必须用软件清零。
|
|