Microcontrolador 8051

Propaganda
Microcontrolador 8051
Assembly
8051
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
●
●
●
Num sistema microprocessado, geralmente, não existe um
sistema operacional;
O programa desenvolvido pelo programador deve cuidar
tanto da lógica do programa, bem como da configuração
e acesso ao hardware e do gerenciamento de memória;
Geralmente existe limitação de espaço de memória;
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
●
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Linguagem Assembly
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
●
●
●
●
A Linguagem Assembly
É a codificação dos códigos de máquina para uma
linguagem mais próxima da linguagem entendida pelo ser
humano;
As instruções do processador são codificadas em
mnemônicos para facilitar a identificação de sua
funcionalidade;
A tradução da linguagem assembly para os códigos de
máquina do processador é feita através de um programa
chamado assembler (ou montador)
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
●
●
A Linguagem Assembly
É totalmente atrelada ao processador, ou seja, cada
processador possui a sua própria linguagem;
●
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Linguagem Assembly
do uC 8051
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
●
As instruções do 8051 podem ser classificadas em 5 tipos
diferentes:
–
Transferência de dados;
–
Aritméticas;
–
Lógicas;
–
Booleanas;
–
Desvio;
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Modos de Endereçamento
●
Define o modo como os dados são acessados;
●
O 8051 possui 5 modos de endereçamento:
–
Endereçamento direto;
–
Endereçamento indireto;
–
Endereçamento via registrador;
–
Endereçamento por constante imediata;
–
Endereçamento indexado;
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Modos de Endereçamento
●
Endereçamento imediato: o dado é especificado na
própria instrução:
mov A, #31
–
; carrega o valor 31 no acumulador
O operando é identificado pelo símbolo #;
Acumulador
31
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Modos de Endereçamento
●
Endereçamento direto: o endereço do dado é
especificado diretamente na instrução:
mov A, 31
Memória
29
98
30
73
31
1
32
128
UTFPR / DAELN
; carrega o conteúdo do endereço 31 no acumulador
Acumulador
1
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Modos de Endereçamento
●
Endereçamento indireto: o dado é acessado através do
endereço contido nos registradores R0 ou R1.
–
Quando o conteúdo do registrador é um endereço, este
registrador é precedido pelo símbolo @;
–
Neste caso, os registradores R0 e R1 atuam como
ponteiros para o dado
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Modos de Endereçamento
mov A, @R0
; carrega o conteúdo da posição
; de memória indicada no
; registrador R1 no acumulador
Memória
R0
31
UTFPR / DAELN
29
98
30
73
31
1
32
128
Microcontroladores 1
Acumulador
1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Modos de Endereçamento
●
Endereçamento indexado: o dado é acessado através do
endereço contido no registrador DPTR.
movc A, @A+DPTR
movx A, @DPTR
–
; carrega o conteúdo da
; posição de memória de
; programa indicada no
; registrador DPTR no acumulador
; carrega o conteúdo da posição
; de memória RAM externa indicada
;no registrador DPTR no acumulador
Neste caso, o registrador DPTR atua como ponteiro para o
dado
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Modos de Endereçamento
movx A, @DPTR
; carrega o conteúdo da posição
; de memória RAM externa indicada
;no registrador DPTR no acumulador
Memória
DPTR
1A31
UTFPR / DAELN
1A29
98
1A30
73
1A31
1
1A32
128
Microcontroladores 1
Acumulador
1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Modos de Endereçamento
●
Endereçamento via Registrador: o dado é acessado
através dos registradores R0 a R7.
mov A, R5
; carrega o conteúdo do
;registrador R5 no acumulador
Banco de
Registradores
R7
98
R6
73
R5
1
Acumulador
1
...
R0
UTFPR / DAELN
128
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Funcionamento da PILHA
●
●
●
●
A pilha é uma estrutura de armazenamento de dados
em que cada novo dado é colocado sempre no topo
da pilha;
O registrador stack-pointer (SP) aponta para o topo da
pilha;
A cada novo dado colocado na pilha, o registrador SP
é incrementado, para apontar o topo da pilha;
A cada dado retirado da pilha, o registrador SP é
decrementado.
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Funcionamento da PILHA
●
●
As instruções PUSH e POP inserem e retiram
respectivamente os dados da pilha;
Nos microprocessadores, a pilha é usada
principalmente para guardar o estado do processador
na chamada de sub-rotinas e interrupções;
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Funcionamento da PILHA
●
Estado atual da pilha
R0
Memória
1Ah
A
2Fh
32h
31h
SP
30h
UTFPR / DAELN
33h
30h
Microcontroladores 1
Dado 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Funcionamento da PILHA
●
Executando uma instrução push ACC
–
Passo 1: o registrador SP é incrementado, apontando
para a próxima posição de memória:
R0
Memória
1Ah
A
2Fh
32h
31h
SP
31h
UTFPR / DAELN
33h
30h
Microcontroladores 1
Dado 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Funcionamento da PILHA
●
Executando uma instrução push ACC
–
Passo 2: o conteúdo do acumulador é copiado para a
posição apontada pelo registrador SP:
R0
Memória
1Ah
A
2Fh
SP
31h
UTFPR / DAELN
33h
32h
31h
2Fh
30h
Dado 1
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Funcionamento da PILHA
●
Executando uma instrução push R0
–
Passo 1: o registrador SP é incrementado, apontando
para a próxima posição de memória:
R0
Memória
1Ah
A
2Fh
SP
32h
UTFPR / DAELN
33h
32h
31h
2Fh
30h
Dado 1
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Funcionamento da PILHA
●
Executando uma instrução push R0
–
Passo 2: o conteúdo do registrador R0 é copiado para
a posição apontada pelo registrador SP:
R0
Memória
1Ah
A
2Fh
SP
32h
UTFPR / DAELN
33h
32h
1Ah
31h
2Fh
30h
Dado 1
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Funcionamento da PILHA
●
Novo estado da pilha:
R0
Memória
1Ah
A
2Fh
SP
32h
UTFPR / DAELN
33h
32h
1Ah
31h
2Fh
30h
Dado 1
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Funcionamento da PILHA
●
Executando uma instrução pop R0
–
Passo 1: o conteúdo da posição apontada pelo
registrador SP é copiado para o registrador R0:
R0
Memória
1Ah
A
2Fh
SP
32h
UTFPR / DAELN
33h
32h
1Ah
31h
2Fh
30h
Dado 1
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Funcionamento da PILHA
●
Executando uma instrução pop ACC
–
Passo 2: o conteúdo da posição de memória apontada
pelo registrador SP é copiado para o acumulador:
R0
Memória
1Ah
A
2Fh
SP
31h
UTFPR / DAELN
33h
32h
31h
2Fh
30h
Dado 1
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Estrutura Básica de um programa em Linguagem
Assembly (para o uC 8051)
●
Um programa em linguagem assembly possui os
seguintes elementos básicos:
–
Instruções: são os mnemônicos das instruções do
processador;
–
Operandos: são as informações referentes aos dados
processados pelas instruções;
–
Pseudo-instruções: são declarações inseridas no
código fonte para orientar o montador;
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Estrutura Básica de um programa em Linguagem
Assembly (para o uC 8051)
–
Definições: são declarações que atribuem um nome a
algumas constantes, tornando mais fácil a referềncia
no resto do programa;
–
Rótulos (labels): são nomes atribuídos à endereços
no programa;
–
Comentários: informações colocadas pelo
programador para documentar o programa. É qualquer
texto colocado após um sinal de ponto-e-vírgula;
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Estrutura Básica de um programa em Linguagem
Assembly (para o uC 8051)
●
●
A formatação de um programa em assembly é bastante
rígida;
Cada linha do programa contém uma informação para o
montador;
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Estrutura Básica de um programa em Linguagem
Assembly (para o uC 8051)
●
A estrutura da linha é a seguinte:
–
Os rótulos são colocados próximos a margem
esquerda da linha. Podem vir seguidos do sinal : (dois
pontos);
–
Seguindo o rótulo, está o mnemônico da instrução e os
operandos;
–
Após os operandos estão os comentários;
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Estrutura Básica de um programa em Linguagem
Assembly (para o uC 8051)
●
Exemplo:
inicio:
mov SP, #30h
mov A, #45
UTFPR / DAELN
; inicializa a pilha
; atribui o valor inicial
; ao acumulador
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Estrutura Básica de um programa em Linguagem
Assembly (para o uC 8051)
●
Estruturas básicas de um programa em assembly:
–
Subrotinas: uma porção de código executada várias
vezes no programa. São chamadas por instruções no
programa e causam um desvio da sequência normal de
execução do programa;
–
Interrupções: causam o desvio do fluxo normal de
execução do programa devido a um evento de
hardware. São como as subrotinas, mas não são
causadas por instruções do processador, mas sim por
eventos de hardware.
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Estrutura Básica de um programa em Linguagem
Assembly (para o uC 8051)
●
Estruturas básicas de um programa em assembly:
–
Decisões: são estruturas de programação que
permitem desviar o fluxo de execução de um programa
conforme o estado de determinadas condições. Estas
condições são verificadas pelos flags;
–
Repetições: são estruturas de programação que
permitem executar um pedaço de código várias vezes;
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Microcontrolador 8051
Estrutura Básica de um programa em Linguagem
Assembly (para o uC 8051)
●
Estruturas básicas de um programa em assembly:
–
Pseudo-instruções:
●
●
●
●
ORG: definem um endereço de memória, onde a
instrução da linha seguinte será alocada;
END: indica o fim de um programa;
EQU: Atribuem um valor a um rótulo. São usados
para definir constantes;
DB, DW: definem (reservam) espaços de memória
para alocar dados. São usados para definir variáveis;
UTFPR / DAELN
Microcontroladores 1
Prof. Gabriel Kovalhuk
Download