background image
宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技:专业单片机 / 存储器供应商   www.MCU-Memory.com   STC12C5410AD 系列 1T 8051 单片机中文指南
41
;------------------------------------------------
;读一字节,调用前需打开 IAP  功能,入口:DPTR =  字节地址,返回:A =  读出字节
Byte_Read:
    MOV     ISP_CONTR,  #ENABLE_ISP     ;打开 IAP 功能, 设置 Flash 操作等待时间
    MOV     ISP_CMD,    #ISP_IAP_BYTE_READ  ;设置为 IAP/ISP/EEPROM 字节读模式命令
    MOV     ISP_ADDRH,  DPH             ;设置目标单元地址的高 8 位地址
    MOV     ISP_ADDRL,  DPL             ;设置目标单元地址的低 8 位地址
    ;CLR      EA
    MOV     ISP_TRIG,   #46H       ;先送 46h,再送 B9h 到 ISP/IAP 触发寄存器,每次都需如此
    MOV     ISP_TRIG,   #0B9H      ;送完 B9h 后,ISP/IAP 命令立即被触发起动
    NOP
    MOV     A,   ISP_DATA          ;读出的数据在 ISP_DATA 单元中,送入累加器 A
    ;SETB    EA
    ACALL IAP_Disable ;关闭 IAP 功能,  清相关的特殊功能寄存器,使 CPU 处于安全状态,
                      ;一次连续的 IAP 操作完成之后建议关闭 IAP 功能,不需要每次都关
    RET
;------------------------------------------------
;字节编程,调用前需打开 IAP  功能,入口:DPTR =  字节地址, A= 须编程字节的数据
Byte_Program:
    MOV   ISP_CONTR, #ENABLE_ISP    ;打开 IAP 功能, 设置 Flash 操作等待时间
    MOV   ISP_CMD, #ISP_IAP_BYTE_PROGRAM   ;设置为 IAP/ISP/EEPROM 字节编程模式命令
    MOV   ISP_ADDRH, DPH            ;设置目标单元地址的高 8 位地址
    MOV   ISP_ADDRL, DPL            ;设置目标单元地址的低 8 位地址
    MOV   ISP_DATA, A               ;要编程的数据先送进 ISP_DATA 寄存器
    ;CLR   EA
    MOV   ISP_TRIG, #46H            ;先送 46h,再送 B9h 到 ISP/IAP 触发寄存器,每次都需如此
    MOV   ISP_TRIG, #0B9H          ;送完 B9h 后,ISP/IAP 命令立即被触发起动
    NOP
    ;SETB  EA
     ACALL IAP_Disable ;关闭 IAP 功能,  清相关的特殊功能寄存器,使 CPU 处于安全状态,
                       ;一次连续的 IAP 操作完成之后建议关闭 IAP 功能,不需要每次都关
    RET
;------------------------------------------------
;擦除扇区, 入口:DPTR =  扇区地址
Sector_Erase:
    MOV   ISP_CONTR, #ENABLE_ISP    ;打开 IAP 功能, 设置 Flash 操作等待时间
    MOV   ISP_CMD, #03H             ;设置为 IAP/ISP/EEPROM 扇区擦除模式命令
    MOV   ISP_ADDRH, DPH            ;设置目标单元地址的高 8 位地址
    MOV   ISP_ADDRL, DPL            ;设置目标单元地址的低 8 位地址
    ;CLR    EA
    MOV   ISP_TRIG, #46H            ;先送 46h,再送 B9h 到 ISP/IAP 触发寄存器,每次都需如此
    MOV   ISP_TRIG, #0B9H          ;送完 B9h 后,ISP/IAP 命令立即被触发起动
    NOP
    ;SETB   EA
     ACALL IAP_Disable ;关闭 IAP 功能,  清相关的特殊功能寄存器,使 CPU 处于安全状态,
                       ;一次连续的 IAP 操作完成之后建议关闭 IAP 功能,不需要每次都关
    RET