Engenharia Múltipla Escolha

Quais das seguintes instruções é usada para criar um atraso no programa, permitindo que o LED permaneça aceso por um período de tempo antes de apagar?

Quais das seguintes instruções é usada para criar um atraso no programa, permitindo que o LED permaneça aceso por um período de tempo antes de apagar?

  1. NOP
  2. SLEEP
  3. GOTO $+1
  4. CALL Delay
  5. RETURN

Resolução completa

Explicação passo a passo

D
Alternativa D

Alternativa D - CALL Delay

Introdução ao Problema

O enunciado descreve um cenário clássico de programação embarcada: controlar o tempo de acionamento de um componente (LED) usando um microcontrolador PIC16F877A em linguagem Assembly. Para que o LED permaneça aceso por um período visível, o processador precisa ser "distraindo" ou ocupado executando tarefas que consomem tempo de ciclo sem alterar o estado do sistema.

Análise Didática

Em linguagens de baixo nível como o Assembly, a estruturação do código é fundamental. Para tarefas repetitivas e específicas, como gerar um tempo de espera (delay), utiliza-se o conceito de Sub-rotina (ou Subprograma).

A instrução correta para invocar essa lógica é a CALL, conforme detalhado abaixo:

  • CALL Delay: Esta instrução transfere o controle do programa principal para um bloco de código específico rotulado como Delay. O microcontrolador salva o endereço de retorno na pilha (Stack) para poder voltar à sequência original após o término do atraso. É a maneira padrão de modularizar códigos onde se deseja pausar a execução por X ciclos.

Por que as outras alternativas estão incorretas?

InstruçãoFunção PrincipalPor que não é a resposta
NOPNo Operation (Não faz nada)Executa apenas 1 ciclo de máquina. Sozinha, não cria um atraso perceptível para um LED (que precisa de milissegundos). Requereria um loop complexo.
SLEEPModo de Baixo ConsumoDesliga o clock do microcontrolador. O programa para completamente até receber uma interrupção externa, inviabilizando o piscar automático contínuo.
GOTO $+1Pulo CondicionalEquivale a um NOP, pois pula para a próxima instrução imediatamente. Não gera atraso significativo.
RETURNRetorno de Sub-rotinaEncerra uma rotina iniciada por CALL. Ela volta ao ponto de origem, mas não inicia o processo de espera.

Conclusão

Para implementar um temporizador funcional em Assembly de forma organizada, cria-se uma sub-rotina contendo laços de repetição (loops) e insere-se a chamada dessa rotina no fluxo principal. Portanto, a instrução que efetivamente ativa esse mecanismo de espera é a CALL Delay.

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Engenharia

Ver mais Engenharia resolvidas

Tem outra questão de Engenharia?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.