| ////////////////////////////////////////////// //功能:FLASH操作-BYTE數(shù)據(jù)寫入 // //參數(shù):char *Data_ptr,char byte // //返回:無 // //日期:2003.11.6 // ////////////////////////////////////////////// void Flash_wb(char *Data_ptr,char byte) { FCTL3=0x0A500; // Lock=0 FCTL1=0x0A540; // WRT=1 *Data_ptr=byte; } ////////////////////////////////////////////// //功能:FLASH操作-word數(shù)據(jù)寫入 // //參數(shù):int *Data_ptr, int word // //返回:無 // //日期:2003.11.6 // ////////////////////////////////////////////// void Flash_ww(int *Data_ptr,int word) { FCTL3=0X0A500; //Lock=0 FCTL1=0X0A540; //WRT=1 *Data_ptr=word; } ////////////////////////////////////////////// //功能:FLASH操作-段擦除 // //參數(shù):int *Data_ptr // //返回:無 // //日期:2003.11.6 // ////////////////////////////////////////////// void Flash_clr(int *Data_ptr) { FCTL1=0X0A502; // ERASE=1 FCTL3=0X0A500; //Lock=0 *Data_ptr=0; } ////////////////////////////////////////////// //功能:FLASH 操作,先保存在擦寫 // //參數(shù):uchar num // //返回:無 // //日期:2003.11.14 // ////////////////////////////////////////////// void Flash_do(uchar num) { uint lshi,linshi[11]; // uchar i=0; int *addr; _DINT(); addr=(int *)0x1000; for(i=0;i<11;i++) { linshi[i]=*(addr+i); } linshi[num]=Flash_save[num]; //更新數(shù)據(jù) Flash_clr(addr); //段擦除 for(i=0;i<11;i++) { lshi=linshi[i]; Flash_ww(addr+i,lshi);//寫入 } _EINT(); } |