|
這代碼怎么看?貼個我用過的,僅作參考!
//4*4 鍵盤掃描
void Scan_KEY(void)
{
S8 = 0; //==16,12,13,15
S7 = 1;
S6 = 1;
S5 = 1;
__delay_us(1);
if(S4 == 1 && S3 == 1 && S2 == 1 && S1 == 1) //未按下
{
S8 = 1;
S7 = 0; //10(0), 5, 14,11
S6 = 1;
S5 = 1;
KEY_num_16_bit = 0;
KEY_num_12_bit = 0;
KEY_num_13_bit = 0;
KEY_num_15_bit= 0;
KEY_num = 0;
if(S4 == 1 && S3 == 1 && S2 == 1 && S1 == 1) //未按下
{
S8 = 1;
S7 = 1;
S6 = 0; //=====9, 4, 1, 6
S5 = 1;
KEY_num_10_bit = 0;
KEY_num_5_bit = 0;
KEY_num_14_bit= 0;
KEY_num_11_bit= 0;
KEY_num = 0;
if(S4 == 1 && S3 == 1 && S2 == 1 && S1 == 1) //未按下
{
S8 = 1;
S7 = 1;
S6 = 1;
S5 = 0; //=8, 3, 2, 7
KEY_num_9_bit = 0;
KEY_num_4_bit = 0;
KEY_num_1_bit= 0;
KEY_num_6_bit= 0;
KEY_num = 0;
if(S4 == 1 && S3 == 1 && S2 == 1 && S1 == 1) //未按下
{
KEY_num_8_bit = 0;
KEY_num_3_bit = 0;
KEY_num_2_bit= 0;
KEY_num_7_bit= 0;
KEY_num = 0;
KEY_tmp = 0; //只能這里清零一次,或者不需要這個
}
else
{
++KEY_tmp;
if(KEY_tmp >= KEY_delay_OK) //去抖
{
KEY_tmp = 0;
if(S4 == 0 && S3 == 1 && S2 == 1 && S1 == 1) //S1 + S4 按下
{
if(KEY_num_8_bit == 0)
{
KEY_num_8_bit = 1;
KEY_num = 8;
KEY_once_bit = 0;
}
}
else if(S4 == 1 && S3 == 0 && S2 == 1 && S1 == 1) //S1 + S3 按下
{
if(KEY_num_3_bit == 0)
{
KEY_num_3_bit = 1;
KEY_num = 3;
KEY_once_bit = 0;
}
}
else if(S4 == 1 && S3 == 1 && S2 == 0 && S1 == 1) //S1 + S2 按下
{
if(KEY_num_2_bit == 0)
{
KEY_num_2_bit = 1;
KEY_num = 2;
KEY_once_bit = 0;
}
}
else if(S4 == 1 && S3 == 1 && S2 == 1 && S1 == 0) //S1 + S1 按下
{
if(KEY_num_7_bit == 0)
{
KEY_num_7_bit = 1;
KEY_num = 7;
KEY_once_bit = 0;
}
}
}
}
}
else
{
++KEY_tmp;
if(KEY_tmp >= KEY_delay_OK) //去抖
{
KEY_tmp = 0;
if(S4 == 0 && S3 == 1 && S2 == 1 && S1 == 1) //S7 + S4 按下
{
if(KEY_num_9_bit == 0)
{
KEY_num_9_bit = 1;
KEY_num = 9;
KEY_once_bit = 0;
}
}
else if(S4 == 1 && S3 == 0 && S2 == 1 && S1 == 1) //S7 + S3 按下
{
if(KEY_num_4_bit == 0)
{
KEY_num_4_bit = 1;
KEY_num = 4;
KEY_once_bit = 0;
}
}
else if(S4 == 1 && S3 == 1 && S2 == 0 && S1 == 1) //S7 + S2 按下
{
if(KEY_num_1_bit == 0)
{
KEY_num_1_bit = 1;
KEY_num = 1;
KEY_once_bit = 0;
}
}
else if(S4 == 1 && S3 == 1 && S2 == 1 && S1 == 0) //S7 + S1 按下
{
if(KEY_num_6_bit == 0)
{
KEY_num_6_bit = 1;
KEY_num = 6;
KEY_once_bit = 0;
}
}
}
}
}
else
{
++KEY_tmp;
if(KEY_tmp >= KEY_delay_OK) //去抖
{
KEY_tmp = 0;
if(S4 == 0 && S3 == 1 && S2 == 1 && S1 == 1) //S6 + S4 按下
{
if(KEY_num_10_bit == 0)
{
KEY_num_10_bit = 1;
KEY_num = 10;
KEY_once_bit = 0;
}
}
else if(S4 == 1 && S3 == 0 && S2 == 1 && S1 == 1) //S6 + S3 按下
{
if(KEY_num_5_bit == 0)
{
KEY_num_5_bit = 1;
KEY_num = 5;
KEY_once_bit = 0;
}
}
else if(S4 == 1 && S3 == 1 && S2 == 0 && S1 == 1) //S6 + S2 按下
{
if(KEY_num_14_bit == 0)
{
KEY_num_14_bit = 1;
KEY_num = 14;
KEY_once_bit = 0;
}
}
else if(S4 == 1 && S3 == 1 && S2 == 1 && S1 == 0) //S6 + S1 按下
{
if(KEY_num_11_bit == 0)
{
KEY_num_11_bit = 1;
KEY_num = 11;
KEY_once_bit = 0;
}
}
}
}
}
else
{
++KEY_tmp;
if(KEY_tmp >= KEY_delay_OK) //去抖
{
KEY_tmp = 0;
if(S4 == 0 && S3 == 1 && S2 == 1 && S1 == 1) //S5 + S4 按下
{
if(KEY_num_16_bit == 0)
{
KEY_num_16_bit = 1;
KEY_num = 16;
KEY_once_bit = 0;
}
}
else if(S4 == 1 && S3 == 0 && S2 == 1 && S1 == 1) //S5 + S3 按下
{
if(KEY_num_12_bit == 0)
{
KEY_num_12_bit = 1;
KEY_num = 12;
KEY_once_bit = 0;
}
}
else if(S4 == 1 && S3 == 1 && S2 == 0 && S1 == 1) //S5 + S2 按下
{
if(KEY_num_13_bit == 0)
{
KEY_num_13_bit = 1;
KEY_num = 13;
KEY_once_bit = 0;
}
}
else if(S4 == 1 && S3 == 1 && S2 == 1 && S1 == 0) //S5 + S1 按下
{
if(KEY_num_15_bit == 0)
{
KEY_num_15_bit = 1;
KEY_num = 15;
KEY_once_bit = 0;
}
}
}
}
}
//=END |
評分
-
查看全部評分
|