OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2186|回复: 3

急!密码程序 密码为啥存不上呢?

[复制链接]

20

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-1-23
在线时间
40 小时
发表于 2018-3-31 13:10:29 | 显示全部楼层 |阅读模式

下面的代码是密码输入和存储的程序
mima1[2]  mima2[2] 都在头文件里面做了extern 声明 的,密码比对代码在一个中断服务函数
为什么输入相同的密码不能验证成功?
我觉得是密码存储上有问题,
密码比对程序没有问题。

或者大家有什么存储密码的好方法可以教一下我。

u8 keychuli1(u8 tcw,u8 mi)                                                                                                                                                                        //êy¾Y′|àí·μ»Ø¼üÖμ  tcw í£3μλ 0 1  mi êäèë/ÑéÖ¤ 0 1
{
        uint8_t key_1;
        uint8_t i=4;
        while(i)
        {
                keyz=keyscan();
                if(keyz!=0)
                {
                        switch(keyz)
                        {
                                case 0x11: key_1 = 1;LED1=!LED1;i--;break;
                                case 0x21: key_1 = 2;i--;break;
                                case 0x41: key_1 = 3;i--;break;
                                case 0x12: key_1 = 4;i--;break;
                                case 0x22: key_1 = 5;i--;break;
                                case 0x42: key_1 = 6;i--;break;
                                case 0x14: key_1 = 7;i--;break;
                                case 0x24: key_1 = 8;i--;break;
                                case 0x44: key_1 = 9;i--;break;
                                case 0x18: key_1 = 0;LED0=!LED0;i--;break;
        case 0x28: key_1 = 10;i--;break;       
                                case 0x48: key_1 = 11;i--;break;
                                default:break;
                        }
                        switch(i)
                        {
                                case 0 : LCD_ShowString(80,120,100,24,24,"****");
                                case 1 : LCD_ShowString(80,120,100,24,24,"***");
                                case 2 : LCD_ShowString(80,120,100,24,24,"**");
                                case 3 : LCD_ShowString(80,120,100,24,24,"*");
                        }
                }
                if(mi == 0)
                {
                        mima1[tcw] = pow(10,i)*key_1+mima1[tcw];
                       
                }
                if(mi == 1)
                {
                        mima2[tcw] = pow(10,i)*key_1+mima2[tcw];
                }
        }
        if(mi == 0)
        {
                return mima1[tcw];
        }
        if(mi == 1)
        {
                return mima2[tcw];
        }
}



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
608
金钱
608
注册时间
2017-9-21
在线时间
171 小时
发表于 2018-3-31 13:43:03 | 显示全部楼层

回帖奖励 +5 金钱

本帖最后由 哆啦A萌 于 2018-3-31 13:59 编辑

看你的代码有点乱,按你的需求改成这样更好一点,完成以下函数内容即可


函数:通过键盘获取密码
参数:password = 指向密码的指针,password_len = 密码的长度
返回:0 =成功
int PasswordGetAccessKey(uint8_t  * password  ,  uint8_t   password_len)


函数:密码校对
参数:password_1  = 指向密码1的指针,password_2 = 指向密码2的长度 , password_len = 密码的长度
返回:0=校对一致,-1=校对不一致
int PasswordProofread(uint8_t  * password_1  , uint8_t  * password_2 , uint8_t   password_len)

另外存储部分分别加一个读取、一个写入函数即可

回复 支持 1 反对 0

使用道具 举报

20

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-1-23
在线时间
40 小时
 楼主| 发表于 2018-3-31 18:05:05 | 显示全部楼层
哆啦A萌 发表于 2018-3-31 13:43
看你的代码有点乱,按你的需求改成这样更好一点,完成以下函数内容即可

非常感谢您
回复 支持 反对

使用道具 举报

20

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-1-23
在线时间
40 小时
 楼主| 发表于 2018-4-1 09:07:40 | 显示全部楼层
哆啦A萌 发表于 2018-3-31 13:43
看你的代码有点乱,按你的需求改成这样更好一点,完成以下函数内容即可

把密码存放在数组里不能存储吗?读取和写入密码函数如何编写?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 12:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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