#include <STC12C5410AD.h> // SFR declarations
#define uchar unsigned char
#define ADDH 0X28
#define ADDL 0X00
//;定义ISP/IAP命令及等待时间
#define ISP_IAP_BYTE_READ 1//;字节读
#define ISP_IAP_BYTE_PROGRAM 2//;字节编程
#define ISP_IAP_SECTOR_ERASE 3//;扇区擦除
#define WAIT_TIME 1
// ;等待时间,40M以下0,20M以下1,10M以下2,5M以下3
//;-------------------------------------------------------------
//;-----------------------------------------------------
void IAP_END(void)
{
ISP_CONTR=0x00;
ISP_CMD=0x00;
ISP_TRIG=0x00;
ISP_ADDRH=0xFF;
ISP_ADDRL=0xFF;
EA=1;
}
//;-----------------------------------------------------
//;-----------------------------------------------------
uchar IAP_READ(void)
{
ISP_ADDRH=ADDH;
ISP_ADDRL=ADDL;
EA=0;
ISP_CONTR=WAIT_TIME;
ISP_CONTR|=0x80;//允许ISP/IAP操作
ISP_CMD=ISP_IAP_BYTE_READ;
ISP_TRIG=0x046;
ISP_TRIG=0x0B9;
return ISP_DATA;
// IAP_END();
}
//;-----------------------------------------------------
//;-----------------------------------------------------
void IAP_PROGRAM (uchar dat)
{
ISP_DATA=dat;
ISP_ADDRH=ADDH;
ISP_ADDRL=ADDL;
EA=0;
ISP_CONTR=WAIT_TIME;
ISP_CONTR|=0x80;//允许ISP/IAP操作
ISP_CMD=ISP_IAP_BYTE_PROGRAM;
ISP_TRIG=0x046;
ISP_TRIG=0x0B9;
// IAP_END();
}
//;-----------------------------------------------------
//;-----------------------------------------------------
void IAP_SECTOR_ERASE(void)
{
ISP_ADDRH=ADDH;
ISP_ADDRL=ADDL;
EA=0;
ISP_CONTR=WAIT_TIME;
ISP_CONTR|=0x80;//允许ISP/IAP操作
ISP_CMD=ISP_IAP_SECTOR_ERASE;
ISP_TRIG=0x046;
ISP_TRIG=0x0B9;
// IAP_END();
}
//;-----------------------------------------------------