Moderadores: andre_luis, 51, guest2003, Renie
Josivan escreveu:Bom dia a todos do Forum
Estou com uma dúvida e preciso da ajuda de vocês.
Gostaria de saber como posso rotacionar a esquerda (<<) o valor de variável 'A', de forma que ao rotacionar, seja transferido bit a bit para outra variável 'B'.
i=QUANTIDADE_DE_DESLOCAMENTO;
while ( i ){
if ( ORIGEM && 0b1000000 ) { CARRY = 1 ; else CARRY = 0 ; }
DESTINO << 1 ;
DESTINO =| CARRY ;
ORIGEM << 1 ;
i--;
}
_asm
...
rotina de alta precisão
...
_endasm
Não é melhor voce dizer oque pretende fazer com os bits?
lellis escreveu:...devo admitir que o rotate pelo carry do asm é mais eficiente...
lellis escreveu:...qual seria a utilidade prática disto...
se o programa fizesse referencia á rotinas em Assembly ( _asm , _endasm ), perderia a portabilidade.
Se forem feitas chamadas á rotinas criadas em Assembly, aí então não haverá portabilidade sequer para outro microcontrolador.
#include <18F452.h>
#device adc=8
union {
int16 caraGrande;
struct {int caraBaixo:8; int caraAlto:8;}osCaraPequeno ;
}osCara;
#define var16bits osCara.caraGrande
#define var8bitsAlto osCara.osCaraPequeno.caraAlto
#define var8bitsBaixo osCara.osCaraPequeno.caraBaixo
void main (void){
unsigned char indice;
var8bitsBaixo=1;
for(;;){
for(indice=0;indice<16;indice++){
var16bits<<=1;
}
}
}
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante