⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eepromportect.c

📁 c语言编写的保护8位eeprom数据的“大数判决”程序
💻 C
字号:
//-----------------EEPROM数据保护(大数判决)-------------------//

void eeprom_data_protect(void)
{
 unsigned char compare_data;    //存放假定正确的数据
 unsigned char data_block;      //数据块数
 unsigned int byte_sum;         //一页数据的字节数
 unsigned char ok_sum=0;        //认为正确的数据数
 unsigned char next_page=0;     //当假定正确的数据不正确时,用下一页的数据作为假定正确的数据
 unsigned int save_address;    

 for(byte_sum=0;byte_sum<page_length;byte_sum++)   //一页数据循环
    { 
     next_page=0;
     ok_sum=0;
     compare_data=XBYTE[start_address+byte_sum];   //将第一页的数据暂定为假定正确的数据     
     next: 
     for(data_block=0;data_block<block_sum;data_block++)  //重写的数据块循环
        {
         if(XBYTE[start_address+(data_block*page_length)+byte_sum]==compare_data)
            ok_sum++;                              //统计认为正确的数据个数
        }
     if((ok_sum>=ok_line)&&(ok_sum<block_sum))     //认为该页的数据正确,且有不正确的重写数据
        { 
         save_address=(start_address+byte_sum);
         save_data(save_address,compare_data);     //用该页的数据重写所有数据
        }
     else if(ok_sum<ok_line)     //认为该页的数据错误
        {
         if(next_page<=ok_line)  //如果,假定正确的数据在认定数据正确界线的前几页,则采用下一页作为假定正确的数据
           {
            next_page++;            
            compare_data=XBYTE[start_address+(next_page*page_length)+byte_sum];
            ok_sum=0;
            goto next;
           }
         else                    //如果,假定正确的数据所在页超出认定数据正确界线,则该位置数据用默认数据代替
           {
            save_address=start_address+byte_sum;           
            save_data(save_address,default_data[byte_sum]);     //重写默认数据
           }
        }
    }
 
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -