Ir ao conteúdo

Alterar apenas um bit de um byte, como?


neto_e_khelen

Posts recomendados

  • Membro VIP
Postado

nestes momentos iniciais de tropeços e acertos com MC de 8 bits, sugiro considerar as variáveis com tamanhos ditados pelo ansi c. Com o tempo voce descobre as particularidades e peculiaridades dos compi/microcontro-ladores. Ex. é o seu inexistente int32 que seu compilador deve ter atribuído a um long.

A propósito, sinta-se a vontade em apresentar suas dúvidas e sucessos (de preferência) com relação ao seu complexo sistema. E não vá dizer que está levando uma surra de um mísero bit e um mísero led!!

sr moderador. permita-me registrar.

sabemos de sua boa intenção e função porém recomendo avaliar com mais profundidade se meus inofensivos comentários offtopic são realmente extremamente agressivos e vão de encontro às regras do forum. Pois considero sua remoção como tolhimento de meu estilo literário e personalidade e consequentemente passo a não me sentir a vontade em colaborar para a nossa comunidade. Sabemos que a educação de nossa amada nação está muitíssimo aquém do desejado e foruns com este e pessoas como nós somos como uma gota no oceano. Mas uma gota! Sabemos que vai apagar este comentário, mas tente não apagar de tua memória. Planejo permanecer como membro ativo até quando nosso Criador permitir. No entanto....

sucessos!

Postado

.. a duvida inicial nao poderia ser respondida apenas com bitwise?

Caro "Sink00", você poderia me ajudar neste caso com o btwise?

Os livros que tenho, nos fóruns nacionais e também nos importados, não encontro info suficiente e favorável para este propósito ou mesmo algo mais claro a respeito. Só sei que btwise gira os bites. Mas como girar os bites resolveria este probleminha??

Eu quero enviar dados para um shift 595, que possui latch (memória) em sua saída e não perdê-los quando eu enviar outros e acho que para este propósito o btwise não funcionará

Estou tendo este trabalho com apenas um shift, mas vamos supor que eu queira utilizar 32 ou 64. Sei que é possível se enviar novos dados ao shift sem alterar os anteriores, mas como? Teria alguma outra forma de se dar o strobe no pino latch?

Estou começando a achar que esta é uma missão impossível, visto que quando um novo byte penetra bit a bit em cada um dos shifts, ele vai se arrastando e destruindo o byte anterior. Assim ao strobar o pino latch, somente a informação nova será enviada. Estou certo??

Será que não há uma maneira de se enviar um byte prontinho com uma informação de se ligar ou desligar somente o portão que quero abrir?

Creio que terei de bolar um driver que me faça isso se utilizando de vários bit_test e muitos bit_set.

Desde já agradeço às respostas e o tempo dedicado a mim.

Ricardo da Silva Pimentel.

  • Membro VIP
Postado

Amigo sink, a operação bitwise não se aplica naquele caso pois não são registradores de portas. pelo menos não literalmente. como disse, voce pode sim fazer as operações bitwise na memória do MC ANTES de enviá-los à saída via FUNÇÃO()

Amigo pimentel, voce está correto em suas observações e também no também inofensivo offtopic que esperemos que haja razoabilidade ou coerência do moderador. Mas parece que voce perguntou e respondeu ao mesmo tempo. Portanto já tem a faca e o queijo na mão! Resumindo: com o 595 voce pode deslocar os bits internamente e só depois disso mostrá-los na saída. Mas se já sabes disso, o que mais queres da vida mesmo? O sentido? rs

Ah e bitwise não é pra girar os bits. Look:

http://en.wikipedia.org/wiki/Bitwise_operation

abç, boa sorte & sucessos!

Postado

Certo José, acho que entendi agora.

Btwise é a operação dos bits em um byte através dos operadores. Certo?

Bem, é isso. Muitas dúvidas minhas foram sanadas aqui e talvez eu tenha ainda mais. Dúvidas estas que antes eram a do "casal".

Abraço a todos aí, gente!

Ricardo da Silva Pimentel

  • 2 meses depois...
Postado

ola pessoal

ao utilizar o ci 74hc595 encontrei um pequeno problema pois quando ha falta de energia e a mesma retorna em um curto periodo de tempo o ci liga com as saidas no mesmo estado, no caso de controle de motores isso faz com que os motores liguem todos de uma vez gerando corrente alta na rede e alem de ser inseguro

alguem sabe um forma de iniciar o ci com as saidas zeradas?

ligando o pino G em HIGH faria o serviço só que quando a falta de energia as saidas do pic voltam zeradas isso geraria um breve pulso entre ligar o pic e colocar em HIGH o pino G

ideias?

Postado
ola pessoal

ao utilizar o ci 74hc595 encontrei um pequeno problema pois quando ha falta de energia e a mesma retorna em um curto periodo de tempo o ci liga com as saidas no mesmo estado, no caso de controle de motores isso faz com que os motores liguem todos de uma vez gerando corrente alta na rede e alem de ser inseguro

alguem sabe um forma de iniciar o ci com as saidas zeradas?

ligando o pino G em HIGH faria o serviço só que quando a falta de energia as saidas do pic voltam zeradas isso geraria um breve pulso entre ligar o pic e colocar em HIGH o pino G

ideias?

Tenho uma que não é das melhores, mas funciona: Coloque uma porta inversora em cada uma das entradas ou saídas.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!