




























































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Apostila básica sobre o microcontrolador 8051
Tipologia: Notas de estudo
1 / 118
Esta página não é visível na pré-visualização
Não perca as partes importantes!





























































































3.1 Organização de Memória................................................................ 4 3.2 Memória de Programa..................................................................... 6 3.3 Memória de Dados.......................................................................... 8 3.4 Conjunto de Instruções da Família 8051....................................... 10 3.5 Registrador da palavra de controle (Program Status Word)......... 10 3.6 Modos de Endereçamento............................................................ 11 3.7 Instruções Aritméticas................................................................... 12 3.8 Instruções Lógicas........................................................................ 14 3.9 Transferência de Dados Interna e Externa................................... 15 3.10 Instruções Booleanas.................................................................. 17 3.11 Instruções de Salto..................................................................... 18 3.12 Oscilador Interno......................................................................... 20
4.20 Circuitos de Controle.................................................................... 47 4.21 Reset............................................................................................ 47 4.22 Clock............................................................................................ 48 4.23 Operação passo a passo............................................................. 49 4.24 Descrição da pinagem................................................................. 50 5 – PROGRAMAÇÃO E SIMULAÇÃO............................................................ 52
5.1 “Compilação” E “Linkagem”............................................................ 52
5.2 Diretivas (Ou Pseudo-Instruções).................................................. 53 5.3 Uso Do Compilador E Do Linker (Passo A Passo)........................ 54 5.4 Simulador dos Microcontroladores da família 8051....................... 55 5.5 Operação básica do simulador...................................................... 56 6 – TABELA DE INSTRUÇÕES COMPLETA................................................. 58 7 – ESQUEMA DA CPU MÍNIMA PARA TESTE E CARREGAMENTO DE PROGRAMA.............................................................................................................. 70
8 – PROGRAMA TESTE DO SISTEMA MÍNIMO........................................... 71 9 – REFERÊNCIAS BIBLIOGRÁFICAS......................................................... 72
APÊNDICE A............................................................................................................. 73
APÊNDICE B............................................................................................................. 80
ANEXO 1................................................................................................................... 84
1 – Introdução
Podemos considerar os microcontroladores, como sendo uma CPU dedicada e incorporada em um só chip, ou seja, todos os periféricos que nos microprocessadores se encontravam em chips independentes, assim como memórias, temporizadores, portas de comunicação serial, dispositivos de entrada/ saída, estão presentes em um único componente. Isso torna o projeto mais compacto, mais dinâmico e com o custo final reduzido, devido aos dispositivos integrados em um só chip. O chip a ser apresentado nessa apostila será o microcontrolador da família 8051, o qual será estudado com mais detalhes nos capítulos a seguir.
2 – Arquitetura básica de um microcontrolador genérico
Um microcontrolador genérico é composto pelos seguintes blocos:
3 – A Família 8051
Quando temos vários microcontroladores utilizando uma mesma célula, chamamos esse conjunto de componentes de família. Desta forma temos várias famílias como, por exemplo, a família do 8048, do 8051, do 8096, entre outras. Vamos tratar aqui da família do 8051, que será utilizado em nossas aplicações. A tabela abaixo descreve os principais componentes dessa família:
No me do Chi p
Versã o sem ROM
ersão E PROM
By tes de RO M
By tes de RA M
Tim ers 16 Bits
Tipo de Circ uito 805 1
O elemento básico desta família é o chip 8051, cujo diagrama interno serviu como ilustração quando falamos sobre um microcontrolador genérico. Os outros componentes desta família estão descritos nos manuais dos fabricantes. Atualmente, a tendência mundial no uso de componentes de baixo consumo, torna sensível o desenvolvimento de projetos baseados na tecnologia CMOS, facilitando assim a interligação de seus blocos. Todos os componentes que apresentarem um “C” em seu código (80C31, 87C452, etc) pertencem a esta família, a qual representa o que existe de mais avançado em microcontroladores de 8 bits, permitindo a continuidade de sua linha de produção por um longo período. As características desta família são:
3.1 – Organização de Memória
O 8051 possui intervalos de endereços separados para a memória de programa e para a memória de dados. Esta separação lógica permite que os dados acessados pelos endereços de 8 bits sejam armazenados e manipulados mais rapidamente. É possível também endereçar 16 bits, utilizando para isso, o registrador DPTR, que será estudado posteriormente. A figura abaixo ilustra a estrutura de memória utilizada num microcontrolador 8051:
Nota: a RAM externa não é endereçada diretamente pela CPU. O endereço de acesso deve estar em um registrador usado pela CPU como índice.
A memória de programa é do tipo ROM e não podemos escrever dados nela.
Podemos ter até 64Kbytes de memória, e normalmente encontramos pelo menos 4K de memória interna no chip em forma de ROM, EPROM ou OTP (One Time Program). Os tipos OTP representam uma opção economicamente atraente, pois são mais baratos comparados aos do modelo EPROM, e podem ser programados pelo usuário. Nas versões ROMLESS, esta memória encontra-se externa ao microcontrolador. O pulso de leitura para a memória externa é o sinal PSEN (Program Store Enable). A memória de dados ocupa um espaço de endereçamento separado da memória de programa. Até 64Kbytes de memória externa podem ser endereçados, e a CPU gera sinais de read e write, necessários durante o acesso à memória externa.
3.2 Memória de Programa
A figura abaixo mostra o mapa da parte inferior da memória de programa. Após o reset, a CPU começa a executar as instruções a partir do endereço 0000H.
Como pode ser visto na figura, cada interrupção é alocada num endereço fixo da memória de programa. A interrupção direciona o contador de programa da CPU para o seu respectivo endereço, onde se encontra a rotina de interrupção, conforme controle proporcionado pelo vetor de interrupções. Os primeiros 4Kbytes de memória podem estar localizados no chip, ou num chip (ROM ou EPROM) externo. O controle de acesso interno/externo é feito pelo sinal EA (External Access). O sinal de “strobe” para acesso à memória externa é o sinal PSEN , ativo apenas quando da ocorrência de acessos externos (EA ligado a terra), não sendo, portanto utilizado quando se utiliza apenas a área de memória interna.
A CPU, neste caso está executando um programa a partir da ROM interna. O port 0 serve como um barramento multiplexado de dados/endereço para a RAM, e 3 linhas do port 2 são utilizadas para as páginas da RAM. Os sinais de RD e WR são gerados pela CPU para comandar as operações. Podemos endereçar até 64Kbytes de memória RAM, em endereços de 1 ou 2 bytes. Os endereços de 1 byte são geralmente utilizados em conjunto com 1 ou mais linhas de I/O, para definir a página que está sendo utilizada na RAM. Endereços de 2 bytes, quando utilizados demandam que o port 2 gere o byte alto de endereços. A memória de dados interna está mapeada como indica a figura a seguir. O espaço de memória está dividido em 3 blocos, normalmente denominados, Lower 128, Upper 128 e SFR (Special Function Register). A memória de dados interna tem sempre 1 byte de endereçamento apenas, o que significa que temos um máximo de 256 bytes de memória interna.
Entretanto, os modos de endereçamento permitem o uso de até 384 bytes utilizando um truque simples. Através de endereçamento direto, acessamos um espaço de memória e através de endereçamento indireto, acessamos um espaço de memória diferente. Desta forma, os registradores de função especial (SFR) e os últimos 128 bytes (Upper Space) são acessados nos mesmos endereços (de 80H até FFH) apesar de serem fisicamente separados. Nas células básicas 8051, a área de memória alta não existe no chip, desta forma, consideramos apenas a área de memória baixa (Lower Space) para as nossas experiências (melhores referencias a estas áreas altas podem ser encontradas nos manuais dos fabricantes). Os primeiros 128 bytes de memória interna estão mapeados como indica a figura abaixo:
Os primeiros 32 bytes estão agrupados em 4 bancos de 8 registradores, chamados R0 até R7. Dois bits no registrador da palavra de controle (PSW) selecionam qual o banco de registradores está em uso. Este recurso permite um uso mais eficiente do espaço de código. Os próximos 16 bytes acima do banco de registradores formam o bloco conhecido como memória endereçável por bit (bit addressable space). O conjunto de instruções do 8051 inclui vários tipos de instruções de um só bit, e os 128 bits presentes nessa área podem ser diretamente endereçados por estas instruções. Todos os bytes nos primeiros 128 bytes de memória podem ser endereçados direta ou indiretamente. Os próximos 128 bytes só podem ser acessados indiretamente nos dispositivos que os possuem. A área de memória acima de 128 bytes constitui o registrador de funções especiais (SFR) cuja descrição detalhada faremos posteriormente.
3.4 – Conjunto de Instruções da família 8051
Todos os membros da família 8051 executam o mesmo conjunto de instruções. Este conjunto é composto por instruções otimizadas para aplicações de controle, facilitando as operações de dados através de vários modos de endereçamento. Capacita ainda a operação de variáveis de um bit, permitindo operação em sistemas que demandam processamento booleano. Vamos descrever rapidamente o modo de operação de várias das instruções contidas neste conjunto. Maiores informações podem ser encontradas nos manuais dos fabricantes, os quais descrevem detalhadamente o conjunto de instruções.
3.5 – Registrador da palavra de controle (Program Status Word)
Pointer. Endereços de 16 bits podem ser acessados somente pelo Data Pointer.
3.7 – Instruções aritméticas
O conjunto de instruções aritméticas é listado na tabela a seguir. A tabela indica o modo de endereçamento que pode ser utilizado com cada instrução, para acessar o byte operando. Por exemplo, a instrução Add A,
Add A, 7FH (endereçamento direto) Add A, @R0 (endereçamento indireto) Add A, R7 (endereçamento por registrador) Add A, #127 (constante imediata)
Mnemônic o
Operação Modo de Endereça mento
Temp o de Exec ução ADD A,
A = A +
A = A +
Dir / Ind / Reg / Imm
A = A -
INC A A = A + 1 Acumulad or
**_INC
Dir / Ind / Reg
Data Pointer
DEC A A = A - 1 Acumulad or
DEC
- 1
Dir / Ind / Reg
MUL AB B e A = B x A Acumulad or e B
Acumulad or e B
DA A Ajuste decimal Acumulad or
Os tempos de execução indicados consideram um clock de 12MHz. Todas as instruções aritméticas são executadas num tempo de 1F 06 D s com exceção da instrução INC DPTR que consome 2F 06 D s, e as instruções de multiplicação e divisão que são efetuadas em 4F 06 D s. Perceba que qualquer byte no espaço de memória interno pode ser incrementado ou decrementado sem o uso do acumulador. Inclusive o registrador de 16 bits DPTR pode ser incrementado desta forma. A instrução MUL AB opera com os registradores A e B e põe o resultado (16 bits) nos registradores B (byte high) e A (byte low) concatenados. A instrução DIV AB divide A por B e coloca o quociente (resultado da divisão inteiro em 8 bits) no acumulador e o resto (8 bits) no registrador B.
RRC A Roda Acum. à direita c/ carry
Acumulado r
SWAP A Swap nibbles in A (^) Acumulado r
Todos os modos de endereçamento podem ser utilizados e as instruções são executadas em tempo de 1 a 2 F 06 D s. Estas instruções podem ser executadas em qualquer byte de memória interna ou na área de SFR. O conjunto de instruções permite que sejam realizadas todas as operações lógicas e ainda a instrução SWAP A , que inverte os nibbles alto e baixo do acumulador, operação útil quando operamos com o código BCD. 3.9 – Transferência de dados interna e externa
A tabela a seguir mostra as instruções disponíveis para movimentação de dados entre os espaços de memória interna.
Mnemônic o
Operação Modo de Endereçam ento
Temp o de Execu ção MOV A,
A =
DPTR = 16 bit Const
Constante imediata
@SP,
Direto 2 POP
Direto 2 XCH A,
Acc e
Dir / Ind / Reg
Acc e
Indireto 1
A instrução MOV
A área de stack reside na própria RAM interna e as instruções de PUSH primeiro incrementam o stack pointer, então copia o byte no stack. As instruções de PUSH e POP usam apenas o endereçamento direto para identificar o byte que está sendo manipulado, enquanto que o stack é acessado por endereçamento indireto através do registrador SP. Isto significa que o stack vai para os 128 bytes altos (se existirem) mas não para a área de SFR. Nos dispositivos onde não está implementado a área alta, os bytes “PUSHed” são perdidos e os bytes “POPed” são indeterminados. As transferências de dados incluem movimentações em 16 bits, que podem ser utilizadas para inicializar o Data Pointer (DPTR), para o uso de tabelas na memória de programa, ou para acesso à memória de dados externa. A instrução XCH A,
Largura do Endereço
Mnemônic o
Operação 8 Bits MOVX A, @Ri
Lê RAM Externa (Ri) 8 Bits MOVX @Ri, A
Escreve RAM Externa (Ri) 16 Bits MOVX A, @DPTR
Lê RAM Externa (DPTR) 16 Bits MOVX @DPTR, A
Escreve RAM Externa (DPTR)