Hirdetés

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

  • buherton
    őstag

    Tetszik mert kisebb memória kell neki :D
    Köszi kicserélem illetve mutatom az egészet kompletten :D

    //A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 - : .
    static char ABC[40][7] ={{0b00000,//A
    0b01110,
    0b10001,
    0b10001,
    0b11111,
    0b10001,
    0b10001}
    };
    unsigned char karakteratvalto(unsigned char karakter){
    static char chars[40] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-:. ";
    unsigned char i, result;
    for(i=0; i<40; i++){
    if(karakter == chars[i]){
    result = i;
    break;
    }
    }
    return result;
    }
    void karakter(unsigned char karakter){
    unsigned char i, z;
    unsigned char mask = 0x10;
    for(i=0; i<7; i++){
    for(z=0; z<5; z++){
    if (ABC[karakter][i] & mask){
    printf("o");
    }else{
    printf(".");
    }
    mask >>= 1;
    }
    mask = 0x10;
    printf("\n");
    }

    }

    Így néz ki a teljes kód.
    Az ABC az végig van írva rendesen úgy ahogyan látod a kommentált részben is. ;)

    Mennyi RAM és flashed van? A static tömböket rakhatod a flashre is ha nincs elé RAM-od (compiler manualt kell megnézni). A számokat pl. a tömb méret for ciklus meddig menjen, azokat ajánlott #define-olni. Ez sem rossz forma mask = 0x10;, de ez olvashatóbb mask = (1<<4) és nem foglal több helyet, mert a fordító az ilyeneket kiszámolja. mask >>= 1; ez is inkább így mask = (1<<(z + 4));, mert ebből a sorból már látod, hogy a 4. bittől fölfelé akarod a biteket elérni és nem kell még feltekeni, hogy mi is volt a kiinduló érték. De ez minden rajtad, csak az olvashatóságon szeretnék segíteni.

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