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 sobre Microcontrolador MCS51
Tipologia: Notas de estudo
1 / 97
Esta página não é visível na pré-visualização
Não perca as partes importantes!
Manual do Paulmon
E/S
Barramento de Dados
Barramento de Endereços e Controle
Memória de Programa
(ROM)
CircuitoDe Clock
Micropro-cessador
(CPU)
MemóriaDe Dados(RAM)
Periféricos Decodificadorde Endereços
(Seleção)
Circuitode Reset Interrupções
A principal função das linguagens de programação é proporcionar ao programador uma ferramenta para elaboração de programas que os torne mais inteligíveis do que a linguagem de máquina. Sendo assim, existem linguagens de programação que se aproximam mais da linguagem do microprocessador, chamadas linguagens de baixo nível (como a linguagem Assembly), e existem linguagens que se aproximam mais da linguagem do programador, chamadas linguagens de alto nível (como a linguagem C). Os programas implementados em linguagens diferentes da linguagem de máquina necessitam ser traduzidas para que possam ser devidamente executadas pelo microprocessador. Aplicativos que realizam a tarefa de codificar os programas para linguagem de máquina recebem os nomes de montador (assembler), no caso da linguagem Assembly, e compilador no caso da linguagem C ou qualquer outra linguagem de alto nível. Existem também os chamados interpretadores, os quais codificam e executam programas em linguagens de alto nível em tempo real. É bastante comum interpretadores para a linguagem BASIC. Pode-se dividir um programa grande em vários arquivos contendo código-fonte, facilitando a sua manutenção (modularidade). Um outro aplicativo chamado link-editor (linker) é o reponsável pela ligação dos diversos módulos do programa para constituir a sua forma final em linguagem de máquina ou código-objeto. O link-editor é também o responsável pela ligação do código- objeto de bibliotecas de funções utilizadas em linguagens de alto nível. Atualmente existem ambientes integrados de desenvolvimento de software, constituídos de editor de código-fonte, montador, compilador, link- editor e simulador de programas em um único aplicativo.
Além dos aplicativos necessários para o desenvolvimento de programas também são necessárias ferramentas para a validação do funcionamento do sistema como um todo (hardware e software). Para essa finalidade existem programas simuladores de hardware e software, programas monitores (debuggers), emuladores de memórias ROM e RAM, e emuladores de microprocessadores e microcontroladores, podendo estes últimos operar em tempo real ou não.
Os microcontroladores, também chamados de "microcomputadores de somente um chip", vêm revolucionando o projeto de sistemas eletrônicos digitais devido à enorme versatilidade de hardware e software que oferecem. Um microcontrolador reúne em apenas um componente os elementos de um sistema microprocessado completo, antes desempenhados por diversos dispositivos (memória ROM, memória RAM, interface paralela, interface serial, temporizadores / contadores de eventos, controlador de interrupções, entre outros). Talvez a vantagem mais marcante dos microcontroladores seja a possibilidade de ter seus programas gravados internamente na fabricação do componente, impedindo a engenharia reversa ou cópias não autorizadas.
Pino Nome E/S Função 1-8 P1.0-P1.7 E/S O Port 1 é uma interface de E/S bidirecional com 8 bits individualmente endereçáveis e resistores de pull-up internos. Terminais que estejam no estado lógico 1 podem ser utilizados como entradas. 9 RST E Quando aplicado nível lógico 1 a este terminal durante 2 ciclos de máquina (com o oscilador operando) ocorre o reset do microcontrolador. Um resistor interno conectado a VSS permite o power-on-reset com apenas um capacitor externo conectado a VCC. 10-17 P3.0-P3.7 E/S O Port 3 é uma interface de E/S bidirecional com 8 bits individualmente endereçáveis e resistores de pull-up internos. Terminais que estejam no estado lógico 1 podem ser utilizados como entradas. O Port 3 também contém os terminais de interrupções, contadores, interface serial e expansão de memória de dados externa*. 18 XTAL2 Saída do amplificador inversor do oscilador. 19 XTAL1 Entrada do amplificador inversor do oscilador e entrada do gerador de clock interno. 20 VSS Potencial de referência (terra). 21-28 P2.0-P2.7 E/S O Port 2 é uma interface de E/S bidirecional com 8 bits individualmente endereçáveis e resistores de pull-up internos. Terminais que estejam no estado lógico 1 podem ser utilizados como entradas. O Port 2 também gera a parte mais significativa dos endereços durante acessos às memórias externas de programa ou dados. 29 PSEN\ S PROGRAM STORE ENABLE Habilita o acesso à memória de programa externa durante a busca de instruções. Permanece em nível lógico 1 durante o acesso da memória de programa interna. 30 ALE S ADDRESS LATCH ENABLE Fornece o sinal para armazenamento da parte menos significativa do endereço durante acessos às memórias externas de programa ou dados. 31 EA\ E EXTERNAL ACCESS Quando em nível lógico 1, as instruções da memória de programa interna são executadas. Quando em nível lógico 0, todas as instruções são buscadas na memória de programa externa. No caso do 8031 este terminal deve sempre estar em nível lógico 0. 32-39 P0.0-P0.7 E/S O Port 0 é uma interface de E/S bidirecional com 8 bits individualmente endereçáveis em dreno aberto. Terminais que estejam no estado lógico 1 podem ser utilizados como entradas de alta impedância. O Port 0 também atua como barramento de dados e gera de maneira multiplexada a parte menos significativa dos endereços durante acessos às memórias externas de programa ou dados. No caso de acesso a memórias externas são utilizados resistores de pull-up internos. 40 VCC Potencial de alimentação (+5V).
EA\
CPUMCS Geradorde Clock
Memória De ProgramaInterna (ROM)
MemóriaDe Dados Interna (RAM)
Temporizadores/Contadores deEventos (16 bits)
Controle doBarramentode Expansão
Interfaces deEntrada / SaídaProgramáveis
Interface
Serial Programável
Barramento de Dados Interno
InterrupçõesInternas:- T/C0- T/C1- Serial
XTAL
XTAL
T
T
Ports
RXD
TXD
ALE
PSEN\
RD\
WR\
INT1
INT0\
RST
O 8051 acessa as memórias de programa e dados através de sinais de controle diferentes, resultando em mapas de memória separados para programas e dados.
ROM INTERNA
ROM EXTERNA
0FFFH 1000H
0000H
FFFFH
PSEN=
EA=
PSEN=
ROM EXTERNA PSEN=
EA=
0000H
FFFFH
A memória de programa pode ser expandida através de barramentos externos. Após o reset, o microcontrolador 8051 irá buscar a primeira instrução no endereço 0000H da memória de programa. O nível lógico presente no terminal EA\ determina se o microcontrolador deverá iniciar a busca das instruções na memória interna ou exclusivamente na memória externa, ignorando a memória interna, se a mesma existir. O sinal PSEN\ habilita o acesso à memória de programa externa.
RAM INTERNA
REGISTROS ESPECIAIS
00H
FFH
RAM EXTERNA
0000H
FFFFH
RD\
WR\
BANCOS DE REGISTROS
REGISTROS ENDEREÇÁVEIS POR BIT
RAM DE USO GERAL
1FH 20H
2FH 30H
7FH 80H
00H
7FH
De maneira similar, é possível expandir a memória de dados utilizando barramentos externos. Entretanto, as memórias de dados interna e externa são tratadas pelo 8051 de maneira radicalmente diferente: a interna é acessada através de endereços de 8 bits (MOV) e a externa através de endereços de 16 bits (MOVX). Os sinais RD\ e WR\ são os responsáveis pelos acessos de leitura e escrita, respectivamente, na memória de dados externa.
Nos microcontroladores da família MCS51, a faixa que vai do endereço 20H ao endereço 2FH da memória de dados interna é chamada de região de registros bit-enderecáveis. Estas posições da memória de dados interna possuem uma característica especial que permite a alteração individual de cada bit através de instruções especialmente destinadas a este fim. Desta maneira, cada bit endereçável possui um endereço individual específico, como mostra a tabela abaixo.
Endereços Individuais dos Bits Registro bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 20H 07H 06H 05H 04H 03H 02H 01H 00H 21H 0FH 0EH 0DH 0CH 0BH 0AH 09H 08H 22H 17H 16H 15H 14H 13H 12H 11H 10H 23H 1FH 1EH 1DH 1CH 1BH 1AH 19H 18H 24H 27H 26H 25H 24H 23H 22H 21H 20H 25H 2FH 2EH 2DH 2CH 2BH 2AH 29H 28H 26H 37H 36H 35H 34H 33H 32H 31H 30H 27H 3FH 3EH 3DH 3CH 3BH 3AH 39H 38H 28H 47H 46H 45H 44H 43H 42H 41H 40H 29H 4FH 4EH 4DH 4CH 4BH 4AH 49H 48H 2AH 57H 56H 55H 54H 53H 52H 51H 50H 2BH 5FH 5EH 5DH 4CH 5BH 5AH 59H 58H 2CH 67H 66H 65H 64H 63H 62H 61H 60H 2DH 6FH 6EH 6DH 6CH 6BH 6AH 69H 68H 2EH 77H 76H 75H 74H 73H 72H 71H 70H 2FH 7FH 7EH 7DH 7CH 7BH 7AH 79H 78H
Os registros de função especial (special function registers) são os responsáveis pelo controle e execução das instruções do programa e pela configuração dos periféricos internos, determinando as suas formas de operação. O 8051 possui os seguintes registros de função especial (os endereços na memória de dados interna encontram-se entre parêntesis):
O reset do 8051 é ativado quando o terminal RST é levado a nível lógico 1 por dois ou mais ciclos de máquina. Consiste basicamente na inicialização de alguns registros com valores predeterminados:
Um circuito reset automático ao ligar o sistema (power-on-reset) pode ser implementado com a conexão de um capacitor externo entre o potencial de alimentação e o terminal RST.
Os Ports 0 e 2 podem ser utilizados para acessar memórias externas como função alternativa, possibilitando a expansão da capacidade de memória de programa e de dados do 8051. Nesse modo de operação, o Port 2 atua como a parte mais significativa (A15-A8) e o Port 0 atua como a parte menos significativa (A7-A0) do barramento de endereços externo. Os sinais do barramento de dados externo (D7-D0) também são fornecidos em seguida pelo Port 0, multiplexados com a parte menos significativa dos endereços.
8051
Latch EPROM RAM
D0-D
A0-A
A8-A
D0-D
A0-A
A8-A
AD0-AD
ALE
PSEN\
RD
WR\
CK
OE\ OE\ WR\
O sinal ALE indica quando a parte menos significativa dos endereços está disponível no Port 0. Este sinal serve para habilitar um latch de 8 bits externo, destinado a armazenar a parte menos significativa do barramento de endereços (A7-A0). Após o armazenamento dos sinais A7-A0, o Port 0 apresenta os sinais D7-D0. É desta forma que ocorre a demultiplexação do barramentos de dados e endereços. O sinal PSEN\ habilita a leitura da memória de programa externa, tornando-se ativo quando o 8051 busca instruções externamente. O terminal EA\ quando em nível lógico 1 informa ao 8051 que os primeiros 4KB da memória de programa estão na memória de programa interna e o restante na memória externa, se estiver presente. Quando em nível lógico 0, o terminal EA
determina que o microcontrolador busque todas as instruções de programa na memória externa, ignorando completamente a memória interna, se esta existir. Os sinais RD\ e WR\ somente são ativados no caso de leitura ou escrita, respectivamente, na memória de dados externa (as instruções que acessam a memória de dados externa – MOVX – são distintas das que acessam a memória interna – MOV).