Ir ao conteúdo
  • Cadastre-se

AJUDA! com microcontrolador 8051


Posts recomendados

Boa noite galera!!

este é o meu primeiro contato aqui no fórum.

Tenho um projeto que tem o requisito de utilizar o microcontrolador 8051 e na linguagem assembly.

meu objetivo é controlar 8 niveis de leds rgb, estou com um problema inicial da limitação das saidas do 8051 (16 bits), e preciso de 24 bits.

ja pesquisei sobre a saida serial, mas primeiramente gostaria de tentar expandir estas portas.

por favor alguma sugestão?

 

 

desde já agradecido!!

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Tópico movido para este local.

Como eu disse no outro local, use as linhas de endereços A8-A15 , de dados AD0-AD7 e WR para endereçar até 8 latches 74LS373 ou 74HC573 como se fossem memória RAMs.

Os endereços seriam.

01xxh, 02xxh, 04xxh, 08xxh, 10xxh...80xxh.

Com apenas uma linha de escrita nestes endereços você coloca os dados nos latches de forma paralela.

Link para o comentário
Compartilhar em outros sites

ficou um pouco abstrato para mim.

por favor consegue explicar 1 latch de cada vez?

 

p0.0/AD0                                latch 8 entradas; 8 saidas

 ...                                           

p0,7/AD7

 

p2.0/A8

...

p2.7/A15

 

 

pode colocar um codigo como exemplo

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Faz tempo que não trabalho com 8051. Até a noite eu posto imagens.

Quanto ao código, use o DPTR do 8051 para colocar o endereço e o Acumulador para os dados que devem sair. Vamos ver se ainda lembro...

 

MOV A,#255             ;dado que vai sair (0 a 255 dependendo do led que vai acender..

MOV DPTR,#0100h                 ;endereça o primeiro latch

MOVX @DPTR,A                     ;Coloca o dado em AD0-AD7

                                                ;Coloca a linha A8 em nível Alto (0100h)

                                                ;Coloca o sinal WR en nível Baixo

Co a combinação de A8 e WR você gera um CLOCK no LATCH travando os dados na saída.

Veja o datasheet para conhecer os sinais e tempos.

Link para o comentário
Compartilhar em outros sites

Programa conforme o xyko mencionou

 

MOV A,#255             ;dado que vai sair (0 a 255 dependendo do led que vai acender..
MOV DPTR,#0100h                 ;endereça o primeiro latch
MOVX @DPTR,A                     ;Coloca o dado em AD0-AD7
                                                ;Coloca a linha A8 em nível Alto (0100h)
                                                ;Coloca o sinal WR en nível Baixo

 

por favor peço para corrigir se há algum erro nas ligações.

 

1- uma dúvida para a seleção do segundo latch qual ligação é necessária o pino LE do segundo latch é ligado a onda?

 

 

 

2-na instrução que coloca a linha A8 em nivel alto (0100h)

 

como é feito a seleção do latch?

os ports p2.-p2.7 são ativados?

 

no esquema abaixo são 2 latch...

como faço para selecionar o segundo latch e colocar um dado em sua saida...

post-779533-0-08580700-1441214242_thumb.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

você pode lançar mão de um decodificador de endereço com 74hc138, colocar A2...A0 nas entradas de seleção e WR na entrada de habilitação. As saídas nas habilitações dos latchs. Sorry, não achei desenho disso no google imagens (achei mas não é linkável como gosto. Google imagens 8051 74hc138).

Neste caso, QUALQUER escrita externa, vai escrever nos seus latchs. Pode colocar até 8.

tipo isso

 

MOV DPTR,#0h                 ;endereça o primeiro latch
MOVX @DPTR,A

 

MOV DPTR,#1h                 ;endereça o 2º latch
MOVX @DPTR,A

 

 

MOV DPTR,#2h                 ;endereça o 3º latch
MOVX @DPTR,A

 

...

 

MOV DPTR,#7h                 ;endereça o 8º latch

MOVX @DPTR,A

 

Acho que até dava pra endereçar com 8 bits com registro B ou algo assim. Há séculos não mexo com este mc, princialmente em asm.

Ah e neste momento o port se transforma em endereço. Há de se tomar cuidado em usá-lo como port.

 

Claro que tem alternativa mais certa usando bits mais significativos como habilitação de outras entradas do hc138. Portanto aguarde alguma sugestão de alguém mais significativo.

 


achei isso mas tá bem feín...

0.jpg

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Agradeço a mp amigo.

 

Vamos tentar de outra forma. 1ªmente você deve inverter o sinal wr antes de aplicar na porta AND. No caso ele passará a ser ativo em 1. reserve...

agora vamos endereçar cada latch com cada bit MSB do endereço. Imagine as portas AND com o inverso do wr e de A8 a A15 na entrada

pronto!

latch0=0b000000001xxxxxxxx

latch1=0b000000010xxxxxxxx

...

latch7=0b100000000xxxxxxxx

Com isso podes acionar 8 74573

MOV DPTR,#0100h                 ;endereça o primeiro latch
MOVX @DPTR,A

 

MOV DPTR,#0200h                 ;endereça o 2° latch
MOVX @DPTR,A

 

MOV DPTR,#8000h                 ;endereça o 8° latch
MOVX @DPTR,A

 

você ganha em velocidade mas perde o acesso aos pinos como port

 

A qualquer momento alguém mais especialista no 8051 tipo o chico pode corroborar ou não ou apresentar alguma solução diferente

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Bom, agora você tá bem assessorado ela Isadora.

Faça como ela sugeriu.

Use um 74HC138 para decodificar os endereços e assim evitará o uso de portas e inversores.

Estou bastante ocupado ultimamente pra voltar no tempo e reestudar o 8051 que foi coisa dos anos 80/90...kkk

decodificador-demultiplexor-de-3-a-8-lin

 

A B C -> A8, A9 e A10

G1 -> VCC

G2A e G2B -> WR

 

As saídas decodificadas são Y0 a Y7. Estas vão no CLOCK dos LATCHES.

Os endereços para DPTR são:

00xxH

01xxH

.

.

07xxH

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá Bruno, agradeço a mp. Mas por algum motivo prefiro responder em público, ok?

Trabalhar com 595 é moleza. você deve...

fazer 8 vezes disso:

-colocar 1 bit de dado na entrada dele

-dar um pulso de clock

e depois

-dar um pulso de latch: este vai passar os 8 bits pras saídas

Veja com desenho

7_25.gif

e veja como ligar em cascata (em série)

74hc595_networkexample.jpg

Quanto ao programa, em asm não vai rolar. Mas se dizer que entende um pouco de c, talvez eu digite algo pra você ver.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!