Hirdetés

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

  • buherton
    őstag

    A program melyet írtam le korlátozza a számértékeket a megengedett 1-255-re (1bájt).
    Ha már 256 akkor hibával tér vissza a program, illetve az alsó fűtés értéke lehet nagyobb mint 255, de kisebb mint 65536 vagy is 2bájt.
    unsigned char változóba lennének mentve ideiglenesen bevitt értékek...

    Ja és még ide annyi, hogy mivel a nevet és minden számértéket egy változóba akarok menteni így nem lehet int típusú.
    Ez lenne a lényege a dolognak.
    unsigned char buffer[32]={0}; //ebbe lenne minden tárolva

    Általában a char 8 bites szokott lenni, ami ugye 1 bájt (unsigned 0 - 255). A short int 16 bites, ami ugye 2 bájt (usnigned 0 - 65535). Az int 32 bites, ami ugye 4 bájt (unsigned 0 - 4 G).

    Ha te egy unsigned char-ba teszel 256-t, akkor abban a változóban 0 lesz az értékadás után, mert átvitel fog képződni (signed esetén ezt túlcsordulásnak hívják). Ha te 255-nél nagyobb számot akarsz letárolni, akkor muszáj használnod a short int-et. Vagy char tömbbe is letárolhatod, és akkor rugalmasan lehet bővíteni. Például én most SPI-al akarok meghajtani 6 shift regisztert, ahol char tömbben tárolom le az egyes shift regiszterek bájtait.

    Ismerkedj meg a struktúrával. Például:

    typedef struct
    {
    unsigned short int temperature_min;
    unsigned short int temperature_max;
    unsigned char foo_bar[32];
    } FOO_BAR_S;

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