Professional Documents
Culture Documents
Assembly - 00
Marchando para
o aprendizado
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
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
; 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
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:
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