Страница 1 из 1

Программа управления кнопками

Добавлено: Чт дек 19, 2013 20:53:53
romasimeiz
Добрый день! Прошу помочь. Мне нужно сделать алгоритмы программы, непонятны некоторые куски. Прошу помочь разобрать. Вопросы в комментариям. Буду очень благодарен за помощь :)

1.

Код: Выделить всё

char red_kb[3]={0, 0, 0};  //массив для ф-ции char red_kb[3]={0, 0, 0}; зачем он нужен? и зачем мы нулям присваиваем инверсное значение кнопок?

void init_red_kb(void)
{
DDRB=0xFF;

PORTB=0xFF;
}
                    
      
void read_red_kb(void)
{
red_kb[0]=~RED_BTN_0;
red_kb[1]=~RED_BTN_1;
red_kb[2]=~RED_BTN_2;
                                        
}
      
      
void main(void)
{
int j=0;
init_red_kb();

PORTD=0xFF;
DDRD=0xFF;

while (1)
{
read_red_kb();
if (red_kb[1]){j=0;} // 
if (red_kb[0]){j+=1;}
if (red_kb[2]){j-=1;}
       PORTD=~j;
       delay_ms(500);
 }
}


2.

Код: Выделить всё

const char select_col[3]={0xEF, 0xDF, 0xBF};
char BUTTON_E[12]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
void trans_delay(void){#asm("NOP")};
void main(void)
{       //
        unsigned char key_buffer, i;
        //
        PORTB=0xFF;
        DDRB=0x00;
        //
        PORTD=0xFF;
        DDRD=0xFF;
        //
        PORTE=0xFF;
        DDRE=0xF0;
while (1)
      {
      for(i=0; i<3; ++i){
        PORTE=select_col[i];
        trans_delay();   //  зачем делается здесь NOP? это ожидание пока не нажмётся какая нибудь кнопка? 
        
        BUTTON_E[i]=~PINE.3;      // что происходит здесь? получается мы кнопкам присваиваем значение кнопок? для чего прибавление +3 каждый раз? 
        BUTTON_E[i+3]=~PINE.2;
        BUTTON_E[i+6]=~PINE.1;
        BUTTON_E[i+9]=~PINE.0;
      }

      }
} 

Re: Программа управления кнопками

Добавлено: Чт дек 19, 2013 21:09:38
pyzhman
Может всё-таки сделать свой алгоритм, а не копошиться в чьём-то?

Re: Программа управления кнопками

Добавлено: Пт дек 20, 2013 00:48:24
Dimon11
Что подразумевается под инверсными значениями кнопок?