欢迎来到天天文库
浏览记录
ID:59248705
大小:17.00 KB
页数:3页
时间:2020-09-08
《单片机的flash断电数据保护程序(已经过试验).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、//****************************************************************************//////本程序实现断电数据保护功能,断电可以保存128个数据(仅适用A区),也可以保存256个数据(使用A区和B区)////*****************************************************************************#include#defineucharunsignedchar#defin
2、euintunsignedintunsignedintvalue0;unsignedintvalue1;unsignedint*Flash_ptr;voidwrite_SegA(unsignedintvalue0,unsignedintvalue1);voidcopy_A2B(void);unsignedinti;voiddelay(){for(i=0;i<50000;i++);}voidmain(void){WDTCTL=WDTPW+WDTHOLD;//关闭看门狗Ini_Lcd();/**************flash的程序***
3、************************************/FCTL2=FWKEY+FSSEL0+FN0;//时钟分频,使flash的时钟频率在257K-476Kvalue0=0;value1=0;Flash_ptr=(unsignedint*)0x1080;//设置A区的起始地址for(i=0;i<128;i++){value0=*Flash_ptr;//从flash当中读出数据value0,value1value1=*(Flash_ptr+1);}/***********************************
4、****************************/while(1){value0++;value1++;write_SegA(value0,value1);//向flash当中写入数据//写入主程序,value作为一个变量使用}}//******************向flash中写入数据************************************voidwrite_SegA(unsignedintvalue0,unsignedintvalue1){unsignedinti;Flash_ptr=(unsignedi
5、nt*)0x1080;//设置指针的起始地址,A区的起始地址是0x1080FCTL1=FWKEY+ERASE;//擦除独立段FCTL3=FWKEY;//允许写入*Flash_ptr=1;//设置为单字节写入模式FCTL1=FWKEY+WRT;//SetWRTbitforwriteoperationfor(i=0;i<128;i++)//连续写入128个数据{*Flash_ptr=value0;//写数据value0和value1到flash当中*(Flash_ptr+1)=value1;}FCTL1=FWKEY;//保护flashFCT
6、L3=FWKEY+LOCK;}//**************************从A区读取的数据赋值给B区((∩_∩)注意可以向一个区中先写入数据,再读取数据)*****************************************voidcopy_A2B(void){char*Flash_ptrA;char*Flash_ptrB;unsignedinti;Flash_ptrA=(char*)0x1080;Flash_ptrB=(char*)0x1000;FCTL1=FWKEY+ERASE;FCTL3=FWKEY;*Fl
7、ash_ptrB=0;FCTL1=FWKEY+WRT;for(i=0;i<128;i++){*Flash_ptrB++=*Flash_ptrA++;}FCTL1=FWKEY;FCTL3=FWKEY+LOCK;}
此文档下载收益归作者所有