Ir ao conteúdo

Delay em assembly


danimadruga

Posts recomendados

Postado

Olá

Gostaria de saber como fazer um delay de 2,33s utilizando registradores e DJNZ. Uso a linguagem assembly no 8051.

O que me atrapalha são as subrotinas, tem alguma maneira, algum cálculo, para saber que valor carregar nos registradores?

obrigada (:

  • 5 semanas depois...
Postado

Teria algumas maneiras de se fazer um delay:

1 - Usar NOP:

tem que ser calculado quantos ciclos seriam necessários para contar até o valor de 2,33s.

Procura no datasheet do modelo do microcontrolador que você tá usando o tempo necessário pra executar um NOP, e coloca a quantidade necessária pra contar o tempo.

2 - Usar loop (como você mesma sugeriu):

delay100uS:
mov R7,#47
wait:
djnz R7,wait
ret

Obs: achei na internet e não testei se os valores estão corretos, é pra exemplificar o modo de fazer.

3 - Usar timer:

Não sei se é o seu caso mas é bem mais simples e funcional usar TIMER do que fazer um delay.

//--------------------------------------------------------------------

Para fazer o cálculo da contagem de tempo tem que saber qual o tempo de execução da instrução DJNZ, MOV e RET.

o calculo seria algo do tipo:

tempoTotal = (tempo do MOV) + x*(tempo do DJNZ) + (tempo do RET)

com x = ao valor do conteúdo do registrador a ser decrementado, no exemplo citado é R7 com valor 47.

Acho que o tempo de execução das instruções pode ser encontrado no datasheet do modelo do 8051 que você tá estudando.

//--------------------------------------------------------------------

Espero ter ajudado.

Arquivado

Este tópico foi arquivado e está fechado para 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!