void main() { u8 key_temp=0; u8 save_value=0; u8 save_buf[3]; while(1) { key_temp=key_scan(1); //??????????? //?????? //?????? if(IND_KEY1==0) //??????????1 { save_value+=10; //?save_value??10 if(save_value>255) { save_value=255; } IND_KEY1=1; //??????1????? } else if(IND_KEY2==0) //??????????2 { save_value-=10; //?save_value??10 if(save_value<0) { save_value=0; } IND_KEY2=1; //??????2????? } else if(IND_KEY3==0) //??????????3 { save_value+=1; //?save_value??1 if(save_value==255) { save_value=255; } IND_KEY3=1; //??????3????? } else if(IND_KEY4==0) //??????????4 { save_value-=1; //?save_value??1 if(save_value<0) { save_value=0; } IND_KEY4=1; //??????4????? } //????????,??????????? //?????? //?????????? //?????????? //?save_value??????????? save_buf[0]=save_value/100; save_buf[1]=save_value%100/10; save_buf[2]=save_value%100%10; //???????save_value smg_display(save_buf,6); } }优化使k1,k2,k3分别控制三位数码管分别加1,k4储存
时间: 2023-07-12 21:21:35 浏览: 58
可以将加1和储存的操作分离开来,这样代码会更清晰。可以定义一个变量来存储当前选中的数码管,然后在加1的时候更新这个变量,储存的时候使用这个变量来确定要储存的数码管。
以下是修改后的代码:
```
void main() {
u8 key_temp=0;
u8 save_value=0;
u8 save_buf[3];
u8 selected_digit = 0;
while(1) {
key_temp=key_scan(1);
// 加1
if(IND_KEY1==0) {
if(selected_digit == 0) {
save_value += 100;
if(save_value > 255) {
save_value = 255;
}
} else if(selected_digit == 1) {
save_value += 10;
if(save_value > 255) {
save_value = 255;
}
} else if(selected_digit == 2) {
save_value += 1;
if(save_value > 255) {
save_value = 255;
}
}
IND_KEY1=1;
}
// 减1
if(IND_KEY2==0) {
if(selected_digit == 0) {
save_value -= 100;
if(save_value < 0) {
save_value = 0;
}
} else if(selected_digit == 1) {
save_value -= 10;
if(save_value < 0) {
save_value = 0;
}
} else if(selected_digit == 2) {
save_value -= 1;
if(save_value < 0) {
save_value = 0;
}
}
IND_KEY2=1;
}
// 切换选中的数码管
if(IND_KEY3==0) {
selected_digit = (selected_digit + 1) % 3;
IND_KEY3=1;
}
// 储存
if(IND_KEY4==0) {
IND_KEY4=1;
// 储存到选中的数码管
if(selected_digit == 0) {
save_buf[0] = save_value / 100;
} else if(selected_digit == 1) {
save_buf[1] = save_value % 100 / 10;
} else if(selected_digit == 2) {
save_buf[2] = save_value % 100 % 10;
}
}
// 显示
save_buf[0]=save_value/100;
save_buf[1]=save_value%100/10;
save_buf[2]=save_value%100%10;
smg_display(save_buf,6);
}
}
```