Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Microcontroladores MCS51, Notas de estudo de Engenharia Elétrica

Apostila sobre Microcontrolador MCS51

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 18/10/2007

alex-vitor-r-santos-9
alex-vitor-r-santos-9 🇧🇷

1 documento

1 / 97

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
MICROCONTROLADORES
MCS51
Hugo Vieira Neto, M.Sc.
Curitiba, 2002
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61

Pré-visualização parcial do texto

Baixe Microcontroladores MCS51 e outras Notas de estudo em PDF para Engenharia Elétrica, somente na Docsity!

MICROCONTROLADORES

MCS

Hugo Vieira Neto, M.Sc.

([email protected])

Curitiba, 2002

SUMÁRIO

Manual do Paulmon

  • Sistemas Microprocessados.............................................................................
    • Hardware
    • Software.................................................................................................
  • Microcontroladores
  • Microcontroladores MCS51
    • Disposição dos Terminais Parte 1 – Hardware Básico
    • Descrição Funcional dos Terminais .....................................................
    • Arquitetura Interna ...............................................................................
    • Organização da Memória.....................................................................
    • Bancos de Registros ............................................................................
    • Registros Bit Endereçáveis ..................................................................
    • Registros de Função Especial .............................................................
    • Clock ....................................................................................................
    • Reset....................................................................................................
    • Memórias Externas de Programa e de Dados .....................................
    • Programação ....................................................................................... Parte 2 - Software
    • Modos de Endereçamento ...................................................................
    • Conjunto de Instruções ........................................................................
    • Linguagem Assembly...........................................................................
    • Tópicos Importantes em Programação ................................................
    • Linguagem C........................................................................................
    • Ports de Entrada e Saída..................................................................... Parte 3 – Hardware Avançado
    • Interrupções .........................................................................................
    • Temporizadores / Contadores de Eventos...........................................
    • Interface Serial .....................................................................................
    • Modos de Redução de Consumo.........................................................
  • Bibliografia......................................................................................................
  • Informações Úteis na Internet.........................................................................
    • Conjunto de Instruções MCS Anexos
    • Manual da Placa P
  • Barramento de Endereços (Address Bus): É o conjunto de sinais digitais através do qual são selecionados dispositivos conectados ao barramento de dados. Cada componente do sistema corresponde a um endereço ou faixa de endereços, atendendo quando solicitado pelo microprocessador ou por outro dispositivo, no caso de DMA.
  • Barramento de Controle (Control Bus): Conjunto de sinais digitais que auxiliam o endereçamento dos diversos dispositivos de um sistema microprocessado, sinalizando o tipo de operação a ser efetuada. É através do barramento de controle que se definem operações de leitura ou escrita, acesso à memória, acesso aos periféricos ou requisições de DMA. Também é através de sinais especiais do barramento de controle que são realizadas interrupções no processamento do programa para atender a eventos de maior prioridade.

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

Diagrama em Blocos de um Sistema Microprocessado Genérico

Linguagens de Programação

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.

Ferramentas de Desenvolvimento

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.

MICROCONTROLADORES

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.

Famílias de Microcontroladores

  • MCS51 – Intel e outros fabricantes
  • M68HC11 – Motorola
  • Z8 – Zilog
  • COP8 – National
  • PIC – Microchip
  • AVR - Atmel

DISPOSIÇÃO DOS TERMINAIS

AT89C51 (DIP40)

AT89C1051 (DIP20)

DESCRIÇÃO FUNCIONAL DOS TERMINAIS

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

ARQUITETURA INTERNA:

Ports

RXD

TXD

ALE

PSEN\

RD\

WR\

INT1
INT0\

RST

ORGANIZAÇÃO DA MEMÓRIA

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.

Memória de Programa

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.

Memória de Dados

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.

REGISTROS BIT-ENDEREÇÁVEIS

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

REGISTROS DE FUNÇÃO ESPECIAL

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):

  • PC – Program Counter Contador de Programa: indica o endereço da próxima instrução a ser executada (16 bits).
  • (^) PSW (D0H) – Program Status Word Contém os sinalizadores (flags) que indicam as ocorrências na execução da última operação lógica ou aritmética. Contém também os bits de controle para a seleção do banco de registros em uso.
  • SP (81H) – Stack Pointer Ponteiro da Pilha: indica o topo da pilha (último dado colocado).
  • A (E0H) e B (F0H) Trata-se do acumulador (A), empregado nas operações lógicas e aritméticas da CPU, e de um registro secundário (B), empregado apenas nas operações de multiplicação e divisão. São registros intimamente relacionados com a Unidade Lógica e Aritmética da CPU.
  • DPH (83H) e DPL (82H) Registros de 8 bits que compõem respectivamente os bytes mais e menos significativos do ponteiro de dados de 16 bits chamado DPTR, utilizado para endereçamento indireto da memória de programa e da memória externa de dados.
  • P0 (80H), P1 (90H), P2(A0H) e P3(B0H) Registros que contêm cópias dos estados dos quatro Ports de E/S. A escrita nesses registros altera automaticamente o conteúdo na saída do Port correspondente. A leitura carrega o estado de entrada presente nos terminais do Port no registro correspondente.
  • IE (A8H) – Interrupt Enable e IP (B8H) – Interrupt Priority Registros de habilitação / desabilitação das interrupções e de definição da prioridade de atendimento de cada uma delas.
  • PCON (87H) – Power Control Presente apenas na versão CMOS, este registro permite colocar o 80C51 em modos de redução de consumo de energia, preservando o conteúdo da memória interna.
  • TCON (88H) – Timer Control e TMOD (89H) – Timer Mode Registros de controle e modo de operação dos temporizadores / contadores de eventos.
  • TH1 (8DH), TL1 (8BH), TH0 (8CH) e TL0 (8AH) Registros de dados dos temporizadores / contadores de eventos 1 e 0, respectivamente. Contêm os valores das contagens realizadas (16 bits).
  • (^) SCON (98H) – Serial Control e SBUF (99H) – Serial Buffer Registros de controle da interface serial e de armazenamento dos dados a serem transmitidos (escrita) ou recebidos (leitura).

RESET

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:

  • Os registros A, B, PSW, DPTR, PC e todos os registros dos temporizadores / contadores de eventos são zerados.
  • O registro SP é carregado com o valor 07H.
  • Os Ports P0, P1, P2 e P3 são carregados com FFH. Durante o reset o nível lógico dos terminais é indeterminado, assumindo valor 1 após a execução da seqüência de reset interna.
  • O registro SCON é zerado e o registro SBUF fica com valor indeterminado.
  • O registro PCON tem apenas o seu bit mais significativo zerado.
  • Os registros IE e IP são carregados com o valor XXX00000B, (X=indeterminado).
  • A RAM interna não tem o seu conteúdo afetado pelo reset.

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.

MEMÓRIAS EXTERNAS DE PROGRAMA E DE DADOS

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).