Página 1 de 1

Duvida em C no Keil

MensagemEnviado: 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

MensagemEnviado: 02 Jan 2008 14:06
por Iran
Sei não mas,

low(variavel) não resolve?

MensagemEnviado: 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

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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 17 Jan 2008 12:22
por edusoppa
Eu faço assim, uso deslocamento de bits.

x=0x0123;
y=x<<8;
x=y>>8;

Eduardo.

MensagemEnviado: 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;
}

MensagemEnviado: 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;

}

MensagemEnviado: 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.