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

📄 eeprom.c

📁 keil C51 LCD 驱动源码,其中还有I2C驱动,ADC驱动,键盘操作等,是一个完整的keil源代码,供大家参考
💻 C
📖 第 1 页 / 共 2 页
字号:
       SubAddress = EE3_GAIN_R_6500;
    else if( ModeType== COLOR_5000 )
       SubAddress = EE3_GAIN_R_5000;
    else
       SubAddress = EE3_GAIN_R_USER;

#if SWAP_RED_BLUE
        TrmBuf[1] = ZBContrast;
        TrmBuf[2] = ZGContrast;
        TrmBuf[3] = ZRContrast;
        TrmBuf[4] = ZBBrightness;
        TrmBuf[5] = ZGBrightness;
        TrmBuf[6] = ZRBrightness;
#else
        TrmBuf[1] = ZRContrast;
        TrmBuf[2] = ZGContrast;
        TrmBuf[3] = ZBContrast;
        TrmBuf[4] = ZRBrightness;
        TrmBuf[5] = ZGBrightness;
        TrmBuf[6] = ZBBrightness;
#endif


    for(i=1,csum=0; i<=6; i++)
        csum += TrmBuf[i];
    EepromWrite( SubAddress,6);

    if( ModeType== COLOR_9300 )
       SubAddress = EE3_CHECKSUM_B0;      // Checksum address
    else if( ModeType== COLOR_6500 )
       SubAddress = EE3_CHECKSUM_B1;
    else if( ModeType== COLOR_5000 )
       SubAddress = EE3_CHECKSUM_B2;
    else
       SubAddress = EE3_CHECKSUM_B3;

    TrmBuf[1] = csum;
    EepromWrite( SubAddress,1);         // write checksum

    return;
}

void EepromColorDefault(Byte ModeType)
{
    if( ModeType== COLOR_9300 )
       DataPointer = EEPROMDefault_table2+18;
    else if( ModeType== COLOR_6500 )
       DataPointer = EEPROMDefault_table2+24;
    else if( ModeType== COLOR_5000 )
       DataPointer = EEPROMDefault_table2+30;
    else
       DataPointer = EEPROMDefault_table2+36;

#if SWAP_RED_BLUE
        ZBContrast   = *(DataPointer);
        ZGContrast   = *(DataPointer+1);
        ZRContrast   = *(DataPointer+2);
        ZBBrightness = *(DataPointer+3);
        ZGBrightness = *(DataPointer+4);
        ZRBrightness = *(DataPointer+5);
#else
        ZRContrast   = *(DataPointer);
        ZGContrast   = *(DataPointer+1);
        ZBContrast   = *(DataPointer+2);
        ZRBrightness = *(DataPointer+3);
        ZGBrightness = *(DataPointer+4);
        ZBBrightness = *(DataPointer+5);
#endif
    
    return;
}

// /************************************************************************
//  * Function    : EepromVideoRecall                                      *
//  * Description : Recall                                                 *
//  * Input       : none                                                   *
//  * Output      : none                                                   *
//  ************************************************************************/
// Byte  EepromVideoRecall()
// {
//     Byte  i,csum,eecsum;
//
//     EepromRead( EE3_CHECKSUM_C0, 1);
//        eecsum = TrmBuf[0];
//
//     EepromRead( EE3_VIDEO_BRIGHTNESS, 6);
//     for(i=0,csum=0; i<6; i++)
//         csum += TrmBuf[i];
//
//     if( csum != eecsum )     /* checksum error */
//           return 1;
//
//     VideoBrightness  = TrmBuf[0];
//     VideoContrast    = TrmBuf[1];
//     VideoSharpness   = TrmBuf[2];
//     VideoSaturationU = TrmBuf[3];
//     VideoSaturationV = TrmBuf[4];
// //  VideoHue         = TrmBuf[5];
//
//     return 0;
// }
//
// void EepromVideoStore()
// {
//     Byte  i,csum;
//
//     TrmBuf[1]  = VideoBrightness;
//     TrmBuf[2]  = VideoContrast;
//     TrmBuf[3]  = VideoSharpness;
//     TrmBuf[4]  = VideoSaturationU;
//     TrmBuf[5]  = VideoSaturationV;
// //  TrmBuf[6]  = VideoHue;
//     for(i=1,csum=0; i<=6; i++)
//         csum += TrmBuf[i];
//     EepromWrite( EE3_VIDEO_BRIGHTNESS, 6);
//
//     TrmBuf[1] = csum;
//     EepromWrite( EE3_CHECKSUM_C0,1);         // write checksum
//
//     return;
// }
//
// void EepromVideoDefault()
// {
//     VideoBrightness  = EEPROMDefault_table2[ 96];
//     VideoContrast    = EEPROMDefault_table2[ 97];
//     VideoSharpness   = EEPROMDefault_table2[ 98];
//     VideoSaturationU = EEPROMDefault_table2[ 99];
//     VideoSaturationV = EEPROMDefault_table2[100];
// //  VideoHue         = EEPROMDefault_table2[101];
//
//     return;
// }

//**************************************************************************
//Function : EepromWrite
//**********************************************************************/
// void EepromWrite(Word sub_addr, Byte count)
// {
//     Byte i;
//
//     if(FgFacMode)
//         sub_addr = sub_addr +1024;
//
//     if( sub_addr < 256 )
//     {
//        SlvAdr = EEPROM_PAGE0_SLVADR;
//     }
//     else if( sub_addr < 512 )
//     {
//        SlvAdr   = EEPROM_PAGE1_SLVADR;
//        sub_addr = sub_addr - 256;
//     }
//     else if( sub_addr < 768 )
//     {
//        SlvAdr   = EEPROM_PAGE2_SLVADR;
//        sub_addr = sub_addr - 512;
//     }
//     else if( sub_addr < 1024 )
//     {
//        SlvAdr   = EEPROM_PAGE3_SLVADR;
//        sub_addr = sub_addr - 768;
//     }
//     else if( sub_addr < 1280 )
//     {
//        SlvAdr   = EEPROM_PAGE4_SLVADR;
//        sub_addr = sub_addr - 1024;
//     }
//     else if( sub_addr < 1536 )
//     {
//        SlvAdr   = EEPROM_PAGE5_SLVADR;
//        sub_addr = sub_addr - 1280;
//     }
//     else if( sub_addr < 1792 )
//     {
//        SlvAdr   = EEPROM_PAGE6_SLVADR;
//        sub_addr = sub_addr - 1536;
//     }
//     else
//     {
//        SlvAdr   = EEPROM_PAGE7_SLVADR;
//        sub_addr = sub_addr - 1792;
//     }
//
//     for( i=1; i<=count; i++)
//     {
//        ByteCnt   = 2;
//        TrmBuf[0] = (Byte)sub_addr;
//        TrmBuf[1] = TrmBuf[i];
//        SendEEPROMData();
//        if( ++sub_addr == 256 )
//        {
//           SlvAdr  += 2;
//           sub_addr = 0;
//        }
//     }
//
//     ShortDelay( 2 );
// }
//
// //**************************************************************************
// //Function : EepromRead
// //*************************************************************************/
// void EepromRead(Word sub_addr,Byte count)
// {
//     Byte  i;
//
//     if(FgFacMode)
//         sub_addr = sub_addr +1024;
//
//     if( sub_addr < 256 )
//     {
//        SlvAdr = EEPROM_PAGE0_SLVADR;
//     }
//     else if( sub_addr < 512 )
//     {
//        SlvAdr = EEPROM_PAGE1_SLVADR;
//        sub_addr = sub_addr - 256;
//     }
//     else if( sub_addr < 768 )
//     {
//        SlvAdr = EEPROM_PAGE2_SLVADR;
//        sub_addr = sub_addr - 512;
//     }
//     else if( sub_addr < 1024 )
//     {
//        SlvAdr = EEPROM_PAGE3_SLVADR;
//        sub_addr = sub_addr - 768;
//     }
//     else if( sub_addr < 1280 )
//     {
//        SlvAdr   = EEPROM_PAGE4_SLVADR;
//        sub_addr = sub_addr - 1024;
//     }
//     else if( sub_addr < 1536 )
//     {
//        SlvAdr   = EEPROM_PAGE5_SLVADR;
//        sub_addr = sub_addr - 1280;
//     }
//     else if( sub_addr < 1792 )
//     {
//        SlvAdr   = EEPROM_PAGE6_SLVADR;
//        sub_addr = sub_addr - 1536;
//     }
//     else
//     {
//        SlvAdr   = EEPROM_PAGE7_SLVADR;
//        sub_addr = sub_addr - 1792;
//     }
//
//     if( (sub_addr + (Word)count) <= 256 )
//     {
//        ReadI2CData((Byte)sub_addr,count);
//     }
//     else
//     {
//        for( i=1; i<=count; i++)   /* read into TrmBuf[1..count] */
//        {
//           ReadI2CData((Byte)sub_addr,1);
//           TrmBuf[i] = TrmBuf[0];
//           if( ++sub_addr == 256 )
//           {
//              SlvAdr  += 2;
//              sub_addr = 0;
//           }
//        }
//        for( i=0; i<count; i++)    /* shift left */
//           TrmBuf[i] = TrmBuf[i+1];
//     }
//     return;
// }

void EepromWrite(Word sub_addr, Byte count)
{
#if 0    
    Byte i,j;

    if(FgFacMode)
        sub_addr = sub_addr +1024;
    j = sub_addr /256;
    sub_addr = sub_addr % 256;
    SlvAdr = EEPROM_PAGE0_SLVADR + j*2;

    for( i=1; i<=count; i++)
    {
       ByteCnt   = 2;
       TrmBuf[0] = (Byte)sub_addr;
       TrmBuf[1] = TrmBuf[i];
       SendEEPROMData();
       if( ++sub_addr == 256 )
       {
          SlvAdr  += 2;
          sub_addr = 0;
       }
    }
#else          
    Bool fg_byte_mode;
    Byte i,j;

    if(FgFacMode)                       // Vincent for let set can store
        sub_addr = sub_addr +1024;      //      factory data
    j = sub_addr /256;
    sub_addr = sub_addr % 256;
    SlvAdr = EEPROM_PAGE0_SLVADR + j*2;

    fg_byte_mode = 0;
    j = sub_addr/16;
    i = (sub_addr+count-1)/16;
    if(i != j)
    {
       fg_byte_mode = 1;
    }
    
    if( fg_byte_mode==0 )
    {
       j = 1;
       while( 1 )
       {
          if( count==0 )  break;
          if( count >= 8 )
          {
             for(i=1; i<=8; i++)
             {
               TrmBuf[i] = TrmBuf[j++];
             }
             count -= 8;        
          }
          else /*  count>=1 && count<=7 */
          {
             for(i=1; i<=count; i++)
             {
               TrmBuf[i] = TrmBuf[j++];
             }
             count = 0;
          }
          TrmBuf[0] = (Byte)sub_addr;
          ByteCnt = i;
          SendEEPROMData();
          sub_addr += (i-1); 
       }
    }
    else
    {
       for( i=1; i<=count; i++)
       {
          ByteCnt   = 2;
          TrmBuf[0] = (Byte)sub_addr;
          TrmBuf[1] = TrmBuf[i];
          SendEEPROMData();
          if( ++sub_addr == 256 )
          {
             SlvAdr  += 2;
             sub_addr = 0;
          }
       }
    }
#endif
    ShortDelay( 2 );
//    Delay(10);
}

//**************************************************************************
//Function : EepromRead
//*************************************************************************/
void EepromRead(Word sub_addr,Byte count)
{
    Byte  i,j;

    if(FgFacMode)                       //  Vincent for let set can read
        sub_addr = sub_addr +1024;      //      factory data
    j = sub_addr /256;
    sub_addr = sub_addr % 256;
    SlvAdr = EEPROM_PAGE0_SLVADR + j*2;

    if( (sub_addr + (Word)count) <= 256 )
    {
       ReadI2CData((Byte)sub_addr,count);
    }
    else
    {
       for( i=1; i<=count; i++)   /* read into TrmBuf[1..count] */
       {                 
          ReadI2CData((Byte)sub_addr,1);
          TrmBuf[i] = TrmBuf[0];        
          if( ++sub_addr == 256 )
          {
             SlvAdr  += 2;
             sub_addr = 0;
          }
       }
       for( i=0; i<count; i++)    /* shift left */
          TrmBuf[i] = TrmBuf[i+1]; 
    }   
    return;
}

void ResetMode(void)
{
// This segment mask by Vincent 20011218
// Because reset function is recall contrast, brightness, OSD H/V position,
//   Timing data form factory setting.
//
//      EepromCommonDefault(1);
//      OSDHorPosition   = EEPROMDefault_table2[ 1];
//      OSDVerPosition   = EEPROMDefault_table2[ 2];
//      EepromCommonStore(0);
//      EepromCommonStore(1);
//      FgOsdAct=0;
//      FgMenuSelect=0;
//      OSDNumber=L0_NOOSD;
//      OSDMenuPage=L0_NOOSD;
//      OSDPoint=0;
        Bool    btemp;
        Byte    a,b,c;

        btemp = FgFacMode;
        FgFacMode=1;
        c = OSDLanguage;
        EepromCommonRecall(0);
        EepromCommonRecall(1);
        EepromTimingRecall(ModeCounter);
        a=OSDHorPosition;
        b=OSDVerPosition;
        FgFacMode=0;
        EepromCommonRecall(0);
        OSDHorPosition=a;
        OSDVerPosition=b;
        OSDLanguage = c;
        EepromCommonStore(0);
        EepromCommonStore(1);
        EepromTimingStore(ModeCounter);

        FgFacMode=btemp;
        FgModeChange =1;
}

⌨️ 快捷键说明

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