IAP_ADDRH = addr >> 8; //设置IAP高地址
IAP_DATA = dat; //写ISP/IAP/EEPROM数据
IAP_TRIG = 0x5a; //写触发命令(0x5a
IAP_TRIG = 0xa5; //写触发命令(0xa5
_nop_(); //等待ISP/IAP/EEPROM操作完
IapIdle();
}
///擦除风扇区域
void IapEraseSector(WORD addr){
IAP_CONTR = ENABLE_IAP; //使能IAP
IAP_CMD = CMD_ERASE; //设置IAP命令
IAP_ADDRL = addr; //设置IAP低地址
IAP_ADDRH = addr >> 8; //设置IAP高地址
IAP_TRIG = 0x5a; //写触发命令(0x5a
IAP_TRIG = 0xa5; //写触发命令(0xa5
_nop_(); //等待ISP/IAP/EEPROM操作完
IapIdle();
}
void saveeepro(){//掉电存储
inum11=inum1/100;//把int类型拆分到char型
inum12=inum10;
inum21=inum2/100;
inum22=inum20;
IapEraseSector(0);
IapProgramByte(1, inum11);//数值1
IapProgramByte(2, inum12);
IapProgramByte(3, inum21);
IapProgramByte(4, inum22);
IapProgramByte(5, if0);///倒计时状态
IapProgramByte(6, if0s);///继电器状态
IapProgramByte(7, ss);//存分
}
/**********************断电存储部分结束**************************/
void keyflag(){///按钮调用结束,建议使用按钮,可减少code,但不建议触发
if(kt0){//作为标志位kt0=1的时候进行
if(presstime>50){///当时间值大于100时
kf0=1;//标志位kf0=1
kt0=0;//标志位kt0=0
presstime=0.//时间清零,重新进行
}
}
}
[1] [2] [3]