为啥某些按键按几次就不管用了 unsigned int i_S=0; // 标志位,用于判断输入是否合法 unsigned int j_S=0; // 标志位,用于判断是否需要更新坐标值 unsigned int TmpS; // 临时变量,用于存储6位数值 if (key_val >= KEY_0 && key_val <= KEY_9) { printf("%d\r\n",Freque); // 输入数字时,更新对应位置上的数值 Record.Olds = Record.Memory[Freque]; Record.Memory[Freque] = key_val - KEY_0; //将键值转换为数字 i_S = 0; j_S = 1; // 更新横坐标值 if (j_S == 1 ) { if(Freque<3){ TmpS = Record.Memory[0] * 100 + Record.Memory[1] * 10 + Record.Memory[2]; if (TmpS > 600) { i_S = 1; } else { Record.FactX = TmpS;}} if(Freque<6){ TmpS = Record.Memory[3] * 100 + Record.Memory[4] * 10 + Record.Memory[5]; if (TmpS > 600) { i_S = 1; } else { Record.FactY = TmpS;}}} // 输入不合法,恢复旧数值 if (i_S == 1) { Record.Memory[Freque] = Record.Olds;} else { // 输入合法,递推到下一位 Freque = (Freque < 6) ? (Freque + 1) : 0;} key_val = 0; }
时间: 2024-04-28 12:21:28 浏览: 51
这段代码中,按键按几次不管用的原因可能是因为输入的数字超出了合法范围,导致输入不合法,然后恢复了旧的数值,从而没有更新坐标值。具体来说,当输入数字时,首先会将对应位置上的数值更新为输入的数字,然后会判断输入是否合法,如果输入不合法,就会将对应位置上的数值恢复为旧的数值。如果输入合法,就会递推到下一位,继续输入。在判断输入是否合法的过程中,会将输入的6位数值拼接成横坐标和纵坐标,然后判断横坐标和纵坐标是否都小于等于600,如果有一个大于600,就认为输入不合法,将对应位置上的数值恢复为旧的数值。所以,如果输入的数字超出了合法范围,就会导致输入不合法,从而恢复旧数值,没有更新坐标值,看起来按键按几次不起作用。
阅读全文