micro controladores MC51 1

micro controladores MC51 1

(Parte 1 de 5)

Hugo Vieira Neto, M.Sc. hugo@cefetpr.br

Curitiba, 2002

Sistemas Microprocessados2
Hardware2
Software5
Microcontroladores7
Microcontroladores MCS518
Disposição dos Terminais9
Descrição Funcional dos Terminais10
Arquitetura Interna12
Organização da Memória13
Bancos de Registros14
Registros Bit Endereçáveis15
Registros de Função Especial15
Clock17
Reset18
Memórias Externas de Programa e de Dados19

Parte 1 – Hardware Básico

Programação25
Modos de Endereçamento25
Conjunto de Instruções26
Linguagem Assembly47
Tópicos Importantes em Programação49
Linguagem C51

Parte 2 - Software

Ports de Entrada e Saída52
Interrupções60
Temporizadores / Contadores de Eventos67
Interface Serial80
Modos de Redução de Consumo84
Bibliografia86
Informações Úteis na Internet87

Parte 3 – Hardware Avançado

Anexos

Conjunto de Instruções MCS51 Manual da Placa P51 Manual do Paulmon

Tutoriais

Microcontroladores MCS51 – Hugo Vieira Neto, M.Sc – Curitiba, 20022

Sistemas microprocessados dividem-se basicamente em hardware e software. O hardware é constituído dos componentes físicos do sistema (dispositivos eletrônicos) e o software é constituído dos componentes lógicos (programas e dados). Chama-se de firmware o conjunto de programas gravados em ROM, específicos para o funcionamento de um determinado sistema microprocessado.

Principais Dispositivos de Hardware

• Microprocessador (CPU): Constitui o bloco "inteligente" do sistema. Segue uma seqüência de instruções previamente armazenadas, chamada de programa. É o responsável pela execução de operações lógicas, aritméticas e de controle.

• Memória não-volátil (ROM, PROM, EPROM): Armazena a seqüência de instruções do programa a ser executado.

• Memória volátil (SRAM, DRAM): Armazena temporariamente os dados relativos ao programa. Também pode armazenar programas de maneira temporária.

• Periféricos (interface paralela, interface serial, temporizadores / contadores de eventos, entre outros): São os responsáveis pela comunicação com o mundo externo ao sistema (entrada e saída de dados).

• Decodificador de endereços: Seleciona o dispositivo a ser acionado pelo microprocessador, auxiliando o microprocessador no gerenciamento do barramento de dados.

• Circuito de reset: É o responsável pela inicialização do sistema.

• Circuito de clock: Fornece a cadência (velocidade) de execução das instruções do programa pelo microprocessador.

Principais Sinais Digitais

• Barramento de Dados (Data Bus): Consiste no conjunto de sinais digitais por onde trafegam dados entre diferentes dispositivos. Trata-se de uma via bidirecional compartilhada entre todos os componentes do sistema microprocessado. Normalmente apenas dois dispositivos fazem uso do barramento de dados em cada instante de tempo (transmissor e receptor), ficando os demais em alta impedância. Quem comanda o barramento de dados é o microprocessador, através dos barramentos de endereços e de controle, exceto durante operações de DMA (Acesso Direto à Memória), quando o controle é cedido a algum periférico.

Microcontroladores MCS51 – Hugo Vieira Neto, M.Sc – Curitiba, 20023

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

Microcontroladores MCS51 – Hugo Vieira Neto, M.Sc – Curitiba, 20024

B a r am e n to de

D ado

B a r am e n to de

E nde r eços e C ont r o l e

Memó ria de P r ogr am a

Ci r c u i t

De Cl oc k

Mi c r o p ro ces sad

Memó ria De Dados(RA

Pe rif é ri co s

D ecod i f i ca dor de E n der e ç o s

(Se l eç ão )

Ci r c u i t de R ese t

I n te r r u p ções

Dia g ram a em

Bloc os de um

S i s t ema Mic r oprocess a do

Ge nér i co

Microcontroladores MCS51 – Hugo Vieira Neto, M.Sc – Curitiba, 20025

Principais Conceitos de Software

Sistemas microprocessados operam segundo a execução seqüencial de instruções e operandos armazenados em memória. A essa lista de instruções dá-se o nome de programa armazenado. Como a execução do programa é seqüencial, apenas uma instrução é executada a cada instante de tempo. Chama-se de algoritmo uma seqüência de operações simples para se realizar uma determinada tarefa mais complexa.

Uma das formas mais comuns e acessíveis de se representar um algoritmo é o fluxograma, uma técnica que consiste em representar na forma de diagrama a seqüência das operações e decisões a serem realizadas para a sua execução. O grau de refinamento das operações representadas em um fluxograma depende em grande parte dos recursos oferecidos pela linguagem de programação a ser utilizada.

Exemplo: Fluxograma para a Troca de uma Lâmpada INÍCIO

Acionar o interruptor

A lâmpada acendeu? Sim

Apanhar lâmpada nova Não

Posicionar escada

Subir na escada

Retirar lâmpada antiga Colocar lâmpada nova

O uso de uma linguagem de programação faz-se necessário para a implementação real de um algoritmo na forma de programa executável, a fim de estruturar as instruções e seus respectivos operandos na seqüência a ser seguida pelo microprocessador. Cada microprocessador possui suas próprias instruções, as quais são codificadas de maneira única e constituem a chamada linguagem de máquina ou código de máquina da CPU.

Microcontroladores MCS51 – Hugo Vieira Neto, M.Sc – Curitiba, 20026

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ódigoobjeto 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, linkeditor 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 MCS51 – Hugo Vieira Neto, M.Sc – Curitiba, 20027

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

• COP8 – National

• PIC – Microchip

• AVR - Atmel

Microcontroladores MCS51 – Hugo Vieira Neto, M.Sc – Curitiba, 20028

MICROCONTROLADORES MCS51

Histórico

A família de microcontroladores MCS51 é uma das mais antigas existentes e, talvez por este motivo, é uma das mais conhecidas e utilizadas. Graças a essa característica, a quantidade de ferramentas de desenvolvimento e bibliotecas de software é bastante ampla e variada.

Além da Intel (fabricante original do 8051), diversas outras empresas passaram a comercializar diferentes versões da família MCS51, tais como: Atmel, Dallas Semiconductor, Intregrated Silicon Solutions, Philips, Infineon Technologies, entre outras.

Modelos

Os microcontroladores da família MCS51 possuem internamente ROM (memória de programa) e RAM (memória de dados); temporizadores / contadores de eventos; controlador de interrupções; interfaces de entrada / saída de 8 bits e interface serial síncrona / assíncrona. Os principais modelos são:

• 8031 – sem ROM (ROMLESS), 128 bytes de RAM e 2 T/C

• 8051 – com 4KB de ROM, 128 bytes de RAM e 2 T/C

• 8751 – com 4KB de EPROM, 128 bytes de RAM e 2 T/C

• 8032 – sem ROM (ROMLESS), 256 bytes de RAM e 3 T/C

• 8052 – com 8KB de ROM, 256 bytes de RAM e 3 T/C

• 8752 - com 8KB de EPROM, 256 bytes de RAM e 3 T/C

Variações

• 80C31, 80C32, 80C51 e 80C52 – versões CMOS, incluindo modos de baixo consumo de energia

• 80LV31, 80LV32, 80LV51 e 80LV52 – versões low-voltage (ISSI)

• 89C51 e 89C52 – versões com memória Flash reprogramável (Atmel, ISSI, Philips)

• 89C1051, 89C2051 e 89C4051– versões com memória Flash reprogramável, comparadores analógicos e invólucro reduzido (Atmel)

• 80C320 – versão com clock otimizado (três vezes mais veloz), capaz de operar em até 33MHz (Dallas Semiconductor)

• C505L – versão com 32KB de ROM, 512 bytes de RAM, conversor A/D de 10 bits e interface para LCD (Infineon Technologies)

• P51XA-G3, P51XA-H3 e P51XAS3 – versões com arquitetura de 16 bits (Philips)

Microcontroladores MCS51 – Hugo Vieira Neto, M.Sc – Curitiba, 20029

DISPOSIÇÃO DOS TERMINAIS AT89C51 (DIP40)

AT89C1051 (DIP20)

Microcontroladores MCS51 – Hugo Vieira Neto, M.Sc – Curitiba, 200210

Pino Nome E/S Função

1-8P1.0-P1.7E/SO 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.

9RSTEQuando 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-17P3.0-P3.7E/SO 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*.

18XTAL2Saída do amplificador inversor do oscilador.

19XTAL1Entrada do amplificador inversor do oscilador e entrada do gerador de clock interno.

20VSSPotencial de referência (terra). 21-28P2.0-P2.7E/SO 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.

29PSEN\SPROGRAM 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.

30ALESADDRESS 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-39P0.0-P0.7E/SO 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.

40VCCPotencial de alimentação (+5V).

Microcontroladores MCS51 – Hugo Vieira Neto, M.Sc – Curitiba, 200211

*Funções Especiais do Port 3

Pino Nome Função

P3.0RXD/dataReceptor da interface serial assíncrona ou entrada e saída de dados da interface serial síncrona.

P3.1TXD/clockTransmissor da interface serial assíncrona ou saída de clock da interface serial síncrona.

P3.2INT0\Entrada de interrupção externa 0 ou sinal de controle para o contador 0. P3.3INT1\Entrada de interrupção externa 1 ou sinal de controle para o contador 1. P3.4T0Entrada externa para o contador 0. P3.5T1Entrada externa para o contador 1. P3.6WR\Sinal de escrita na memória externa de dados. P3.7RD\Sinal de leitura na memória externa de dados.

É através das funções especiais dos terminais do Port 3 que se obtém acesso a periféricos internos do microcontrolador (interface serial, contadores de eventos e controlador de interrupções). Os sinais de controle de leitura e escrita da memória de dados externa também são fornecidos através de terminais do Port 3. No entanto, o Port 3 pode ser utilizado apenas como E/S simples.

Microcontroladores MCS51 – Hugo Vieira Neto, M.Sc – Curitiba, 200212

G e r a dor de C l oc m ó r i a

De Pro g ra m a

Int e r na ( m ó r i a

De Da o s

I n te r na (

T e m p o r i z ad o r es/

C o n t ores d

E v e n to s (1

6 b i t s )

Co n t ro le d

B a r r am t o de E p a n s ã o

I n t e r f ac es d

Ent r a d a / d a

Pro g ra m á v e is

Int e r f a c e r i a l

Pro g ra m á v e l

B a r r a m en to de a dos

I n t e r n o

I n t e r upçõe t e r n a s :

- S e r i a l

AL 1

T0 T1

Po r t s

Microcontroladores MCS51 – Hugo Vieira Neto, M.Sc – Curitiba, 200213

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

0FFFH 1000H

FFFFH PSEN\=0

EA\=1

PSEN\=1

ROM EXTERNA PSEN\=0

EA\=0 0000H

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.

(Parte 1 de 5)

Comentários