您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > Stc12c5a60s2---eeprom读写程序
/*Stc12c5a60s2eeprom读写程序//实现一个数据的读取、修改、存储、读取,只对eeprom开始地址0x0000一个地址进行编辑//程序下载后,第一次运行会显示eeprom开始地址0x0000内的数据,然后按一下P3^0,进//入数据修改模式(为了方便修改,我已设置从10开始),P3^4增加,P3^5减小,然后再//按一下P3^0,会把修改后的数据存入eeprom的0x0000地址内。关闭单片机,再次打开,依然是修改后的数据。*/#includestc12c5a60s2.h//去stc官网下载orstc最新下载程序有stc系列头文件#includeintrins.h#definenop()_nop_()#defineucharunsignedchar#defineuintunsignedint#defineCMD_IDLE0#defineCMD_READ1#defineCMD_PROGRAM2#defineCMD_ERASE3#defineENABLE_IAP0x83sbith=P3^0;sbitKEY_ADD=P3^4;//定义按键输入端口sbitKEY_DEC=P3^5;ucharLnum;voiddelay(uchari){ucharj;while(i--){for(j=0;j125;j++);}}voidIapIdle(){IAP_CONTR=0;IAP_CMD=0;IAP_TRIG=0;IAP_ADDRH=0X80;IAP_ADDRL=0;}ucharIapReadByte(uintaddr){uchardat;IAP_CONTR=ENABLE_IAP;IAP_CMD=CMD_READ;IAP_ADDRL=addr;IAP_ADDRH=addr8;IAP_TRIG=0x5a;IAP_TRIG=0xa5;nop();dat=IAP_DATA;IapIdle();returndat;}voidIapProgramByte(uintaddr,uchardat){IAP_CONTR=ENABLE_IAP;IAP_CMD=CMD_PROGRAM;IAP_ADDRL=addr;IAP_ADDRH=addr8;IAP_DATA=dat;IAP_TRIG=0x5a;IAP_TRIG=0xa5;nop();IapIdle();}voidIapEraseSector(uintaddr){IAP_CONTR=ENABLE_IAP;IAP_CMD=CMD_ERASE;IAP_ADDRL=addr;IAP_ADDRH=addr8;IAP_TRIG=0x5a;IAP_TRIG=0xa5;nop();IapIdle();}voidmain(){uchartemp=0;Lnum=IapReadByte(0x0000);P0=Lnum;//连接ledKEY_ADD=1;//按键输入端口电平置高KEY_DEC=1;if(IapReadByte(0x0000)==0xff||h==0){IapEraseSector(0x0000);IapProgramByte(0x0000,0x0a);Lnum=10;while(1){if(!KEY_ADD)//如果检测到低电平,说明按键按下{delay(50);//延时去抖,一般10-20msif(!KEY_ADD)//再次确认按键是否按下,没有按下则退出{while(!KEY_ADD);//如果确认按下按键等待按键释放,没有释放则一直等待{//加操作Lnum++;}}}if(!KEY_DEC)//如果检测到低电平,说明按键按下{delay(50);//延时去抖,一般10-20msif(!KEY_DEC)//再次确认按键是否按下,没有按下则退出{while(!KEY_DEC);//如果确认按下按键等待按键释放,没有释放则一直等待{if(Lnum0)//减操作Lnum--;}}}P0=Lnum;while(h==0){delay(50);if(h==1){IapEraseSector(0x0000);IapProgramByte(0x0000,Lnum);temp=0;}}}}}
本文标题:Stc12c5a60s2---eeprom读写程序
链接地址:https://www.777doc.com/doc-4840589 .html