PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : schiebeoperation



anabolik
02.01.2006, 15:43
hallo und gesundes neues!!
cih habe folgendes problem: ich möchte aus zwei bytes (addr.low und addr.med) eine short-variable (adresse, addr.low niederwetige byte und addr.med höherwertige byte) machen.

mein code:

void exram_write(threebyte *addr,BYTE dat) // nur für Debugging
{
short a,b,j;
a=( short)addr->low;
b=( short)addr->med;
j = ((b << 8 ) + a);
ErsatzXRAM.buf[j]=dat;
} // Ende Debugging

also beim debuggen ist a z.B. 3 und b null. jetzt muss doch j auch 3 sein oder? also bei mir ist es immer null. ist denn mei quellcode richtig

anabolik
02.01.2006, 17:12
hab ich.
j wird in der oberschleife verwendet. komischerweise gabs keine fehlermeldung oder warnung.

SprinterSB
03.01.2006, 15:20
am besten geht sowas über ein Komposit:


typedef union
{
unsigned char byte[2];
unsigned short word;
struct
{
unsigned char low;
unsigned char high;
};
} data_t;

data_t data;

...
data.word = 1234;
data.b[0] = ...; //low-Teil
x = data.low; //low-Teil