problemas com incremento de P2

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

Re: problemas com incremento de P2

Mensagempor brasilma » 12 Nov 2018 18:22

Ainda sobre a configuração dos ports...

Este pdf explica de uma forma legal a questão da operação dos ports do 51 file:///C:/Users/Usuario/Downloads/gk_mc1_a4_ports_8051.pdf

Para leitura de sinal externo conectado aos pinos de um port o máximo que é necessário fazer (além do comando de leitura) pode ser setar o pull-up interno (se houver um pull-up externo nem isso).

Com relação ao código, se o objetivo for zerar P0 a sintaxe da segunda linha está invertida.

Código: Selecionar todos
       ;inicializa P0 como entrada
        mov     A,#00h    ;carrega  00 no acumulador
        mov     A,P0      ;zera P0, inciando ele como port de entrada
" 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: problemas com incremento de P2

Mensagempor renan-papaco » 14 Nov 2018 12:01

andre_teprom escreveu:
eu prefiro o asm pq nele tenho controle total sobre o uC


Até hoje em quase 20 anos de carreira, só encontrei um caso onde o assembly foi essencial, um caso onde manipulei uma rotina que estourava deliberadamente a pilha do microcontrolador sem causar erro de compilação, e de resto pode-se dizer que pra tudo o mais o C atende, mas esse debate iria fugir do tópico, que não parece estar caminhando pra frente, ao menos esperava uma atualizacao do seu codigo com as dicas dadas até agora.

quando tiver um tempinho eu rodo as alterações q me falaram aqui...
qualquer coisa posto video no youtube e mostro aqui o resultado.
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: problemas com incremento de P2

Mensagempor renan-papaco » 14 Nov 2018 12:03

ze escreveu:
renan-papaco escreveu:eu prefiro o asm pq nele tenho controle total sobre o uC.

Percebe-se kk.
Mas vem cá, 3 anos mexendo com asm e empacou num problema tão simples?


não to estudando isso a 3 anos direto, na verdade só comecei a fuçar assembly no ano passado e ainda sim, bem esporádico
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: problemas com incremento de P2

Mensagempor renan-papaco » 14 Nov 2018 13:51

deu certo!
eu tinha me esquecido de colocar o absolute jump para a label inicio.

também havia esquecido de carregar P2 com 01h logo no começo do programa.

agora ficou assim o programa.

Código: Selecionar todos
   org     0000h


;inicializa P0 como entrada
        mov     P2,#01h    ;carrega 01 em P2     
        mov     A,#00h    ;carrega  00 no acumulador
        mov     A,P0      ;zera P0, inciando ele como port de entrada
        ajmp    inicio       
inicio:

        mov     A,#0FFh 
        mov     P2,A

loop:

        jb      P0.0,loop  ;enquanto P0.0 não for acionado, desvia para inicio
        setb    B.0           ;apertou P0.0? seta flag B0   
        sjmp    leitura      ;em seguida desvia para a rotina de leitura   

leitura:

        jnb     P0.0,$
        clr     B.0
       
       
           
        inc     P2
       
        sjmp    loop


 



end


       
   



ainda há problema com deboucing, mas isso se resolve com um capacitor eletrolitico em paralelo com o botão correspondente ao pino 0 do port 0.
vlw pela ajuda pessoal, depois posto um video mostrando o resultado.

EDIT: o capacitor em paralelo não resolveu, mas consegui dar um jeito usando um CD40106 de modo a "limpar" o sinal de pulso do botão.
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: problemas com incremento de P2

Mensagempor renan-papaco » 14 Nov 2018 17:49

agora, um outro desafio...

ao incrementar ou decrementar P0, em vez de um contador em binário, seria possível fazer com que o MCU acenda um led de cada vez? como se fosse um 4017? tentei implementar uma tabela, mas não deu muito certo não.
alguma dica?
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: problemas com incremento de P2

Mensagempor andre_luis » 14 Nov 2018 20:43

Com todo respeito, mas voce é mesmo um cabeça-dura.

Lhe foi dito que teria de carregar 0xFF no P2 para o fazer funcionar como entrada e voce insistiu no 0x00 citando uma fonte de referencia sabe-se lá daonde.
No final das contas seu código faz nada mais nada menos do que carregar 0x00 em A, 0xFF em A, e somente depois 0xFF em P2.

asm code
mov     A,#00h    ;carrega  00 no acumulador
mov A,P0 ;zera P0, inciando ele como port de entrada
; ajmp inicio ;; SEM FUNCAO
inicio:
mov A,#0FFh
mov P2,A


Seria como fazer isso:

Código: Selecionar todos
A ← 0x00
A ← 0xFF
P2 ← A


Repare que o Jump é desnecessario, pois pula para a linha seguinte!

renan-papaco escreveu:eu tinha me esquecido de colocar o absolute jump para a label inicio.
"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: problemas com incremento de P2

Mensagempor brasilma » 14 Nov 2018 20:51

Apenas por uma questão de aprendizado...

mov A,#00h ;carrega 00 no acumulador
mov A,P0 ;zera P0, inciando ele como port de entrada

...a segunda linha está com a sintaxe invertida!
" 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: problemas com incremento de P2

Mensagempor renan-papaco » 14 Nov 2018 21:01

brasilma escreveu:Apenas por uma questão de aprendizado...

mov A,#00h ;carrega 00 no acumulador
mov A,P0 ;zera P0, inciando ele como port de entrada

...a segunda linha está com a sintaxe invertida!

agora sim q notei.. mas ainda sim o código rodou numa boa.

e nem sei pq vocês estão tão sismados com esse trecho do programa.

querem q eu ponha o link da video aula que vi essa rotina aqui?

e não me chamem de cabeça dura... vamos manter o respeito aqui vlw?
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: problemas com incremento de P2

Mensagempor brasilma » 15 Nov 2018 09:32

Esta rodando pois como foi comentado, estes procedimentos são desnecessários, porem do contrário seria um problema!
" 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: problemas com incremento de P2

Mensagempor ze » 16 Nov 2018 09:08

renan-papaco escreveu:agora, um outro desafio...

ao incrementar ou decrementar P0, em vez de um contador em binário, seria possível fazer com que o MCU acenda um led de cada vez? como se fosse um 4017? tentei implementar uma tabela, mas não deu muito certo não.
alguma dica?

Sobre isso, por acaso vc já viu o set de instruções do seu mc? P.ex. as instruções RL,RLC,RR,RRC são seu 4017 anabolizado.
Prática neandertal mas uma dica é: imprima todas as intruction set e cole próxima do monitor.
Imagem
Ah e permita-me concordar com o temporário indice reduzido de solidez do seu crânio. Mas compreendo sua limitação. Estamos aqui pra expandi-la
abç
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Re: problemas com incremento de P2

Mensagempor renan-papaco » 17 Nov 2018 19:13

caraca maluco!!! como eu fui me esquecer das instruções de deslocamento!

kkkkk é mole? essa dica realmente valeu a pena...
em vez de inc P2, era só colocar RLC P2, ou RRC P2...

vou experimentar.
vlw ai.
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

Anterior

Voltar para 8051

Quem está online

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

x