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

brasilma
- Dword
-
- Mensagens: 3262
- Registrado em: 11 Out 2006 15:39
- Localização: Planeta Terra
-
por 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
-

renan-papaco
- Byte
-
- Mensagens: 292
- Registrado em: 17 Jun 2012 15:56
por 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
-

renan-papaco
- Byte
-
- Mensagens: 292
- Registrado em: 17 Jun 2012 15:56
por 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
-

renan-papaco
- Byte
-
- Mensagens: 292
- Registrado em: 17 Jun 2012 15:56
por 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
-

renan-papaco
- Byte
-
- Mensagens: 292
- Registrado em: 17 Jun 2012 15:56
por andre_teprom » 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."
-

andre_teprom
- Dword
-
- Mensagens: 5267
- Registrado em: 11 Out 2006 18:27
- Localização: Brasil - RJ
-
por 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" 
-

brasilma
- Dword
-
- Mensagens: 3262
- Registrado em: 11 Out 2006 15:39
- Localização: Planeta Terra
-
por 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
-

renan-papaco
- Byte
-
- Mensagens: 292
- Registrado em: 17 Jun 2012 15:56
por 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" 
-

brasilma
- Dword
-
- Mensagens: 3262
- Registrado em: 11 Out 2006 15:39
- Localização: Planeta Terra
-
por 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.  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ç
-

ze
- Dword
-
- Mensagens: 1547
- Registrado em: 05 Jun 2007 14:32
por 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
-

renan-papaco
- Byte
-
- Mensagens: 292
- Registrado em: 17 Jun 2012 15:56
| |