Keresés

Új hozzászólás Aktív témák

  • dabadab

    titán

    válasz don_peter #4568 üzenetére

    #define SOROK_SZAMA 4
    #define NO_KEY 0
    #define FIRST_ROW_BIT_POSITION 4

    int oszlopok[] = { PORT_B4, PORT_B5, PORT_B6, PORT_B7 };

    unsigned char get_key()
    {
    unsigned int i, k=0;
    for( i=0; i < SOROK_SZAMA ; i++ )
    {
    SOROK = (1 >> ( FIRST_ROW_BIT_POSITION + i ) ); //Léptetjük a sorok szintjét
    for ( j = 0 ; j < sizeof(oszlopok) ; j++ )
    {
    k++;
    if(oszlopok[j] == MAGAS)
    {
    while( oszlopok[j] == MAGAS ); //Várakozunk a gomb felengedéséig
    return k;
    }
    }
    }
    return NO_KEY;
    }

    Vagyis az oszlopokat szepen tombbe lehet rakni, es akkor a ciklusbol tenylegesen ciklust lehet csinalni.

    A k-t allitgato resznek semmi ertelme nem volt, mert csak arra allitotta, ami amugy is az erteke volt (illetve a vegen nullara, de azt meg nem hasznaltad sehol).

    Es ha nem talal semmit, akkor nem ALACSONY-t adunk vissza, hanem valami sajat erteket, mert az logikailag ket kulonbozo dolog - akkor is, ha a konkret ertek pont ugyanaz (most - aztan lehet, hogy kesobb nem lesz az).

    Illetve a kodba lehetoseg szerint nem illik mindenfele konstansokat elhinteni, ha valami konstans, akkor legyen az, C-ben tipikusan #DEFINE-nal.

Új hozzászólás Aktív témák