当输入密码时,如果输入有误,当按下 删除键后,删除刚刚输入的密码,然后当再次按下数字键时,接着开始,程序如下,怎样修改呢?
void get_psw(void) //输入密码
{
unsigned char i;
lcd_c_send(0xc0); //第二行显示“*”
for (i=0;i<8 ;i++ )
{
keyscan();
while (keynum>=11 && keynum<=15) //除0~10以外,(10为删除键)其他键值则不响应
keyscan();
{
psw_mem[i]=keynum; //键值送暂存区保存
lcd_d_send(0x2a); //*号
delay1(20); //短延时,才能显示最后一个“*”
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
{
unsigned char i,j;
write_com(0x80+0x40);//指令指向第二行第一个
lcd_c_send(0xc0); //第二行显示“*”
for (i=0;i<8 ;i++ )
{
keyscan();
write_com(0x80+0x40+j);//讲指针指到*号处写入密码
psw_mem[i]=keynum; //键值送暂存区保存
while (keynum>=11 ) ;//除0~10以外,(10为删除键)其他键值则不响应
lcd_d_send(0x30+keynum);//这里用1602显示,0x30加上一个数显示在液晶上就是那个数
lcd_d_send(0x2a); //*号
j++;
delay1(20); //短延时,才能显示最后一个“*”
}
}
每次输入后,所有字符刷新显示,删除键就是缓冲区的有效字符个数减一
void get_psw(void)
{
unsigned char i;
lpp:
lcd_c_send(0xc0); //第二行显示“*”
for (i=0;i<8 ;i++ )
{
keyscan();
while (keynum>=11 && keynum<=15)//除0~9以外,其他键值则不响应
keyscan();
{
if(keynum!=10) //如果没按下删除键
{
psw_mem[i]=keynum; //键值送暂存区保存
lcd_d_send(0x2a); //*号
delay1(20); //短延时,才能显示最后一个“*”
}
else
{
lcd_c_send(0xc0);
for (i=0;i<8 ;i++ )
{
lcd_d_send(0x20);
lcd_d_send(0x10);
}
goto lpp;
}
}
}
}
程序虽然实现了删除功能,但是用了goto来调转,不知除了用goto向上跳转外,还能用什么方法向上跳转?
一周热门 更多>