Есть код обработки кнопок через ADC:
Код: Выделить всё
#define K5 0
#define K4 118
#define K3 160
#define K2 182
#define K1 194
#define K0 213 // для ненажатого состояния
/*------ Выводы кнопок ----------*/
#define KEYt PINA.6
/*------ ----------*/
unsigned char read_adc(unsigned char adc_input);
char find = 0;
unsigned char KEYPRESS ()
{
unsigned char Key,KeyTmp; // нажатая клавиша
delay_ms(35);
if(read_adc(6)<K0)
{
delay_ms(15); //дребезг контактов
KeyTmp=read_adc(6);
if(KeyTmp<K0)
{
if(KeyTmp<K1){
if(KeyTmp<K2){
if(KeyTmp<K3){
if(KeyTmp<K4)Key=3;
else Key=4;}
else Key=1;}
else Key=2;}
else Key=5;
}
}
else Key=0;
delay_ms(75);
return(Key);
}В непрерывном цикле:
Код: Выделить всё
if(PINA.5==0) find = 1;
else find = 0;Все работает нормально. Но мне нужно, чтобы при установленной переменной find==1 и нажатых кнопках K4 или К5, соответственно Key=3; или Key=4; отрабатывались непрерывно. А при find==0 - одинарно.
Не могу сообразить, как это сделать?