Página 1 de 1
Duvida em C no Keil

Enviado:
02 Jan 2008 13:46
por fmaesso
Olá a todos!
Tenho um variavel int, mas só preciso usar a parte baixa da variavel. Como
indico para o Keil para pegar apenas o byte menos significativo de um valor
inteiro?
x = 0x0123;
preciso apenas do 0x23.
Obrigado!
Fernando Maesso

Enviado:
02 Jan 2008 14:06
por Iran
Sei não mas,
low(variavel) não resolve?

Enviado:
02 Jan 2008 16:31
por andre_luis
Filtrando, com mascara,
- Código: Selecionar todos
x &= 0x0FF ;
ou viajando no
casting,
- Código: Selecionar todos
x = (char)x ; // nao sei se funciona, mas tenta

Enviado:
03 Jan 2008 06:46
por veioloko
Eu uso a AND ja citada
- Código: Selecionar todos
x &= 0x0FF ;

Enviado:
03 Jan 2008 18:59
por Maurício
Eu uso este:
- Código: Selecionar todos
int x;
unsigned char y;
char t;
x = 1023;
y = x; //Pega a parte baixa do INT e atribui a Y sem sinal.
// Y = 0xFF; 255D;
x = 0x83FE; // decimal -31746
y = x; // 0xFE = 254 ==> parte sem sinal de x
t = x; // parte com sinal de x => 0xFE = -2 decimal.
Dá pra fazer através de UNION, tb.
Têm vários métodos!
[]'s

Enviado:
14 Jan 2008 16:27
por quique
Olá,
Para pegar a parte menos signficativa eu pego o módulo da divisão por 0x100 :
- Código: Selecionar todos
unsigned int Inteiro;
unsigned char Alta,Baixa;
Inteiro = 0x1234;
Alta = Inteiro / 0x100; // Faz a variavel Alta ficar com 0x12
Baixa = Inteiro % 0x100; // Faz a variável baixa ficar com 0x34
Abraço

Enviado:
17 Jan 2008 12:22
por edusoppa
Eu faço assim, uso deslocamento de bits.
x=0x0123;
y=x<<8;
x=y>>8;
Eduardo.

Enviado:
17 Jan 2008 12:27
por edusoppa
Melhorando um pouquinho.
#include<regx52.h>
void main()
{
int xxxx;
char tttt;
xxxx=0x0123;
tttt=(xxxx<<8)>>8;
}

Enviado:
17 Jan 2008 12:29
por edusoppa
fera
Melhorando um pouquinho.
#include<regx52.h>
void main()
{
int xxxx;
char tttt;
xxxx=0x0123;
tttt=(xxxx << 8 ) >>8;
}

Enviado:
18 Jan 2008 11:05
por B-EAGLE
fazer o AND com 0xFF acredito que é a forma mais rápida aí, só uma instrução.