Alterar apenas um bit de um byte, como?

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Mensagempor neto_e_khelen » 22 Jan 2010 20:13

fabim escreveu:
neto_e_khelen escreveu:Fabim, deu uma olhada no meu software e hardware????


tentei, mais o tempo passa, e ele simplesmente volta pro começo quando eu clico nos links de download. :(

Faz favor, fioti, fico furioso.. Ficar fazendo download.....

Manda no meu e1/2..
fabioriksilva@hotmail.com..

E não mande source for CCS, it´s virouzes!!.. meu firewall vai barrar.

Povim teimoso, tão cansados de ver só CCS dar pau, e mesmo assim continuam insistindo com essa bosta.

Abraços

Enviado no e-mail.
neto_e_khelen
Bit
 
Mensagens: 33
Registrado em: 22 Jul 2009 19:01

Mensagempor mhagnumdw » 19 Set 2011 11:32

Neto, eu sei que faz muito tempo, mas mesmo assim dei uma olhada no seu projeto. Certamente você já resolveu. Mas vou deixar registrado aqui.

Supondo que eu esteja enviando a letra 'c' pela serial (do PC para o PIC):
A sua variável saida que inicialmente é 0b00000000, vai ficar 0b00000010 imediatamente após executada a linha bit_set(saida,1) [ver imagem 1], tudo ok até aí. Na linha seguinte você chama write_expanded_outputs(&saida) [ver imagem 2] e imediatamente após essa linha a sua variável saida volta a ser 0b00000000, o que é um problema pra você.

O 'problema' está na função write_expanded_outputs.
Veja que essa função, na linha 0026 [ver imagem 2] fica manipulando o valor que está no ponteiro *oe e o valor nesse ponteiro é justo a sua variável saida. A sua variável tem os bits rotacionados à esquerda e é complementada com o bit 0 à direita, acontecendo isso 8 vezes. Como sua variável é de 1 byte, logo depois dessas 8 rodadas você terá o valor 0b00000000 na variável saida.

Espero ter ajudado alguém.

Imagem 1:
Imagem

Imagem 2:
Imagem

--
MhagnumDw
Avatar do usuário
mhagnumdw
Bit
 
Mensagens: 49
Registrado em: 26 Out 2009 15:30

Mensagempor mhagnumdw » 19 Set 2011 11:36

Neto, eu sei que faz muito tempo, mas mesmo assim dei uma olhada no seu projeto. Certamente você já resolveu. Mas vou deixar registrado aqui.

Supondo que eu esteja enviando a letra 'c' pela serial (do PC para o PIC):
A sua variável saida que inicialmente é 0b00000000, vai ficar 0b00000010 imediatamente após executada a linha bit_set(saida,1) [ver imagem 1], tudo ok até aí. Na linha seguinte você chama write_expanded_outputs(&saida) [ver imagem 2] e imediatamente após essa linha a sua variável saida volta a ser 0b00000000, o que é um problema pra você.

O 'problema' está na função write_expanded_outputs.
Veja que essa função, na linha 0026 [ver imagem 2] fica manipulando o valor que está no ponteiro *oe e o valor nesse ponteiro é justo a sua variável saida. A sua variável tem os bits rotacionados à esquerda e é complementada com o bit 0 à direita, acontecendo isso 8 vezes. Como sua variável é de 1 byte, logo depois dessas 8 rodadas você terá o valor 0b00000000 na variável saida.

Espero ter ajudado alguém.

Imagem 1:
Imagem

Imagem 2:
Imagem

--
MhagnumDw
Avatar do usuário
mhagnumdw
Bit
 
Mensagens: 49
Registrado em: 26 Out 2009 15:30

Anterior

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x