- 打卡等级:初来乍到
- 打卡总天数:2
- 最近打卡:2025-12-16 11:16:07
已绑定手机
新手上路
- 积分
- 14
|
#include "ALL_IO.H"
#include "COM_B.H"
我选 的晶振是22.1184
void IapIdle()
{
IAP_CONTR = 0; //关闭IAP功能
IAP_CMD = 0; //清除命令寄存器
IAP_TRIG = 0; //清除触发寄存器
IAP_ADDRE=0XFF;
IAP_ADDRH = 0x00; //将地址设置到非IAP区域
IAP_ADDRL = 0;
}
char IapRead(unsigned short addr)
{
char dat;
IAP_CONTR = 0x80; //使能IAP
IAP_TPS = 22; //设置等待参数12MHz
IAP_CMD = 1; //设置IAP读命令
IAP_ADDRE=0XFF;
IAP_ADDRL = addr; //设置IAP低地址
IAP_ADDRH = addr >> 8; //设置IAP高地址
IAP_TRIG = 0x5a; //写触发命令(0x5a)
IAP_TRIG = 0xa5; //写触发命令(0xa5)
_nop_();_nop_();_nop_();_nop_();_nop_();
dat = IAP_DATA; //读IAP数据
IapIdle(); //关闭IAP功能
return dat;
}
void IapProgram(unsigned short addr, char dat)
{
IAP_CONTR = 0x80; //使能IAP
IAP_TPS = 22; //设置等待参数12MHz
IAP_CMD = 2; //设置IAP写命令
IAP_ADDRE=0XFF;
IAP_ADDRL = addr; //设置IAP低地址
IAP_ADDRH = addr >> 8; //设置IAP高地址
IAP_DATA = dat; //写IAP数据
IAP_TRIG = 0x5a; //写触发命令(0x5a)
IAP_TRIG = 0xa5; //写触发命令(0xa5)
_nop_();_nop_();_nop_();_nop_();_nop_();
IapIdle(); //关闭IAP功能
}
void IapErase(unsigned short addr)
{
IAP_CONTR = 0x80; //使能IAP
IAP_TPS = 22; //设置等待参数12MHz
IAP_CMD = 3; //设置IAP擦除命令
IAP_ADDRE=0XFF;
IAP_ADDRL = addr; //设置IAP低地址
IAP_ADDRH = addr >> 8; //设置IAP高地址
IAP_TRIG = 0x5a; //写触发命令(0x5a)
IAP_TRIG = 0xa5; //写触发命令(0xa5)
_nop_();_nop_();_nop_();_nop_(); //
IapIdle(); //关闭IAP功能
}
unsigned short temp_eep_add=10;
void save_dat(void)
{
//unsigned char temp_data;
EA=0;
IapErase(temp_eep_add);
IapProgram(temp_eep_add,ALARM_statse);
EA=1;
}
void read_data(void)
{
//unsigned short temp_eep_add=10;
EA=0;
ALARM_statse=IapRead(temp_eep_add);
第一次读出来,不是0XFF 是0
if(ALARM_statse>10)
{
ALARM_statse=1;
}
EA=1;
}
请高手,帮看一下,谢谢
|
|