AVR IAR C, rendah / tinggi byte dari variabel INT

D

Diamant

Guest
Membutuhkan akses ke byte dari integer (16 bit).

Saya bisa melakukan ini dalam kasus jika saya tahu alamat integer:
char * variable1 = (char *) 0xXXX; (alamat integer)
char * variable2 = (char *) 0xXXX 1; (alamat dari
1 integer)

apakah ada cara lain?
char * variable1 = (char *) IntVariable;-tidak dapat dikompilasi

Integer pindah kiri / kanan untuk menerima rendah / tinggi byte tidak --- ide untuk saya.

... Perlu bantuan lanjutan programmer ...

 
Yang lebih baik untuk melakukannya adalah melalui serikat

typedef struct Chara
(
char char1;
char char2;
) Chars;

typedef union tall
(
int16 intn;
chars charn;
Mynumber);

mynumber tnum1.intn = 65535;
char first_byte = tnum1.charn.char1;
char second_byte = tnum1.charn.char2;

 
What about this:

serikat
(
int integer;unsigned char bytes[2]; ) variabel;

variable.integer untuk mengakses sebagai integer
variable.byte [0] dan variable.byte [1] untuk mengaksesnya bytewise

berharap hal ini berguna bagi Anda

Maaf saya ulangi posting artems terbaik, saya tidak dapat melihat saat ini saya ketik

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Senyum" border="0" />
 
Thanks alot, ini adalah jalan keluar yang sempurna!
Saya lupa tentang persatuan ...

off: akan membaca lebih lanjut tentang serikat pekerja.

 
Atau ini:

int integer;
char byteHi, byteLo;

byteHi = integer / 256;
byteLo integer = 256%

----------------------
atau
byteHi = integer>> 8;
byteLo = integer;

 
Eskimo, kode ini kebutuhan additionals variabel dalam memori yang akan dibuat, I havent got them at all

 

Welcome to EDABoard.com

Sponsor

Back
Top