background image
宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技:专业单片机 / 存储器供应商   www.MCU-Memory.com   STC12C5410AD 系列 1T 8051 单片机中文指南
37
; 字节编程,该字节为 F F h / 空时,可对其编程,否则不行, 要先执行扇区擦除
MOV
ISP_DATA, #ONE_DATA   ;送字节编程数据到 ISP_DATA,只有数据改变时才需重新送
MOV
ISP_ADDRH, #BYTE_ADDR_HIGH ;送地址高字节
MOV
ISP_ADDRL, #BYTE_ADDR_LOW ;送地址低字节
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 命令立即被触发起动
; C P U 等待 I A P 动作完成后,才会继续执行程序.
     
NOP
; 字节编程成功后,C P U 继续执行程序
;以下语句可不用, 只是出于安全考虑而已
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,指向非 EEPROM 区,防止误操作
----------------------------------------------------
小常识: 
(STC 单片机的 Data Flash  当 EEPROM 功能使用)
3 个基本命令 - - - - 字节读,字节编程,扇区擦除
字节编程:如果该字节是“1 1 1 1 , 1 1 1 1 B ”, 则可将其中的“1 ”编程为“0 ”,如果该
字 节 中 有 位 为 “ 0 ”, 则 须 先 将 整 个 扇 区 擦 除 , 因 为 只 有 “ 扇 区 擦 除 ” 才 可 以 将 “ 0 ”
变 为 “ 1 ”。
扇 区 擦 除 : 只 有 “ 扇 区 擦 除 ” 才 可 能 将 “ 0 ” 擦 除 为 “ 1 ”。
大 建 议 :
1 . 同一次修改的数据放在同一扇区中,不是同一次修改的数据放在另外的扇区, 就不须读出保护。
2.如果一个扇区只用一个字节,那就是真正的 EEPROM,STC 单片机的 Data Flash 比外部 EEPROM 要快很多,
读一个字节 / 编程一个字节大概是 0.2uS/60uS。
3 . 如果在一个扇区中存放了大量的数据,某次只需要修改其中的一个字节或一部分字节时,则另外的不
需要修改的数据须先读出放在 STC  单片机的 RAM 中,然后擦除整个扇区,再将需要保留的数据和需修改的
数据一并写回该扇区中。这时每个扇区使用的字节数是使用的越少越方便( 不需读出一大堆需保留数据) 。
地址需要改变时才需重新送地址
此两句可合成一句, 并且只送一次就够了