|
本帖最后由 rxz505260 于 2023-1-31 10:47 编辑
代码功能:
只做输入密码验证切换到需要的页面
代码中密码写死,可以添加代码从norflash读取和修改密码
- #define PASSWORD_INPUT_VP 0x502E //密码输入框起始地址 双字 502E-502F
- u8 compare(u8* input,u8* password,u8 len);//密码比较函数
- void Page_Change(u16 PageID);//页面切换函数
- void encrypted_login_handler()
- {
- u8 i=0;
- u8 variable_input[4]={0,0,0,0}; //密码框输入的数据
- u8 Vp_Clear[4]={0,0,0,0}; //密码比对后密码框清零数据
- u8 passdword[4]={0x07,0x5B,0xCD,0x15}; //定义密码 123456789 也可从norflash读取
- //密码登录 ******************************************
- Read_Dgusii_Vp(PASSWORD_INPUT_VP,variable_input,2); //读密码框数据到数组variable_input
- for (i=0;i<4;i++)
- {
- if(variable_input==0) {} //密码框数据为0则无效
- else //密码框数据非0开始比较
- {
- //将输入值和正确密码传入比较函数,传入的为数据指针
- if (compare((u8*)&variable_input,(u8*)&passdword,4)==4) //比对数组的4个数都通过
- {
- Page_Change(14); //跳转页面14
- Write_Dgusii_Vp(PASSWORD_INPUT_VP,(u8*)&Vp_Clear,2); //密码框清零
- }
- else //比对失败
- {
- Page_Change(12);
- Write_Dgusii_Vp(PASSWORD_INPUT_VP,(u8*)&Vp_Clear,2);
- }
- }
- }
- }
- /*****************************************************************************
- 函 数 名 : u8 compare(u8* input,u8* password,u8 len)
- 功能描述 : 比对输入数据和预设密码值
- 输入参数 : u8* input:传入输入的密码数据指针,u8* password:传入正确的密码指针,u8 len:比较数据的个数
- 输出参数 : 返回比较成功的次数
- *****************************************************************************/
- u8 compare(u8* input,u8* password,u8 len)//密码比较函数
- {
- u16 i=0;
- while (i<len)
- {
- if(*input==*password) //顺序比较输入值和预设密码
- i++;
- else
- break; //如遇不相等,则退出
- input+=1;
- password+=1;
- }
- return i;//返回
- }
- /*****************************************************************************
- 函 数 名 :void Page_Change(u16 PageID)
- 功能描述 :页面切换
- 输入参数 : u16 PageID 页面号
- 输出参数 : 无
- *****************************************************************************/
- void Page_Change(u16 PageID)
- {
- u8 buf[4];
- buf[0] = 0x5a;
- buf[1] = 0x01;
- buf[2] = (u8)(PageID >> 8);
- buf[3] = (u8)PageID;
- Write_Dgusii_Vp(0x84,buf,2);
- do
- {
- delay_us(500);
- Read_Dgusii_Vp(0x14,buf,2);
- }while(*(u16*)buf!=PageID);
- buf[0] = 0;
- buf[1] = 0;
- buf[2] = 0;
- buf[3] = 0;
- Write_Dgusii_Vp(0x16,buf,2);
- }
复制代码
|
|