Hirdetés

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

  • don_peter
    senior tag

    "Amikor ki akarok írni memóriába egy 16bites adatot akkor ott (short int) hogy tudom kiírni amikor maximum 1bájtonként tud írni a buffer regiszterbe?"

    (Gondolom ez a buffer regiszter vmi i/o port)

    Ertelemszeruen byte-onkent :)

    typedef unsigned short u16;

    void u16_to_port(u16 input)
    {
    buffer_reg = u16 & 0xff;
    // write buffer
    buffer_reg = u16 >> 8;
    // write buffer
    }

    Igen, köszönöm.
    Közben ez a része megoldódott adat struktúrával amely aztán típus definícióval deklarálva lesz.
    Természetesen ez is jó megoldás csak így kellene még egy függvényt használnom ami kicsit bonyolítaná a program tekinthetőségét. (véleményem szerint)

    Az strukturálisában például nem értem miként adódik át úgy egy 16bites adat, hogy az adatszerkezet 2 változójába egységesen oszlik fel.
    Kiolvastam a könyv adatstruktúrájáról szóló fejezetet, de nem írja le, vagy csak számomra nem érthető...

    Tehát egy példa:
    Típus definició

    typedef union INT16
    {
    sort int Value;
    struct
    {
    unsigned char LB;
    unsigned char HB;
    } bytes;
    } INT16

    Aztán jöhet a main() függvényben a deklaráció

    INT16 temp;

    Aztán adunk át értéket, mondjuk 900-at.

    temp.Value = 900;

    Ez az én gondolat menetem szerint 2részre bomlik, 2db 1bájtos részre.
    temp.LB-ben lesz az első (alacsonyabb helyi értéken lévő) 8bit és temp.HB-ben a második (magasabb helyi értéken lévő) 8bit.
    Szóval így: 900 16bites bináris értéke == 00000011 10000100

    Amit nem értek, hogy a miért és milyen elv szerint rendezi el önkényesen az átadott adatokat?

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