}
num++; a=555555+num; xs32_8();
cc(IAP_ADDRESS);
// 擦除第1个扇区(2000h~21FFh)
xcx(IAP_ADDRESS,temp1); xcx(IAP_ADDRESS+1,temp2); xcx(IAP_ADDRESS+2,temp3); xcx(IAP_ADDRESS+3,temp4); xcx(IAP_ADDRESS+4,num); xs8_32(); while(1) { }
bin_bcd(); smxs();
// 对EEPROM区2002h写入
/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ 函数:擦除某一扇区(每个扇区512字节) 入口:addr = 某一扇区首地址
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/ void cc(uint addr) {
// 0x83(晶振<5M) 0x82(晶振<10M)
0x81(晶振<20M) 0x80(晶振<40M) IAP_CONTR = ENABLE_IAP;
// 打开 IAP 功能(IAPEN(IAP_CONTR.7)=1:
允许编程改变Flash, 设置 Flash 操作等待时间。
IAP_CMD = CMD_ERASE; 进行扇区擦除
// 用户可以对\区\
IAP_ADDRL = addr; // IAP/IAP操作时的地址寄存器低八位, IAP_ADDRH = addr>>8; // IAP/IAP操作时的地址寄存器高八位。
//EA =0;
IAP_TRIG = 0x46; // 在IAPEN(IAP_CONTR.7)=1时,对IAP_TRIG先写入46h,
IAP_TRIG = 0xB9; // 再写入B9h,IAP/IAP命令才会生效。 //_nop_();
GB_IAP(); }
/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ 函数:写一字节
入口:addr = 扇区单元地址 , dat = 待写入数据 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/ void xcx(uint addr,uchar dat) {
IAP_CONTR = ENABLE_IAP; IAP_CMD = CMD_PROGRAM; 字节编程
IAP_ADDRL = addr; IAP_ADDRH = addr>>8;
IAP_DATA = dat; // 数据进IAP_DATA //EA = 0;
IAP_TRIG = 0x46; IAP_TRIG = 0xB9; //_nop_();
// 关闭IAP/IAP
// 用户可以对\区\进行
GB_IAP(); }
// 关闭IAP/IAP
/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ 函数:读一字节
入口:addr = 扇区单元地址 出口:dat = 读出的数据
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/ uchar dcx(uint addr) {
uchar dat;
IAP_CONTR = ENABLE_IAP;
IAP_CMD = CMD_READ; // 用户可以对\区\进行字节读 IAP_ADDRL = addr; IAP_ADDRH = addr>>8; //EA = 0;
IAP_TRIG = 0x46; IAP_TRIG = 0xB9; //_nop_(); dat = IAP_DATA; }
/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ 函数:关闭IAP/IAP操作
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/ void GB_IAP()
GB_IAP(); return dat;
// 取出数据
// 关闭IAP/IAP
{
IAP_CONTR = 0; // 关闭IAP功能 IAP_CMD = 0; // 待机模式,无IAP操作
IAP_TRIG = 0; // 关闭IAP功能, 清与IAP有关的特殊功能寄存器 }
IAP_ADDRH = 0x80; IAP_ADDRL =0;
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库EEPROM多个数据读写(2)在线全文阅读。
相关推荐: