今年刚用了一款中颖单片机,4051A, 看了DATASHEET ,对类EEPROM 的读写,ERASE ,描述不是很清楚,也没有范例,这里给大家列一下读写,ERASE 类EEPROM 的范例,有用到的可以参考一下了!
1. 读EEPROM ONE BYTE
ee_read_onebyte:
mov FLASHCON,#0x01
mov XPAGE,#0X00
clr a
mov DPTR,#08h ; 读EEPROM ADDR 0X08 的DATA
movc a,@A+DPTR ; 读回的DATA 放在A
mov FLASHCON,#00H
ret
2. ERASE EEPROM ONE BLOCK
;FLASH_FLAG 检查是为了防止出错而设置的检查.
ee_erase_oneblock:
clr EA
mov FLASHCON,#01H
mov XPAGE,#00H
mov IB_CON1,#0xE6
mov IB_CON2,#0x05
mov IB_CON3,#0x0A
mov IB_CON4,#0x09
mov a,flash_flag ; CALL 这个之前,赋值FLASH_ERASE_FLAG给FLASH_FLAG
cjne a,#FLASH_ERASE_FLAG, erase_erro
mov IB_CON5,#0x06
nop
nop
nop
nop
erase_erro:
mov flash_flag,#00h
mov FLASHCON,#00H
mov XPAGE,#00H
setb EA
ret
3. WRITE ONE BYTE
;FLASH_FLAG 设置的理由和上面ERASE 部分的理由一样.
ee_write_onebyte:
clr EA
mov FLASHCON,#01
mov XPAGE,#00H
mov IB_CON1,#0x6E
mov IB_CON2,#0x05
mov IB_CON3,#0x0A
mov IB_CON4,#0x09
mov a,flash_flag
cjne a,#FLASH_WRITE_FLAG, write_erro
mov IB_CON5,#0x06
nop
nop
nop
nop
write_erro:
mov flash_flag,#00h
mov FLASHCON,#00H
mov XPAGE,#00H
setb EA
ret
以上的写法都经过调试,可以使用 ,但可能有些地方不完整或别的,只是给大家做个参考用.如果有什么建议,大家可以提出来.
有个注意的地方就是,类EEPROM 每次去写,都要先做ERASE 动作. |