迪文科技论坛

 找回密码
 立即注册
搜索
查看: 57|回复: 1

【提问】求大佬解释下这几个问题

[复制链接]

18

主题

31

回帖

305

积分

中级会员

Rank: 3Rank: 3

积分
305
发表于 2024-10-29 20:40:33 | 显示全部楼层 |阅读模式
1、Power_Down_Save_Address[]  和  Power_Down_Save_Data[]  之间有什么联系吗?
2、Power_Down_Save_Data[x]  的数组大小是和  Power_Down_Save_Address[x-2]   是这样的关系吗?
3、u16  xdata  Power_Down_Save_Data[]={0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};这中间的2是什么作用,能修改吗?
4、#define            SAVE_NUMBER      2  //需要保存的地址数量     这个2是根据自己需要来改吗?




以下是代码:
u16  xdata  Power_Down_Save_Address[]={0x6000,0x6001,0x10DA,0x10DA,0x10DA,0x10DA,0x10DA,0x10DA,0x10DA,0x10DA,0x10D6,0x10D7,0x10D8,0x10D9,
                                       0x10DA,0x10DB,0x10DC,0x10DD,0x10DE};//掉电保存地址
u16  xdata  Power_Down_Save_Data[]={0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//第一次上电数据初始化
#define            SAVE_NUMBER      2  //需要保存的地址数量



#define     SEND_FINISH 3
#define     INITIALIZATION_MARK           0X5AAA
#define     START_ADD(a)            (0xE270+a)
#define     READ_MOD                 0x5A
#define     WRITE_MOD                0xA5


/*****************************************************************************
函数功能:初始化
第一次使用保存默认数据,后续从数据库读取数据
*/        
void data_save_init()   
{   
            u16 Ladd=0,Va1=0,Va2=0,i=0;
                        T5L_Flash(READ_MOD,START_ADD(10),START_ADD(10),2);
                        if(Read_Dgus(START_ADD(10))==INITIALIZATION_MARK)
                        {                    
                    
                   for(i=0;i<SAVE_NUMBER;i++)//掉电保存参数设置
                                   {
                                                T5L_Flash(READ_MOD,Power_Down_Save_Address,Power_Down_Save_Address,2);
                                                Power_Down_Save_Data= Read_Dgus(Power_Down_Save_Address);
                                   }
                        }
                        else   //第一次使用                                
                        {        
                                           Write_Dgus(START_ADD(10),INITIALIZATION_MARK);
                                   T5L_Flash(WRITE_MOD,START_ADD(10),START_ADD(10),2);
                   for(i=0;i<SAVE_NUMBER;i++)//掉电保存参数设置
                                   {
                                                Write_Dgus(Power_Down_Save_Address,Power_Down_Save_Data);//初始化变量
                        T5L_Flash(WRITE_MOD,Power_Down_Save_Address,Power_Down_Save_Address,2);
                                   }                                                
                        }                        
               
}
/*****************************************************************************
函数功能:数据掉电保存
数据改变保存框架
*/
void data_change_sava()
{
          u16 Val=0;
      u16 i=0,Va2=0;                           
          for(i=0;i<SAVE_NUMBER;i++)
          {
                        Va2= Read_Dgus(Power_Down_Save_Address);//获取需要掉电保存得地址的值
                        if(Power_Down_Save_Data!=Va2)          //掉电保存地址的值与原来值对比数值变化保存
                        {
                                Power_Down_Save_Data=Va2;            //记录改变后的值
                                T5L_Flash(WRITE_MOD,Power_Down_Save_Address,Power_Down_Save_Address,2);//保存数据
                        }
          }               
}

回复

使用道具 举报

0

主题

99

回帖

1495

积分

金牌会员

Rank: 6Rank: 6

积分
1495
发表于 2024-10-29 21:30:52 | 显示全部楼层
有注释的,Address就是要掉电保存的VP地址,Data[]就是前面地址第一次上电给的初始值,
理论上长度是一样的,不过只要大于设置的“ SAVE_NUMBER      2  //需要保存的地址数量”就行,因为只会循环这个设置的长度
初始值当然可以随意修改的
设置的长度根据自己的需要改
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-11-23 01:22 , Processed in 0.060431 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表