Vous êtes sur la page 1sur 8

UNIVERSIDADE FEDERAL RURAL DO SEMI-RIDO

DEPARTAMENTO DE CINCIAS AMBIENTAIS E TECNOLGICAS


CURSO DE ENGENHARIA DE ENERGIA
DISCIPLINA: MICROPROCESSADORES E
MICROCONTROLADORES

DANIEL ANTONIO DE OLIVEIRA FILHO

RELATORIO LISTA DE EXERCCIOS

MOSSOR-RN
2017
EXERCCIO 1:
Faa um programa em assembly, utilizando a placa teste da exsto (Xm852), uma rotina
que apresente os nmeros na sequencia binria crescente nos 4 leds de sada (0-15 em
binrio).

Linha 1

Salva a instruo na memoria a seguir no inicio da memoria;

Linha 2

Move-se o valor 00000000B para a porta P1, atravs da funo MOV, garantindo que a porta
P1 estar zerada no inicio do programa, ou seja, os led's da porta P1 estaro apagados;

Linha 3

A funo LJMP promove o salto na instruo do programa para o rtulo indicado, no caso
salta-se para o rtulo CONTA.
Linha 5

Na linha 5, que possui o rtulo CONTA, ocorre a execuo da funo MOV, promovendo a
carregamento do valor indicado pelo caractere hastag acompanhado do nmero, #15, ao
acumulador, A.

Linha 6

Executa-se a funo LCALL acompanhada do rtulo DELAY, que promove o salto da


instrues para a linha que possui esse rtulo, no caso a linha 15, executando uma sub-rotina de
atraso.

Linha 8

Na linha 8, que possui o rtulo START, ocorre a execuo da funo INC, promovendo o
incremento na porta P1.

Linha 10

Executa-se a funo LCALL e direciona-se o programa para o rtulo indicado, no caso


DELAY na linha 15, sendo esse uma sub-rotina. Aps a execuo dessa sub-rotina o programa salta
para a prxima linha, no caso a linha 11

Linha 11

Executa-se a funo DEC que decrementa o acumulador A e salta-se para a prxima linha

Linha 12

Executa-se a funo JZ que compara o valor do acumulador A a zero, caso positivo e salta-se
para o rtulo indicado, no caso RESET, caso contrrio segue com a execuo do programa na
prxima linha

Linha 13

A funo LJMP promove o salto na instruo do programa para o rtulo indicado, no caso
salta-se para o rtulo START na linha 8;

Linha 15

Na linha 15 inicia-se a sub-rotina DELAY. A funo MOV copia o valor 40 para o


registrador R2.

Linha 16

A linha 16, que possui o rtulo HERE3, executa-se funo MOV que copia o valor 50 para o
registrador R1.

Linha 17

A linha 17, que possui o rtulo HERE2, executa-se funo MOV que copia o valor 250 para
o registrador R0

Linha 18

A funo DJNZ decrementa o valor indicado dentro do registrador e salta para o local
indicado. No caso da linha 18, decrementa-se o valor 250 do registrador R0 e salta-se para a mesma
linha utilizando o rtulo HERE1, tambm na linha 18, at zerar o registrador.

Linha 19

Na linha 19 a funo DJNZ decrementa o valor do registrador R1 e salta para o local


indicado no rtulo, no caso HERE2 na linha 17, o que promove o recarregamento do registrador R0
e repetio do conjunto de instrues da linha 18, retornando para a linha 19 at o registrador R1
zerar.

Linha 20

Na linha 20 a funo DJNZ decrementa o valor do registrador R2 e salta para o local


indicado no rtulo, no caso HERE3 na linha 16, o que promove o recarregamento dos registradores
R0 e R1, e repetio do conjunto de instrues das linhas 18 e 19, retornando para a linha 20 at o
registrador R2 zerar.

Linha 21

A funo RET indica o fim da sub-rotina, da funo LCALL nas linhas 6 e 10, e executa-se
as funes seguintes nas linhas 8 e 11.

Linha 23

A linha 23, que possui o rtulo RESET, executa-se funo MOV que copia o valor
000000000B para a porta P1, tendo como funo resetar a contagem quando o programa chega ao
valor 00001111B na porta P1.

Linha 24

A funo SJMP promove o salto na instruo do programa para o rtulo indicado, no caso
salta-se para o rtulo CONTA na linha 5

Linha 26

A funo END promove o fim do programa principal, no caso do programa em questo h


um loooping infinito entre as linhas 5 e 24 no permitindo que a funo seja executada

EXERCCIO 2:

Faa um programa em assembly, que pisque os leds em um intervalo de 1 segundo. Em


outras palavras, a cada 1 segundo os leds devem piscar. O piscar dos leds deve ser sincronizado
com os segundos de um cronmetro.

Linha 1

Salva a instruo na memoria a seguir no inicio da memoria;

Linha 2

Move-se o valor 00000000B para a porta P1, atravs da funo MOV, garantindo que a porta
P1 estar zerada no inicio do programa, ou seja, os led's da porta P1 estaro apagados;

Linha 3

A funo LJMP promove o salto na instruo do programa para o rtulo indicado, no caso
salta-se para o rtulo INICIO;

Linha 7

Move-se o valor 00000001B para a porta P1, atravs da funo MOV, garantindo que o bit
menos significativo a porta P1, P1.0, ser setado(led acender);

Linha 8

Executa-se a funo LCALL e direciona-se o programa para o rtulo indicado, no caso


ATRASO2 na linha 23, sendo esse uma sub-rotina;

Linha 9

Aps sair do sub-rotina ATRASO2 o programa volta para o rotina principal, na linha 9. Na
linha 9 executa-se a funo MOV levando a porta P1 novamente pra zero, assim seguindo para a
prxima linha.

Linha 10

Executa-se a funo LCALL e direciona-se o programa para o rtulo indicado, no caso


ATRASO na linha 15, sendo esse uma sub-rotina. Aps a execuo dessa sub-rotina o programa
salta para a prxima linha, no caso a linha 11

Linha 11

Na linha 11 ocorre a execuo da funo LJMP promovendo o salto na instruo do


programa para o rtulo indicado, no caso salta-se para o rtulo inicio, reiniciando o programa;

Linha 15

Na linha 15 inicia-se a sub-rotina ATRASO. A funo MOV copia o valor 10 para o


registrador R0.

Linha 16

A funo MOV copia o valor 200 para o registrador R1.

Linha 17

A funo MOV copia o valor 250 para o registrador R2.
Linha 18

A funo DJNZ decrementa o valor indicado dentro do registrador e salta para o local
indicado. No caso da linha 18, decrementa-se o valor 250 do registrador R2 e salta-se para a mesma
linha utilizando o caractere cifro, $, at zerar o registrador.

Linha 19

Na linha 19 a funo DJNZ decrementa o valor do registrador R1 e salta para o local


indicado no rtulo, no caso AUX2 na linha 17, o que promove o recarregamento do registrador R2 e
repetio do conjunto de instrues da linha 18, retornando para a linha 19 at o registrador R1
zerar.

Linha 20

Na linha 20 a funo DJNZ decrementa o valor do registrador R0 e salta para o local


indicado no rtulo, no caso AUX1 na linha 16, o que promove o recarregamento dos registradores
R1 e R2, e repetio do conjunto de instrues das linhas 18 e 19, retornando para a linha 20 at o
registrador R0 zerar.

Linha 21

A funo RET indica o fim da sub-rotina, da funo LCALL, linha 10, e executa-se a funo
seguinte na linha 11.

Linha 23

Na linha 23 inicia-se a sub-rotina ATRASO2. A funo MOV copia o valor 250 para o
registrador R3.

Linha 24

A funo MOV copia o valor 100 para o registrador R4.

Linha 25

A funo DJNZ decrementa o valor 100 do registrador R4 e salta para a mesma linha
utilizando o caractere cifro, $, at zerar o registrador.

Linha 26

Na linha 26 a funo DJNZ decrementa o valor do registrador R3 e salta para o local


indicado no rtulo, no caso AUX3 na linha 24, o que promove o recarregamento dos registrador R4
e repetio do conjunto de instrues da linha 25, retornando para a linha 26 at o registrador R3
zerar.
Linha 28

A funo RET indica o fim da sub-rotina, da funo LCALL, linha 8, e executa-se a funo
seguinte na linha 9.

Linha 31

A funo END promove o fim do programa principal, no caso do programa em questo a um


loooping infinito entre as linhas 7 e 26 no permitindo que a funo seja executada

Para calcular-se o tempo de um segundo exigido no programa utilizou-se uma aproximao


de 12 Mhz para a oscilao do cristal. Assim, temos que o tempo de execuo do looping :
.
T L s = 25020200Nc DJNZ Ti = 2502001021 = 1s