xdata unsigned long var_long _at_ 0x0150; unsigned char * pointer; pointer=0x0150; var_long=0x45213256; SBUF=*pointer; ... SBUF=*(pointer+1); ... SBUF=*(pointer+2); ... SBUF=*(pointer+3); ...
my uart communication work, when i send datas byte one byte. when i try to send a long variable in above form , uart com. dont work. is this format illegal? xdata unsigned long var_long _at_ 0x0150; unsigned char * pointer; pointer=0x0150; var_long=0x45213256;
*pointer : 0x45 ?? *(pointer+1) : 0x21 ?? *(pointer+2) : 0x32 ?? *(pointer+3) : 0x56 ??
like: pointer[0], pointer[1], pointer[2], pointer[3]
like
pointer = (unsigned char *) &longvar; ... SBUF = *pointer++; // msb (assumes big-endianness) ... SBUF = *pointer++; // 2sb ... SBUF = *pointer++; // 3sb ... SBUF = *pointer++; // lsb
To be pedantic, that's post-increment - not auto-increment
If the underlying architecture has an auto-increment facility, the compiler might use it to implement the post-increment...
Right you are, thank you. I stand corrected :)