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


Microcontrolador 8051, Notas de estudo de Tecnologia Industrial

Apostila do CEFET-SP

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 25/05/2010

roberto-cesar-possebon-10
roberto-cesar-possebon-10 🇧🇷

5

(2)

1 documento

1 / 79

Toggle sidebar

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

Não perca as partes importantes!

bg1
Wilson Ruiz
1
CEFET-SP Microcontroladores Família MCS-51
Conceitos, Aplicações e Projetos versão 6.0
2004 Wilson Ruiz
Harpia harpyja Harpia ou Águia Real Brasil
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

Pré-visualização parcial do texto

Baixe Microcontrolador 8051 e outras Notas de estudo em PDF para Tecnologia Industrial, somente na Docsity!

CEFET-SP Microcontroladores – Família MCS-

Conceitos, Aplicações e Projetos versão 6. 2004 Wilson Ruiz

Harpia harpyja Harpia ou Águia Real Brasil

CAPÍTULO 1: HARDWARE DOS MICROCONTROLADORES

DA FAMÍLIA INTEL 8051 (MCS-51)

1.1 CARACTERÍSTICAS PRINCIPAIS COMUNS AOS

MICROCONTROLADORES DA FAMÍLA INTEL MCS-51:

  • Família de microcontroladores mais usada atualmente.
  • CPU de 8 bits otimizada para aplicações de controle.
  • Clock típico de 12MHz (valor usado em aplicações gerais existindo também versões mais rápidas).
  • Capacidade de 64 Kbytes de memória de programa (ROM) e 64 Kbytes de memória de dados (RAM).
  • 4 Kbytes de memória de programa interna (ROM interna).
  • RAM interna com 128 bytes (há versões com capacidades superiores).
  • 4 portas de I/O de 8 bits cada, com bits individualmente endereçáveis.
  • Interrupções mascaráveis em dois níveis de prioridades (três internas e duas externas).
  • 2 temporizadores / contadores internos de 16 bits programáveis.
  • Oscilador de clock interno.
  • Canal de comunicação serial.
  • Capacidade de execução de complexas operações aritméticas e lógicas (multiplicação, divisão, permuta e deslocamento de bits etc).
  • Família com grande variedade de CPU’s, com versões diferenciando-se na especialização, porém apresentando mesma arquitetura interna básica.
  • Fornecido por diferentes fabricantes que personalizam o seu produto mantendo a compatibilidade com as versões originais.
  • 1.3 ARQUITETURA INTERNA DA FAMÍLIA

1.4 DESCRIÇÃO DA PINAGEM DO 8051

Número dos Pinos

Nome Descrição resumida de sua função

1 a 8 P1.0 a P1. Port 1

Porta de I/O número 1

9 RST/ VPD

“Reset” do sistema (é necessário a aplicação de um nível alto TTL, durante 2 ou mais ciclos de máquina) 10 a 17 P3.0 a P3. Port 3

Porta de I/O número 3 Possibilita também funções especiais relacionadas ao Canal Serial, Interrupções e “Timer/Counter” 18 XTAL 2

Ligação do cristal oscilador

19 XTAL 1

Ligação do cristal oscilador

20 Vss Terra 21 a 28 P2.0 a P2. Port 2 ou A8 a A

Porta de I/O número 2 Saída do byte mais significativo do endereço, para memória externa.

29 PSEN’ Program Store Enable “Strobe” da memória de programa externa. Quando o sistema lê instruções ou operandos na memória externa, vai para nível zero e não é ativado (nível 1) durante busca na memória interna de programa. 30 ALE / PROG

Address Latch Enable Saída para habilitar o “latch” de endereços. Serve para separar, a parte menos significativa do endereço, dos dados, na aplicação de memória externa. Entrada do pulso de programação durante a gravação da EPROM. 31 EA’ / Vpp

External Access Enable – Programming Supply Voltage Entrada de seleção da memória de programa. Quando em nível zero, a CPU trabalha apenas com a memória de programa externa.. Se em nível lógico 1, a CPU executa instruções da memória de programa interna, desde que o PC seja menor que 4096. Este pino recebe +21 volts durante a programação da ROM interna. Recebe +21V durante a programação da EPROM 32 a 39 P0.0 a P0. ou AD0 a AD

Porta de I/O número 0 Fornece o byte menos significativo de endere ço multiplexado com os dados.

40 Vcc + 5 volts

1.5 ORGANIZAÇÃO DA MEMÓRIA DA FAMÍLIA 8051 (e equivalentes)

MAPA DA MEMÓRIA DE PROGRAMA (ROM)

65535 = FFFFh

60K bytes ‡

4096 = 1000h

ROM externa 60 Kbytes

expansão

4095 = 0FFFh

4K bytes ‡

0 = 0000h

ROM Interna do chip conteúdo inviolável 4 Kbytes

Modo mínimo

65535 = FFFFh

64K bytes ‡

0 = 0000h

ROM Externa 64 Kbytes

Para o 8051: pino EA’=1 ‡ OU fl Para o 8031: pino EA’ = 0

MAPA DA MEMÓRIA DE DADOS (RAM)

255 = FFh

128 bytes superiores ‡

128 = 80h

Registros de funções especiais 128 bytes

127 = 7Fh 128 bytes inferiores ‡

0 = 00h

RAM Interna uso geral e stack 128 bytes

65535 = FFFFh

64K bytes ‡

0 = 0000h

RAM Externa Uso geral

RAM interna ‡ E fl RAM externa ***** 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.

ESTRUTURA DA MEMÓRIA RAM INTERNA

1.7 PROGRAM STATUS WORD (PSW) - endereço D0h

Este byte, localizado no espaço SFR (Special Status Word – RAM interna de 80h a FFh), possui alguns bits de status que refletem o estado da CPU. Mostrado na figura abaixo, contém as flags: Carry, Auxiliay Carry, Overflow, Paridade, dois bits (RS1 e RS0) de seleção de banco de registradores e dois bits de status definidos pelo usuário.

Registrador PSW ( Program Status Word )

Flag Descrição C = PSW.7 Flag carry C = 1 indica o transporte no bit 7 (vai 1 ou vem 1), C = 0 caso contrário AC = PSW.6 Flag auxiliar carry C = 1 indica o transporte entre os bits 3 e 4 (vai 1 ou vem 1), C = 0 caso contr. F0 = PSW.5 Flag de uso geral Pode-se setar ou resetar esta flag, indicando o status da condição escolhida RS1 = PSW.4 RS1 RS0 = 00 ‡ banco 0 RS1 RS0 = 10 ‡ banco 2 RS0 = PSW.

Seleção do banco de registradores (^) RS1 RS0 = 01 ‡ banco 1 RS1 RS0 = 11 ‡ banco 3 OV = PSW.2 Flag de overflow OV = 1 indica uma condição de erro, o resultado não pode ser representado como um no^ sinalizado (ex. soma de nos negativos resultando em positivo) P = PSW.0 Flag de paridade P = 0 p/ paridade par do acumulador e P = 1 p/ paridade impar do acumulador

1.8 RESET – principais características:

  • Ativo quando o pino RST (9) permanecer em “nível 1” por 2 ou mais ciclos

de máquina.

  • RESET interno:

ß PC, Acumulador, B, Flags, DPTR, registros dos temporizadores /

contadores são zerados.

ß SP fl 07h

ß SBUF (buffer serial) estará com conteúdo indeterminado e o

registro de controle da porta serial (SCON) será zerado.

ß PCON terá apenas o seu bit +significativo zerado.

ß IE e IP (registros de controle de interrupção) terão xxx00000.

ß As portas P0 a P3 terão o valor FFh. (durante o RESET, o nível nos

pinos é indeterminado, indo a “nível 1” após a execução da rotina

interna de RESET assim, o hardware externo, dependendo da

aplicação, deve prever essa situação, evitando o acionamento

indesejado de algum periférico.

ß A RAM interna não é afetada pelo RESET “forçado”, sendo que

após o “power-up” seu valor é aleatório.

AS INTERRUPÇÕES DA FAMÍLIA 8051 (e equivalentes)

Essa família de microcontroladores apresenta 5 / 6 formas de ser interrompido:

  • Pela interrupção externa INT0’ ______(maior prioridade)
  • Pelo timer/counter interno TIMER 0
  • Pela interrupção externa INT1’
  • Pelo timer/counter interno TIMER 1
  • Pelo canal de comunicação serial_____ (menor prioridade)
  • Pelo timer/counter interno TIMER 2 (somente para o 8032 / 52)

OBSERVAÇÕES:

ß Todas as interrupções podem ser habilitadas ou não (exceto o RESET).

ß Se o pedido da interrupção que ocorrer for de nível menor ou igual (mesmo número) ao da que já está sendo atendida, este ficará aguardando o término da mesma para ser executado.

ß No caso de uma interrupção de prioridade menor estar em andamento, esta poderá ser interrompida por uma de prioridade maior, que ao seu término possibilita que a primeira seja concluída.

ENDEREÇOS DE DESVIO DAS INTERRUPÇÕES

Mapa da memória de programa

ENDEREÇO NOME DA INTERRUPÇÃO Intervalo

0000h ... 0002h

Reset 3 bytes

0003h ... 000Ah

INT0 8 bytes

000Bh ... 0012h

Timer/Counter 0 8 bytes

0013h ... 001Ah

INT1 8 bytes

001Bh ... 0022h

Timer/Counter 1 8 bytes

0023h ... 002Ah

Canal Serial 8 bytes

002Bh ... 0032h

Timer/Counter 2 Somente para 8032 / 52

8 bytes

0033h

‡ IP (Interrupt Priority) – Endereço B8h Tem por função fixar qual nível de prioridade das interrupções, sendo assim possível alterar a prioridade de atendimento de uma interrupção durante o processamento.

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 X X X PS PT1 PX1 PT0 PX

PS (Priority Serial):

  • p/ = 0, indica prioridade baixa para a interrupção solicitada pelo canal serial.
  • p/ = 1, indica prioridade alta para esta interrupção, se a mesma estiver habilitada.

PT1 (Priority Timer 1):

  • p/ = 0, indica prioridade baixa para a interrupção solicitada pelo Temporizador/Contador 1.
  • p/ = 1, indica prioridade alta para esta interrupção, se a mesma estiver habilitada.

PT0 (Priority Timer 0):

• p/ = 0, indica prioridade baixa para a interrupção solicitada pelo

Temporizador/Contador 0.

  • p/ = 1, indica prioridade alta para esta interrupção, se a mesma estiver habilitada.

PX1 (Priority External 1):

  • p/ = 0, indica prioridade baixa para a interrupção solicitada pelo dispositivo externo ligado no pino INT1’.
  • p/ = 1, indica prioridade alta para esta interrupção, se a mesma estiver habilitada.

PX0 (Priority External 0):

  • p/ = 0, indica prioridade baixa para a interrupção solicitada pelo dispositivo externo ligado no pino INT0’.
  • p/ = 1, indica prioridade alta para esta interrupção, se a mesma estiver habilitada.

AJUSTE DA FORMA DE RECONHECIMENTO DAS INTERRUPÇÕES

EXTERNAS

É possível ajustar as interrupções externas para serem detectadas pela transição de “1” para “0” ou pelo nível “0”.

‡ TCON (Timer Control) – Endereço 88h

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 IE1 IT1 IE0 IT

IT1: Bit para a escolha da forma de reconhecimento do INT

• p/ = 0, indica que será aceita a interrupção apenas pelo nível “0” presente no

pino INT1’.

  • p/ = 1, indica que será aceita a interrupção na transição de “1” para “0” no nível desse pino’.

IT0: Bit para a escolha da forma de reconhecimento do INT

• p/ = 0, indica que será aceita a interrupção apenas pelo nível “0” presente no

pino INT0’.

  • p/ = 1, indica que será aceita a interrupção na transição de “1” para “0” no nível desse pino’.

IE1: Bit para o hardware de controle da interrupção INT

  • É setado pelo hardware interno quando for detectada uma transição de “1” para “0” no pino INT1’.
  • Tem por função sinalizar internamente o pedido da interrupção. É resetado logo que a interrupção é atendida.

IE0: Bit para o hardware de controle da interrupção INT

  • É setado pelo hardware interno quando for detectada uma transição de “1” para “0” no pino INT0’.
  • Tem por função sinalizar internamente o pedido da interrupção. É resetado logo que a interrupção é atendida.

‡ TMOD (Timer Mode) – Endereço 89h

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Gate.1 C/T’ .1 M 1 .1 M 0.1 Gate .0 C/T’.0 M 1.0 M 0.

Gate.1 e Gate.0:

  • Escolha da forma de como os T/C serão habilitados.

Exemplo: ß p/ Gate.0 = 0 ‡T/C 0, será habilitado (contando) fazendo-se TR0 = 1 ( no registrador TCON).

ß p/ Gate.0 = 1 ‡T/C 0, será habilitado (contando) somente p/ TR0 = 1 e o pino INT 0’ = 0.

Exemplo de aplicação: Determinação da largura de um pulso, colocando-se a entrada do sinal externo no pino de interupção correspondente e fazendo com que T/C funcione com sinal interno. Desta maneira somente haverá contagem quando o sinal externo for = 1. O software calculará o tempo decorrido entre dois pulsos do sinal aplicado.

C/T’.1 e C/T’.0 :

  • Selecionam a função de cada T/C individualmente

C/T’.0 Função escolhida para Timer / Counter 0 = 1 Contagem (para sinal externo) = 0 Temporização (sinal será interno)

C/T’.1 Função escolhida para Timer / Counter 1 = 1 Contagem (para sinal externo) = 0 Temporização (sinal será interno)

OBS: Para qualquer um dos T/C, se o sinal for interno (timer), a freqüência será a de clock dividida por 12 e o pino de entrada correspondente fica disponível.

M1.1 e M0.1 : M1.0 e M0.0 :

  • Escolha de um dos possíveis modos de operação para cada T/C.

MODOS DE OPERAÇÃO DOS T/C’s.

MODO 0

  • Contador ou Temporizador de 8 bits, com divisor de freqüência de até 32 (freqclock / 32).
  • Selecionado fazendo-se: M1.x = 0 e M0.x = 0
  • Os registradores TL0 e TL1 servem como divisores de 5 bits (até 32).

TH0 ou TH1 | TL0 ou TL | Contagem (bits 15...8) | ignorar (bits 7...5) Prescaler (bits 4...0)

ß Registrador TH0 (endereço 8Ch) ou registrador TH1 (endereço 8Dh) recebe o valor inicial da contagem (valor escrito pelo software, até FFh). ß Ao ocorre um overflow nesse registrador, o T/C em uso gera um pedido de interrupção interno, que poderá ser ou não aceito pela CPU. ß O valor presente nesse registrador pode ser lido pelo software a qualquer momento. ß O sinal de contagem (interno ou externo) será dividido pelo valor binário presente nos bits “0” a “4” do registrador TL0 (endereço 8Ah) ou TL (endereço 8Bh), no T/C usado. ß Os bits “5”a “7” devem ser ignorados em caso de leitura.

Exemplo: É desejada uma contagem com as seguintes características: De 9Bh até FFh e que a cada 20 pulsos aplicados na entrada externa do T/C 0 (pino T0), este incremente seu registro de uma unidade. Assim temos: 9Bh – FFh = 64h = 100 contagens em decimal, sendo desejado então que a cada 100 contagens internas uma interrupção seja gerada e, possibilitar assim que um determinado controle do sistema seja feito pela CPU. Dessa forma temos uma interrupção a cada 2000 sinais externos. Isso é conseguido programando-se T/C 0 como contador no modo 0, carregando-se TH0 com 9Bh e TL0 com 14h (20 decimal). A rotina de interrupção, além do tratamento desta, deverá escrever o valor inicial em TH0 (máx. contagem = 255 x 32)