Anda di halaman 1dari 11

Exerccios

Assembly - 00
Marchando para
o aprendizado

Disciplina : EE 213 Tcnicas Digitais


e de Microprocessadores II
Prof. Corradi, Romeu Junior

7/8/16

Exemplo Caso 01
Escrever um programa em Assembly
para
acionar uma carga atravs de um interruptor
simples. Observar o sistema abaixo:

Volta:
mov
c,p1.7
mov
p1.6,c
jmp volta
end
7/8/16

Exemplo Caso 02
Escrever um programa em Assembly para
acionar uma carga atravs de dois botes
(chave no retentiva), um dos botes aciona
(liga) e o outro boto desliga.
Observe o
clr p1.5
esquema abaixo:
verON:
jb p1.1,verON
setb p1.5
verOFF:
jb p1.0,verOFF
clr p1.5
jmp verON
end
7/8/16

Exemplo Caso 03
Escrever um programa em Assembly para
acionar uma carga atravs de um nico boto
(chave no retentiva). Cada toque no boto o
estado da carga deve alternar-se, ou seja,
liga/desliga a cada toque. Observe o esquema
abaixo:

7/8/16

Soluo com comentrios


;******************************************
;
Programa principal
;******************************************
;
chave bit
P1.0
Saida bit P1.5
clr Saida
;inicializa a sada - desligada
desliga:
clr Saida
;desliga Sada caso pare em acionado
jnb chave,desliga
;verifica se chave j voltou a zero
jb chave,$
;verifica se chave foi acionada
liga:
jnb chave,liga
;verifica se chave foi acionada para
ligar
setb saida
;chave acionada ligar sada
jb chave,$
;verifica se chave foi acionada para
desligar
jmp desliga
;foi solicitado um desliga
end
;fim de programao
7/8/16

Exemplo Caso 04
Baseado no fluxograma ao lado
escrever um Programa estruturado
em Assembly. Apresente tambm
um HW para o sistema proposto.

7/8/16

Soluo com comentrios


CLR P2.0
MOV A,#00H

; apaga o led L1
; carrega o acumulador com o valor zero

TESTE_BOTAO:
JB P2.1, TESTE_BOTAO
; testa o bit P2.1, se no for nvel lgico
; zero salta para label TESTE_BOTAO, se
; for vai para o prximo
passo.
INC A
; incrementa A
CJNE A, #5, TESTE_BOTAO
; compara e salta se A no for igual ao
; valor 5, se for segue para o
; prximo passo.
SETB P2.0
; acende o led L1
FIM:
SJMP FIM
; salta para o label Fim, ou seja, o
; programa
; fica parado nesse
ponto
end

Esta soluo
No!funciona!?

7/8/16

Por
qu??????

Exemplo Caso 05

Dado o fluxograma abaixo; escreva um


programa em Assembly estruturado.

INICIO:
SUBB A,R0 ;o acumulador subtrado de R0, dependendo do
;resultado determinar qual instruo de Salto que
;ser
executado.
JZ IGUAL
;se o contedo do acumulador for zero significa que A
; igual ao contedo R0 ento salta para o label
;IGUAL, se no segue para prxima instruo.
JC MAIOR
;se a flag de carry for nvel lgico 1, significa que
;o contedo de R0 maior que o contedo do acumulador
;assim saltando para label MAIOR, se no segue para
;prxima
instruo.
MENOR:
MOV R1,#2 ;sendo o contedo de R0 menor que contedo do
;acumulador ser carregado o valor 2 no registrador R1
;significando a condio de menor.
SJMP FIM
;salta para o fim do programa.
MAIOR:
MOV R1,#1 ;sendo o contedo de R0 maior que o contedo do
;acumulador ser carregado o valor 1 no registrador R1
;significando a condio de maior.
SJMP FIM
;salta para o fim do programa.
IGUAL:
MOV R1,#0 ;sendo o contedo de R0 igual ao contedo do
;acumulador ser carregado o valor 0 no registrador R1
;significando a condio de igual.
FIM:
SJMP FIM
;salta para o fim do programa, ou seja, o programa
;fica parado nesse ponto.
End

7/8/16

Exemplo Caso 06
Agora vamos modificar um pouco o exemplo Caso -04. O teste feito no
registrador R0 deve ser sinalizado com leds nas portas de sada do
8051. Observe o esquema a seguir:

Apresente um novo fluxograma!


7/8/16

Uma soluo possvel


INICIO:
MOV P2,#00H ;zera a porta P2 ou seja apaga todos os LEDs
MOV A,#10
;carrega o valor 10 no acumulador
MOV R0,#05 ;carrega o valor 5 em R0
SUBB A,R0
;o acumulador subtrado de R0, dependendo do resultado
determinar
;qual instruo de Salto ser executada
JZ IGUAL
;se o contedo do acumulador for zero, significa que A igual ao
;contedo de R0 ento salta para o label IGUAL, se no segue para
;prxima instruo
JC MAIOR
;se a flag de carry for nvel lgico 1, significa que contedo de R0
maior
;que o contedo do acumulador e assim saltando para label MAIOR, se
;no segue para prxima instruo
MENOR:
SETB P2.1
;sendo o contedo de R0 menor que o contedo do acumulador, ser
;setado a porta P2.1 ligando o led menor
SJMP FIM
;salta para o fim do programa
MAIOR:
SETB P2.2
;sendo o contedo de R0 menor que o contedo do acumulador, ser
;setado a porta P2.2 ligando o led maior
SJMP FIM
;salta para o fim do programa
IGUAL:
SETB P2.0
;sendo o contedo de R0 igual ao contedo do acumulador, ser setado
a
;porta P2.1 ligando o led igual
FIM:
SJMPFIM
;salta para o fim do programa ou seja o programa fica parado nesse
ponto
END
7/8/16

Atividades:
Estudar - em casa utilizando as Apostilas do site
informado abaixo;
Resoluo de exerccios Exerccios resolvidos na apostila;
Resolver exerccio Lista no site:
www.corradi.junior.nom.br
Bom Trabalho!

7/8/16