Página 1 de 1

Como eu interpreto isto???

MensagemEnviado: 03 Mai 2007 20:14
por KILB
data - =(!(data & 0x01) & (data & 0x02)) <<2

Esta função pertence a um exemplo contido no compilador CCS que é o EXPIO, ou seja, é uma expanção de entradas e saidas.
Já consegui entender praticamente todo o programa somente a linha que mostrei acima não ta tendo muito jeito de entender não!!!


Se alguem puder me esclarecer ficarei muito grato!!!



Valeu


KILB() :(

MensagemEnviado: 03 Mai 2007 21:10
por tcpipchip
data - =(!(data & 0x01) & (data & 0x02)) <<2

"C" "A" "B"

"A"= ISOLA O BIT 0 DE DATA, FORÇANDO DEMAIS BITS A 0
NEGA "A"

"B"=ISOLA O BIT 1 DE DATA, FORÇANDO DEMAIS BITS A 0

"C" = FAZ UM AND ENTRE "A" E "B"

"C" = "C" * 4

DATA = DATA - C

tcpipchip

MensagemEnviado: 04 Mai 2007 08:55
por andre_luis
Apenas um palpite :

Parece ser um gerador de padroes aleatórios, pois realmente a sequencia não faz muito sentido.

+++

MensagemEnviado: 04 Mai 2007 11:14
por KILB
Grandes meninos,



Muito obrigado pela atenção, e agora eu vou dar uma estudada no código juntamente com o que vcs expuseram.


Valeu, brigadão


KILB() :D

MensagemEnviado: 05 Mai 2007 11:00
por zielpunkt
Kilb, a tua linha de código está errada. falta a negação do segundo termo. O certo é:
Código: Selecionar todos
void main() {
   BYTE data;
   do {
      read_expanded_inputs (&data);

      data |= 0xF8;                           //Force the unused input bits on
      data -= (!(data&0x01)&!(data&0x02))<<2; //Turn on bit 2 it both inputs are
                                              //toggled
      write_expanded_outputs (&data);
   } while (TRUE);

Com o codigo completo fica + simples de interpretar, ok. Para dar lógica a quem está observando, não esqueça que se trata de um exemplo para leitura de dois botões, atuando sobre tres leds e algumas situações, etc.:

"When button 1 is pushed, LED 1 will toggle green. Button 2 will toggle LED 2. However, when both buttons are pushed, LED 3 will toggle green."


É isso.

MensagemEnviado: 05 Mai 2007 20:15
por KILB
Kilb, a tua linha de código está errada. falta a negação do segundo termo

zielpunkt,

É que é o seguinte, eu realmente retirei a negação tentando faze-lo funcionar do jeito que eu queria, que é quando vc ativar uma entrada a respectiva saida seja ativada, e digamos que na sorte achei o ponto G da coisa, mas ai é que vem a pergunta, porque?Como esta linha funciona funciona?Tirei a negação e funcionou!!!



Valeu


KILB :oops: :x :?: :?: :?: