barramento bidirecional num port do 8051

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

barramento bidirecional num port do 8051

Mensagempor renan-papaco » 17 Dez 2013 22:29

alguem ai por favor conhece algum truque pra tornar algum port do 8051 como um bus de dados bidirecional? dai eu usaria um pino de outro port pra fazer o controle de um latch 74LS374 para fazer uma saída...e um outro pino pra controlar um 74LS244 pra fazer a leitura.... ou até usaria um 8255 e inicializaria ele com o PA como saida, e PB como entrada.
Sabe quem mais programa um 8051 com ROM externa? MINHA MÃE! HOOOOOOOOOOOOOOOOOO
Avatar do usuário
renan-papaco
Byte
 
Mensagens: 292
Registrado em: 17 Jun 2012 15:56

Re: barramento bidirecional num port do 8051

Mensagempor andre_luis » 17 Dez 2013 22:38

O handshake para manipulação dos sinais de controle de um Latch é tão simples, que acredito que não se encontre bibliotecas na internet para isso.
Eu já fiz isso com o PIC em C, e foram algumas poucas linhas de código diluídas dentro do programa principal.


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: barramento bidirecional num port do 8051

Mensagempor brasilma » 18 Dez 2013 07:06

Veja circuítos com o seletor 74LS138 ou 74LS139 que vai encontrar o que deseja, o 8255 também é uma boa opção!!!
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Re: barramento bidirecional num port do 8051

Mensagempor tcpipchip » 18 Dez 2013 07:20

sobre configurar como port bidirecional o mcs51 já foi discutido....dê uma procurada...
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: barramento bidirecional num port do 8051

Mensagempor renan-papaco » 18 Dez 2013 23:54

aparentemente era pra ser uma coisa fácil... mas acho q sei o porque de não conseguir fazer isso... ocorre que meu compilador não é preparado pra usar recursos avançados do 8051.... como IO mapeada, barramento bidirecional e etc... ja tentei algumas manhas como separar funções do tipo:

void (portaentrada){
P0= variavel
if variavel = 0
(portasaida)
}
void (portasaida)
"habilitar latch por P1.0 e por FF em P0"
}

algo mais ou menos assim nesse esboço... mas como ja disse... não é muito possivel pois o meu compilador eu peguei desse site aki: www.u8051.com.br
parece q precisarei usar uma outra versão do SDCC, pois as headers do compilador q baixei do referido site usa headers proprias, e outras headers foram modificadas pra q não se use recursos externos...q é oq preciso tanto...
Sabe quem mais programa um 8051 com ROM externa? MINHA MÃE! HOOOOOOOOOOOOOOOOOO
Avatar do usuário
renan-papaco
Byte
 
Mensagens: 292
Registrado em: 17 Jun 2012 15:56

Re: barramento bidirecional num port do 8051

Mensagempor brasilma » 19 Dez 2013 07:11

Não vou arriscar comentar algo em C, pois não é minha praia...

A operação é assim: você precisa mapear esses buffers de entrada e saída no seu 8051.

Ou seja, utilizar os pinos de endereço e controle (RD/WR) para controlar a habilitação deles em endereços determinados.

Para exemplificar veja o diagrama de tempos no data sheet do 8051 e os exemplos abaixo.

http://books.google.com.br/books?id=iru ... Fo&f=false

https://www.google.com.br/search?hl=pt- ... GPEA_pt-BR
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Re: barramento bidirecional num port do 8051

Mensagempor renan-papaco » 19 Dez 2013 08:15

brasilma escreveu:Não vou arriscar comentar algo em C, pois não é minha praia...

A operação é assim: você precisa mapear esses buffers de entrada e saída no seu 8051.

Ou seja, utilizar os pinos de endereço e controle (RD/WR) para controlar a habilitação deles em endereços determinados.

Para exemplificar veja o diagrama de tempos no data sheet do 8051 e os exemplos abaixo.

http://books.google.com.br/books?id=iru ... Fo&f=false

https://www.google.com.br/search?hl=pt- ... GPEA_pt-BR

beleza... vc entende de assembly né? pode me dar umas orientações? acho melhor apelar pra essa linguagem...
Sabe quem mais programa um 8051 com ROM externa? MINHA MÃE! HOOOOOOOOOOOOOOOOOO
Avatar do usuário
renan-papaco
Byte
 
Mensagens: 292
Registrado em: 17 Jun 2012 15:56

Re: barramento bidirecional num port do 8051

Mensagempor brasilma » 19 Dez 2013 09:16

Em assembly funciona assim:

Endereço externo com 16bits (65.536 posições) (é possivel trabalhar com apenas 8bits tbém)

MOV DPL, #parte alta do endereço externo;
MOV DPH, #parte baixa do endereço externo;

e para ler ou escrever (o dado fica em A e o endereço vc carrega no DPTR)

MOVX A, @DPTR;
MOVX @R0, A
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Re: barramento bidirecional num port do 8051

Mensagempor renan-papaco » 20 Dez 2013 14:20

brasilma escreveu:Em assembly funciona assim:

Endereço externo com 16bits (65.536 posições) (é possivel trabalhar com apenas 8bits tbém)

MOV DPL, #parte alta do endereço externo;
MOV DPH, #parte baixa do endereço externo;

e para ler ou escrever (o dado fica em A e o endereço vc carrega no DPTR)

MOVX A, @DPTR;
MOVX @R0, A



será q esse exemplo aqui serviria?

MOVX FFh @DPTR;
MOVX @R0, FFh

qual deles lê e qual deles escreve?

e para selecionar endereços. como faço isso com um exemplo?
Sabe quem mais programa um 8051 com ROM externa? MINHA MÃE! HOOOOOOOOOOOOOOOOOO
Avatar do usuário
renan-papaco
Byte
 
Mensagens: 292
Registrado em: 17 Jun 2012 15:56

Re: barramento bidirecional num port do 8051

Mensagempor brasilma » 20 Dez 2013 16:18

Em assembly, o endereço ou registro que está a esquerda da virgula recebe o que está a direita dela.

Portanto para enviar à saída você deve usar a estrutura MOVX @DPTR,A

Para ler MOVX A,@DPTR

O endereço fica nos registradores DPTR parte alta em DPH e baixa em DPL. Suponha que deseje enviar ou ler um dado do endereço 15.500, DPL deve receber 8CH e DPH 3CH (15.500 = 3C8C).
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Re: barramento bidirecional num port do 8051

Mensagempor tcpipchip » 22 Dez 2013 08:41

De acordo sobre o movx
Teoricamente o P0 é unico port bidirecional
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: barramento bidirecional num port do 8051

Mensagempor renan-papaco » 23 Dez 2013 18:33

e qual a rotina em C q posso usar pra fazer desse port, um port bi direcional?

tipo... poderia ser algo tipo um valor de entrada do tipo FFh q é somado com um pino de outro port por exemplo P3.0... esse pino pode ficar em clock continuo, quando P3.0 for 1, e aparecer FFh no port P0. vamos por um tri state pra fazer uma porta de entrada, se FF aparecer no tri state ele somará com P3.0 q vai habilitar ele mandando esse valor pro port P0... e quando o tri state ficar em alta impedância (Z) o programa vai escrever no proprio P0, FFh também... só q vai ativar P3.1 pra habilitar um latch q irá registrar esse valor... é como um I/O mapeado...mas não é I/O mapeado...sacaram?
Sabe quem mais programa um 8051 com ROM externa? MINHA MÃE! HOOOOOOOOOOOOOOOOOO
Avatar do usuário
renan-papaco
Byte
 
Mensagens: 292
Registrado em: 17 Jun 2012 15:56

Re: barramento bidirecional num port do 8051

Mensagempor brasilma » 24 Dez 2013 09:03

Renan, não há nada que precise ser feito neste caso, o sistema já está todo preparado para funcionar exatamente assim desde que os engenheiros projetaram o controlador (a umas 4 décadas, rsrsrs).

O P0 é o barramento de dados (e parte inferior do endereçamento) dele, basta você seguir o esquema dos links que postei, acrescentando o decodificador e utilizando a instrução MOVX.

Experimente baixar o data sheet de Intel e verá outros exemplos de hardware e software sobre isso que estamos falando.
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Re: barramento bidirecional num port do 8051

Mensagempor renan-papaco » 24 Dez 2013 20:58

e num tem como fazer isso em C? MOVX é uma instrução usada no ASM...
Sabe quem mais programa um 8051 com ROM externa? MINHA MÃE! HOOOOOOOOOOOOOOOOOO
Avatar do usuário
renan-papaco
Byte
 
Mensagens: 292
Registrado em: 17 Jun 2012 15:56

Re: barramento bidirecional num port do 8051

Mensagempor brasilma » 25 Dez 2013 08:12

Claro que sim, tudo que se faz em Assembly, faz muito mais fácil em C, da uma pesquisadinha e faz umas experiências que consegue, isso é simples...
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Próximo

Voltar para 8051

Quem está online

Usuários navegando neste fórum: Bing [Bot] e 1 visitante

x