problemas com incremento de P2

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

problemas com incremento de P2

Mensagempor renan-papaco » 04 Nov 2018 18:59

estou tentando fazer um 8051 incrementar o port P2 apertando um botão no port P0.0, usando umas rotinas que experimentei num outro código que funcionou.

eu programei o uC para acender todos os oito leds do port P2 e ao apertar P0.0 ele incrementa em 1 o port P2 até chegar em 255(0XFF)
tipo, aperta uma vez, incrementa uma vez, aperta duas vezes incrementa duas vezes,(uma apertada = incrementa em 1) mas quando pressiono esse botão, ele apenas acende um unico led do P2 e não sai disso...

o código tá abaixo:

asm code
org     0000h
;inicializa P0 como entrada
mov A,#00h ;carrega 00 no acumulador
mov A,P0 ;zera P0, inciando ele como port de entrada
inicio:
mov A,#0FFh
mov P2,A
loop:
jb P0.0,inicio ;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

mov A,#00h
mov P2,#01h
inc P2
sjmp leitura
end


será que tenho q salvar alguma coisa na pilha? tentei diferentes versões mas não consegui o efeito desejado...
poderiam me dar uma luz?

vou upar um video no youtube pra vocês verem a reação do circuito.
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 » 04 Nov 2018 19:03

video do circuito em funcionamento:

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 » 04 Nov 2018 19:40

De onde voce tirou a ideia de que zerando P0 o configura como entrada?

Código: Selecionar todos
mov     A,#00h    ;carrega  00 no acumulador
mov     A,P0      ;zera P0, inciando ele como port de entrada
"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 renan-papaco » 04 Nov 2018 22:20

andre_teprom escreveu:De onde voce tirou a ideia de que zerando P0 o configura como entrada?

Código: Selecionar todos
mov     A,#00h    ;carrega  00 no acumulador
mov     A,P0      ;zera P0, inciando ele como port de entrada



não tem o canal WR kits? ele usou essa tatica para usar P0 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: problemas com incremento de P2

Mensagempor andre_luis » 05 Nov 2018 14:02

renan-papaco escreveu:não tem o canal WR kits? ele usou essa tatica para usar P0 como entrada...


Nunca ouvi falar nisso, devo estar desatualizado...
Só me baseio em datasheet e na minha experiencia com esse core.
"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 tcpipchip » 05 Nov 2018 22:46

Pelo que lembro FF em P0 coloca como entrada
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: problemas com incremento de P2

Mensagempor renan-papaco » 06 Nov 2018 09:40

bom
a questão aqui nem é como configurei como entrada.

o código permite que P0 seja lido, nesse caso bit a bit, pois usei esse truque num outro codigo que funcionou, e passou a rodar decentemente com um truque que aprendi aqui mesmo no fórum, sobre salvar e resgatar dados na stack pointer.

minha duvida está em como fazer o programa incrementar o registrador P2, isso pq to tentando projetar algo como um controle digital de volume e tonalidade para um amplificador de som, usando uns CI's 8031 peguei de sucata (eu gosto de reaproveitar componentes pra qualquer coisa)
e eu não sei como implementar essa rotina, pois não sou tão expert assim no ASM como a maioria aqui do forum é.
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 ze » 07 Nov 2018 14:18

oi
Não uso asm51 e asm51 há décadas mas percebo algo esquisito no seu fonte

asm code
loop:
jb P0.0,inicio ;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
mov A,#00h
mov P2,#01h
inc P2
sjmp leitura

Por acaso não devia retornar ao loop:? ok.. talvez não. Parece que vc está com um resistor pra gnd pulldown e botão pro vcc. Nada contra mas verifique os valores do R. Se muito alto, o pino pode ficar indeciso. Penso que é mais interessante um R pullup e botão pro gnd. Neste caso, um capacitor em paralelo pra evitar repique calha bem. E sim, melhor setar o P0=0xff pra garantir o 1. Este mc não tem controle de direção.
Outra coisa: vc faz P2=0x01 e incrementa. Ou seja: nunca vai sair do 2. E tem mais: espere soltar o botão algo como:
jnb P0.0,$
jb P0.0,$
+- como voltar ao loop
A saidera: momento cogitar estudar c: bem mais simples.
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Re: problemas com incremento de P2

Mensagempor renan-papaco » 11 Nov 2018 08:10

linguagem C é simples pra quem gosta...
eu comecei a programar 8051 em C e quase sempre meu codigo dava m****...
eu prefiro o asm pq nele tenho controle total sobre o uC.

e pelo q vc me falou, vc acha que é problema no hardware, mas não é essa a questão.

até pq já rodei outros programas nele q funcionaram perfeitamente, montei essas placas faz 3 anos.

mas sobre modificar as instruções... nesse codigo ja tem uma rotina que verifica se o botão foi solto.

como agora to atarefado pra caramba, vou voltar pro trabalho, depois dou uma verificada no codigo.

mas essa sua dica de voltar ao loop me pareceu interessante.
vou usar ela e ver noq vai dar.
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 » 11 Nov 2018 20:21

Assim que resolver as questões apontadas pelos colegas, provavelmente encontrará outro problema: ruído da tecla, para resolver pesquise por rotina de debouncing!
" 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 » 11 Nov 2018 20:42

brasilma escreveu:Assim que resolver as questões apontadas pelos colegas, provavelmente encontrará outro problema: ruído da tecla, para resolver pesquise por rotina de debouncing!

ruido de tecla tbm não é problema... como já falei uma vez aqui... esse mesmo hardware já rodou outro programa que também lê P2...
e ele foi ajustado justamente com uma resposta que foi dada aqui.
caso dê ruido de tecla, eu sei como resolver... bastando por capacitores eletroliticos de 100uF em paralelo com as teclas.
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 KrafT » 11 Nov 2018 21:14

renan-papaco escreveu:... bastando por capacitores eletroliticos de 100uF em paralelo com as teclas.


Isso não é a minha definição para o termo "eu sei resolver". :o
"..."Come to the edge," he said. And so they came. And he pushed them. And they flew."― Guillaume Apollinaire
Avatar do usuário
KrafT
Dword
 
Mensagens: 2228
Registrado em: 11 Out 2006 14:15
Localização: Blumenau -SC

Re: problemas com incremento de P2

Mensagempor longo.251272 » 12 Nov 2018 09:45

tcpipchip escreveu:Pelo que lembro FF em P0 coloca como entrada


Concordo com você
longo.251272
Byte
 
Mensagens: 318
Registrado em: 08 Nov 2011 11:58
Localização: São Paulo - SP

Re: problemas com incremento de P2

Mensagempor ze » 12 Nov 2018 16:19

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?
renan-papaco escreveu: por capacitores eletroliticos de 100uF em paralelo com as teclas

Pelo menos vc pensa grande. Quando mencionei
ze escreveu:um capacitor em paralelo pra evitar repique calha bem
pensei nuns 1...10nF. (mas algo me diz que vc errou a unidade)
Dica: rode passo a passo. Use o proteus p.ex. Mas continuo achando que isso
mov P2,#01h
inc P2
nunca vai deixar o P2 passar de 2. Mas sei lá. Asm51 não tem sido a minha praia há séculos.
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Re: problemas com incremento de P2

Mensagempor andre_luis » 12 Nov 2018 16:39

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.
"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

Próximo

Voltar para 8051

Quem está online

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

x