Ir ao conteúdo
  • Cadastre-se

Delay em assembly


danimadruga

Posts recomendados

  • 5 semanas depois...

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.

Link para o comentário
Compartilhar em outros sites

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!