Лагунов (23.06.2018 10:25 - 10:28, просмотров: 210) ответил Make_Pic на Гуру - Подскажите pls чайнику (чтобы сильно не пинали меня здесь :) красивый компактный код опроса клавиатурной матрицы 4Х4 кнопок с защитой от дребезга на С (БЕЗ С++)?
я вот так делаю, в прерываниях от SysTick (каждую 1 мс): Порт H0, H1 - адрес для 74НС4051, который переключает столбцы
// KLAVIATURA
uint16_t y=1;
for(x=0;x<4;x++)
{
if (HAL_GPIO_ReadPin (GPIOC, y)==0)
{
DRBKL[ADRKL*4+x]=0;
}
else
{
if (DRBKL[ADRKL*4+x]<20)
{
DRBKL[ADRKL*4+x]=DRBKL[ADRKL*4+x]+1;
if (DRBKL[ADRKL*4+x]>=20)
{
DRBKL[ADRKL*4+x]=20;
NAZKL=KODKL[ADRKL][x];
HAL_TIM_OC_Start(&htim3, TIM_CHANNEL_1);
SCZVUK=30;
}
}
else
{
SCKL[ADRKL*4+x]=SCKL[ADRKL*4+x]+1;
if (SCKL[ADRKL*4+x]>250)
{
//ZVUK
HAL_TIM_OC_Start(&htim3, TIM_CHANNEL_1);
SCZVUK=50;
SCKL[ADRKL*4+x]=0;
}
}
}
y=y<<1;
}
ADRKL=ADRKL+1;
if (ADRKL>3)
ADRKL=0;
HAL_GPIO_WritePin(GPIOH, GPIO_PIN_0|GPIO_PIN_1, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOH, ADRKL, GPIO_PIN_SET);