Você está na página 1de 3

2024 – Microcontroladores

EXPERIÊNCIA 4: SET DE INSTRUÇÕES DO 8051 – DESVIOS DE PROGRAMA


Realizam desvios no fluxo de programa. Basicamente podem ser:
A) DESVIOS NÃO CONDICIONAIS
Não dependem do resultado de nenhum teste para desviar o fluxo do programa.
Exemplo: desviar a execução do programa, incondicionalmente, para a posição da memória
de programa 0100H.
.
.
MOV A, #005H ; carrega acumulador com valor 05H
LJMP A, TESTE ; salto incondicional para TESTE
INC A ; incrementa acumulador
.
.
ORG 0100H
TESTE:
MOV A, #002H ; carrega acumulador com valor 02H
.
.

B) DESVIOS CONDICIONAIS
Dependem do resultado de algum teste para desviar o fluxo do programa.
Exemplo: desviar a execução do programa para a posição da memória de programa 0100H
caso o valor acumulador seja 0.
.
.
MOV A, #005H ; carrega acumulador com valor 05H
JZ TESTE ; salto para TESTE se acumulador for zero
INC A ; incrementa acumulador
.
.
ORG 0100H
TESTE:
MOV A, #002H ; carrega acumulador com valor 02H
.
.

C) DESVIO PARA SUBROTINA


Determinados trechos de um programa são executados repetidas vezes em um programa.
Chama-se sub-rotina ao conjunto destas instruções se estas forem agrupadas de forma adequada de
modo que possam ser executadas sempre que solicitadas, de preferência, sem interferir em variáveis
já utilizadas pelo programa principal.
A chamada de uma sub-rotina se processa da seguinte forma:

Apostila Microcontrolador prática 8051 Prof. Wagner de Aguiar e Prof. Wagner Jorge R. A. Batista
1- O endereço de retorno da sub-rotina é salvo no stack através do registrador SP (stack
pointer).
2- O registrador PC (program counter) recebe o endereço da sub-rotina.
3- Se uma determinada variável utilizada pelo programa principal (acumulador, registrador
R0, etc) também for utilizada pela sub-rotina é interessante que seja salva através da instrução PUSH
antes da execução da sub-rotina.
4- A sub-rotina é executada.
5- Realiza-se o POP de alguma variável salva, se for o caso.
6- Executa-se a instrução RET, que retira do stack o endereço de retorno e o carrega no
registrador PC.
Exemplo: desviar a execução do programa para a sub-rotina ZERA_R0.

ORG 0000H
MOV SP, #080H ; inicialização stack pointer
.
.
CALL ZERA_R0 ; chamada sub-rotina MUL16
.
.
ZERA_R0:
MOV R0, #000H ; zera R0
RET ; retorna da sub-rotina
.
.
EXERCÍCIOS
1- Crie as seguintes sub-rotinas, completando os seus respectivos cabeçalhos:
a)
;************************************************************************
; Nome: sub-rotina ADD16
; Função: executa a soma de dois números de 16 bits
;
; entrada: R1 R0 -> primeiro número, sendo R1(msb) e R0(lsb)
; R3 R2 -> segundo número, sendo R3(msb) e R2(lsb)
;
; saída: R6 R5 R4 = R1 R0 + R3 R2, sendo R6(msb) e R4(lsb)
;
; variáveis alteradas: complete aqui o cabeçalho
;************************************************************************

b)
;************************************************************************
; Nome: sub-rotina MUL16
; Função: executa a multiplicação de dois números de 16 bits
;
; entrada: R1 R0 -> primeiro número, sendo R1(msb) e R0(lsb)
; R3 R2 -> segundo número, sendo R3(msb) e R2(lsb)
;
; saída: R7 R6 R5 R4 = R1 R0 x R3 R2, sendo R7(msb) e R4(lsb)
;

Apostila Microcontrolador prática 8051 Prof. Wagner de Aguiar e Prof. Wagner Jorge R. A. Batista
; variáveis alteradas: complete aqui o cabeçalho
;************************************************************************

2 - Fazer um programa para ser executado no hardware do EdSim51 que execute a seguinte
logica. Indicação X led aceso.
SW2 SW4 Chave
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 LED
X X X X X X X X X Ligada
X X X X X X X Desligada

3- Fazer um programa que execute a seguinte lógica, onde A (chave aberta) e F (chave
fechada):

4 – DESAFIO AVALIAÇÃO - Desenvolver um programa para controle de semáforo e


apresente seu funcionamento no EDSIM. A indicação de sinal verde deve permanecer aceso por um
intervalo de 20 segundos e em seguida piscar o amarelo três vezes e após 2 segundos alterar de verde
para vermelho. O programa deve ser apresentado no EDSIM pela dupla para que seja aceito.

5 – DESAFIO DO DESAFIO – No exercício 4 quando o semáforo estiver em funcionamento


e apertar a chave SW1 o semáforo vai para vai para o amarelo e pisca com intervalo de 1 segundo.
Quando acionar a chave SW2, o semáforo vai retornar para sua condição normal de funcionamento.

Apostila Microcontrolador prática 8051 Prof. Wagner de Aguiar e Prof. Wagner Jorge R. A. Batista

Você também pode gostar