宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243
宏晶科技:专业单片机 / 存储器供应商 www.MCU-Memory.com STC12C2052AD 系列 1T 8051 单片机中文指南
33
; 字节编程,该字节为 FFh/ 空时,可对其编程,否则不行, 要先执行扇区擦除
MOV ISP_DATA,
#ONE_DATA
;
送字节编程数据到 ISP_DATA
MOV ISP_ADDRH,
#BYTE_ADDR_HIGH
;
送地址高字节
MOV ISP_ADDRL,
#BYTE_ADDR_LOW
;
送地址低字节
CLR EA
;
关中断, 此时各中断请求,会被挂起,一开中断,立即响应
; 加入软件陷阱判断,如为非法状态,则让单片机进入掉电模式或软复位
MOV ISP_CONTR,
#WAIT_TIME
;
设置等待时间
ORL ISP_CONTR,
#10000000B
;
允许 ISP/IAP 操作
MOV ISP_CMD,
#ISP_IAP_BYTE_PROGRAM
;送字节编程命令
; 加入软件陷阱判断,如为非法状态,则让单片机进入掉电模式或软复位
MOV ISP_TRIG,
#46h
;先送 46h,再送 B9h 到 ISP/IAP 触发寄存器
; 加入软件陷阱判断,如为非法状态,则让单片机进入掉电模式或软复位
MOV ISP_TRIG,
#0B9h
;送完 B9h 后,ISP/IAP 命令立即被触发起动
;CPU 等待 IAP 动作完成后,才会继续执行程序,要先关中断(EA ),
;再送 46h,B9h 到 ISP/IAP 触发寄存器,起动 ISP/IAP 命令,关中断在触发之前即可
NOP
;字节编程成功后,CPU 继续执行程序
MOV ISP_CONTR,
#00000000B
;禁止 ISP/IAP 操作
MOV ISP_CMD,
#00000000B
;去除 ISP/IAP 命令
MOV ISP_TRIG,
#00000000B
;防止 ISP/IAP 命令误触发
MOV ISP_ADDRH,
#0
;送地址高字节单元为 00,指向非 EEPROM 区
MOV ISP_ADDRL,
#0
;送地址低字节单元为 00,防止误操作
SETB EA
;
开中断,CPU 处理完 ISP/IAP 动作即可开中断
----------------------------------------------------
小常识: (STC 单片机的 Data Flash 当 EEPROM 功能使用)
3 个基本命令 ---- 字节读,字节编程,扇区擦除
字节编程:如果该字节是“1111,1111B ”, 则可将其中的“1 ”编程为“0 ”,如果该
字节中有位为“0 ”,则须先将整个扇区擦除,因为只有“扇区擦除”才可以将“0 ”
变为 “ 1 ”。
扇区擦除 : 只有 “ 扇区擦除 ” 才可能将 “ 0 ” 擦除为 “ 1 ”。
大建议 :
1.同一次修改的数据放在同一扇区中,单独修改的数据放在另外的扇区,就不须读出保护。
2.如果一个扇区只用一个字节,那就是真正的 EEPROM,STC 单片机的 Data Flash 比外部
EEPROM 要快很多,读一个字节 / 编程一个字节 / 擦除一个扇区大概是 10uS/60uS/10mS。
3.如果同一个扇区中存放了一个以上的字节,某次只需要修改其中的一个字节或一部分字
节时,则另外的不需要修改的数据须先读出放在 STC 单片机的 RAM 中,然后擦除整个扇
区,再将需要保留的数据和需修改的数据一并写回该扇区中。这时每个扇区使用的字节数
是使用的越少越方便(不需读出一大堆需保留数据)。