View
23
Download
0
Category
Preview:
Citation preview
Microcontrolador 8051Microcontrolador 8051
AssemblyAssembly80518051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● 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;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
●
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
Linguagem AssemblyLinguagem Assembly
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● 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)
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● A Linguagem Assembly● É totalmente atrelada ao processador, ou seja, cada
processador possui a sua própria linguagem;
●
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
Linguagem AssemblyLinguagem Assembly
do uC 8051do uC 8051
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
● As instruções do 8051 podem ser classificadas em 5 tipos diferentes:
– Transferência de dados;
– Aritméticas;
– Lógicas;
– Booleanas;
– Desvio;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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 #;
31
Acumulador
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
Modos de Endereçamento● Endereçamento direto: o endereço do dado é
especificado diretamente na instrução:
mov A, 31 ; carrega o conteúdo do endereço 31 no acumulador
98
73
1
128
29
30
31
32
Memória
1
Acumulador
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
Modos de Endereçamento
mov A, @R0 ; carrega o conteúdo da posição; de memória indicada no; registrador R1 no acumulador
98
73
1
128
29
30
31
32
Memória
1
Acumulador
31
R0
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
Modos de Endereçamento● Endereçamento indexado: o dado é acessado através do
endereço contido no registrador DPTR.
movc A, @A+DPTR ; carrega o conteúdo da; posição de memória de; programa indicada no; registrador DPTR no acumulador
movx A, @DPTR ; 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
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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
98
73
1
128
1A29
1A30
1A31
1A32
Memória
1
Acumulador
1A31
DPTR
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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
98
73
1
128
R7
R6
R5
R0
Banco de Registradores
1
Acumulador
. . .
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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.
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
Funcionamento da PILHA● Estado atual da pilha
30h Dado 1
SP
30h
31h
32h
33h
Memória
2Fh
A
1Ah
R0
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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:
31h Dado 1
SP
30h
31h
32h
33h
Memória
2Fh
A
1Ah
R0
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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:
31h Dado 1
SP
30h
2Fh31h
32h
33h
Memória
2Fh
A
1Ah
R0
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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:
32h Dado 1
SP
30h
2Fh31h
32h
33h
Memória
2Fh
A
1Ah
R0
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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:
32h Dado 1
SP
30h
2Fh
1Ah
31h
32h
33h
Memória
2Fh
A
1Ah
R0
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
Funcionamento da PILHA● Novo estado da pilha:
32h Dado 1
SP
30h
2Fh
1Ah
31h
32h
33h
Memória
2Fh
A
1Ah
R0
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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:
32h Dado 1
SP
30h
2Fh
1Ah
31h
32h
33h
Memória
2Fh
A
1Ah
R0
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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:
31h Dado 1
SP
30h
2Fh31h
32h
33h
Memória
2Fh
A
1Ah
R0
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
Estrutura Básica de um programa em Linguagem Assembly (para o uC 8051)
● Exemplo:
inicio: mov SP, #30h ; inicializa a pilha
mov A, #45 ; atribui o valor inicial ; ao acumulador
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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.
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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;
Microcontrolador 8051Microcontrolador 8051
UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
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;
Recommended