优化void inputPwdFun() { u8 s=KEYPAD4x4_Read();//读出按键值 if(s!=0)//如按键值不是0,也就是说有按键操作,则判断为真 { //输入密码 inputPwd = s+inputPwd*10; //读取4位密码 inputPwdArr[g_count] = s; //存放输入的密码 if(g_count<=3) //只显示4位密码 { g_count++; sprintf(dataBuf1,"input:%d",inputPwd); OLED_ShowString(0,16,(u8*)dataBuf1,16); printf("输入密码:%d",inputPwd); OLED_Refresh(); } else { inputPwd = 0; } } }
时间: 2024-02-05 15:04:31 浏览: 25
这段代码中,可以进行如下优化:
1. 使用枚举类型定义按键值,可以增加代码的可读性和可维护性。
2. 使用常量定义密码长度,可以使代码更易于修改和维护。
3. 将输入密码的显示和存储分离,可以降低代码的复杂度。
4. 在输入结束后,根据实际需求进行密码验证或其他操作。
下面是优化后的代码示例:
```
// 定义枚举类型,表示按键值
typedef enum {
KEY_NONE = 0,
KEY_0,
KEY_1,
KEY_2,
KEY_3,
KEY_4,
KEY_5,
KEY_6,
KEY_7,
KEY_8,
KEY_9,
KEY_A,
KEY_B,
KEY_C,
KEY_D,
KEY_STAR,
KEY_HASH
} KeyVal;
// 定义常量,表示密码长度
#define PASSWORD_LENGTH 4
void inputPwdFun() {
KeyVal key = KEYPAD4x4_Read();
// 如果读出的按键值不为0,则表示有按键操作
if (key != KEY_NONE) {
// 按照输入顺序存储密码
static int inputPwdArr[PASSWORD_LENGTH];
static int count = 0;
if (count < PASSWORD_LENGTH) {
inputPwdArr[count] = key;
count++;
// 显示输入的每一位密码
char dataBuf[16];
sprintf(dataBuf, "input: %d", key);
OLED_ShowString(0, 16, (u8*)dataBuf, 16);
OLED_Refresh();
}
// 如果输入密码已经达到4位,结束输入
if (count >= PASSWORD_LENGTH) {
// 在此处进行密码验证或其他操作
// ...
// 清空输入的密码及计数器
memset(inputPwdArr, 0, sizeof(inputPwdArr));
count = 0;
}
}
}
```