Aula8_8051_Parte1_2023

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 55

Departamento de Engenharia Elétrica e de Computação - EESC-USP

SEL-0415 Introdução à Organização de Computadores

Aula 8 : Microcontrolador 8051 –Parte 1

Profa. Luiza Maria Romeiro Codá

SEL/EESC-USP GRUPO DE SISTEMAS DIGITAIS


MICROCONTROLADOR 8051

Introdução, características, ligação de


memória externa e instruções
SEL 0415

SEL/EESC-USP GRUPO DE SISTEMAS DIGITAIS


Microcontroladores
Microcontrolador é o nome dado ao componente que incorpora
em um só CI todos os elementos necessários a um
microcomputador;

Contém os seguintes módulos:

▪ Microprocessador (ULA + Registradores + Unidade de


Controle);

▪ Memórias (programa e Dados);

▪ Interfaces.
3
Microcontroladores
Interfaces :
O microcontrolador podem ter as mais diversas
interfaces:

• Contador / Temporizador;
• Conversor AD / DA;
• Portas de I/O Paralelas (Entrada e Saída);
• Interface Serial.

4
Microcontroladores

Expansão de Memória e Periféricos

O microcontrolador pode possibilitar a expansão de


memórias e periféricos caso não seja suficiente a
memória interna (ao CI)

5
Exemplo típico da arquitetura de um
microcontrolador
(em um mesmo chip)
Memória de
Programa Dados
Memória de
Memória de
Programa Dados

Controle
Controle

Periféricos e I/O comunicação Sinais analógicos Temporização

6
Microcontroladores
(em um mesmo chip)
Duto de dados

Gerador
de RESET
Memória Memória
de de Portas
Programa Dados I/O
Interrupções
MICROPRO-
CESSADOR CS CS

Duto de
Oscilador endereços
+ controle Controle I/O
Seleção de
endereços
e Geração de CS

7
Operação de um Microcontrolador

▪ capaz de buscar e executar instruções de programas alocados na


memória de programa;

▪ Após a energização de um microcontrolador, é gerado um sinal de


reset que zera o Program Counter (PC), ou seja, posiciona o
registrador PC (que contém o endereço da instrução a ser
executada) no endereço inicial (geralmente 0000H). O programa é
executado a partir desse endereço;

▪ O microcontrolador irá buscar e executar as instruções na


sequência que elas estão gravadas na memória de programa,
seguindo sempre o endereço de memória definida pelo PC
(contador de programa);

8
Operação de um Microcontrolador
• Ciclo de Busca: operação de leitura do opcode de uma
instrução (ou parte dela) a partir da posição de memória
cujo endereço é definido pelo conteúdo do PC. O opcode
da instrução é armazenado em um registrador chamado
de RI (Registrador de Instrução), para ser executado pela
unidade de controle;
• Ciclo de Execução: executa a instrução (se ela ocupar
apenas uma posição) ou busca os demais bytes da
instrução na memória de programa para em seguida
executá-la. Nesse ciclo, o conteúdo do PC é incrementado
de uma, duas ou três unidades. Isso depende do
tamanho da instrução.

9
Operação de um Microcontrolador

• Ciclo de Máquina: sua definição varia de acordo com a


arquitetura de cada microprocessador. Para o 8051 é:
ciclo de busca do “opcode” + leitura ou gravação, em
memória ou I/O (duração de 12T);

• Ciclo de Instrução: tempo gasto para executar uma


instrução por completo. Pode necessitar de mais de um
ciclo de máquina.

10
Operação de um Microcontrolador

• Após a energização de um microcontrolador, é


gerado um sinal de reset que zera o Program Counter
(PC) que é o registrador que contém o endereço da
instrução que será executada, ou seja, posiciona o PC
no endereço inicial (geralmente 0000H). O programa
é executado a partir desse endereço.

11
Microcontrolador 80C51

• Membro da família MCS-51;


• Núcleo de todos os dispositivos MCS-51 (Atmel);
• Sistema de um chip único, que além do microprocessador de 8 bits
também contém:
▪ Memória de Programa e Memória de Dados
▪ Portas de I/O
▪ Comunicação Serial (UART)
▪ Contadores/ “Timers”
▪ Lógica para Controle de Interrupção

12
Microcontrolador 80C51
1. Características do Núcleo (Core)

• CPU de 8 bits otimizada para aplicações de controle;


• Capacidade de processamento booleano (lógica de um único bit);
• Endereçamento de até 64 Kbytes de memória de programa externa;
• Endereçamento de até 64 Kbytes de memória de dados externa;
• 4 Kbytes de memória de programa (FLASH ROM) interna;
• 128 bytes (ou 256) de memória de dados (SRAM) interna para uso geral ;
• 128 bytes para mapeamento dos registradores de funções especiais (SFR).

13
Microcontrolador 80C51
1. Características do Núcleo (Core) - continuação
• 4 portas paralelas de 8 bits (32 linhas de I/O bidirecionais endereçadas
individualmente)
• UART full duplex (Universal Asynchronous Reciever Transmitter)
• 2 Contadores / Temporizadores de 16 bits cada
• Estrutura de interrupção com níveis de prioridade
• Oscilador interno
• Versões disponíveis de 12 a 30 MHz (instruções de um ciclo, de 1 µs
a 400 ns ).

14
Microcontrolador 80C51
2. Arquitetura

• Arquitetura Von Neumann modificada


• Conjunto de Instruções do tipo CISC
• 111 instruções
• O conjunto de instruções inclui:
✓ Multiplicação e Divisão
✓ Bit set, reset, e test (Instruções Booleanas).

Freq : 12 a 30 MHz

15
Microcontrolador 80C51
Configuração dos pinos

16
Ciclo de Máquina do 8051
consiste em uma sequência de 6 estados, cada um formado por 2
períodos de clock
Um Ciclo de Máquina = Fcristal/12
Fcristal : 12 a 30 MHz

17
Ciclo de Máquina do 8051

18
Rotina de atraso (delay) que gera temporização para o
software no 8051

DJNZ Decrementa o dado presente no registrador ou o dado na posição de memória diretamente


endereçada e desvia se o resultado da operação for diferente de zero, sem afetar quaisquer flags.

19
Ciclo de Máquina do 8051

Instruções da família MCS-51 duram 12 ou 24 Tclk ( 1 ou 2 ciclos de máquina (CM)

Com exceção das instruções de multiplicação e divisão, MUL AB e DIV AB,


respectivamente, as quais duram 4 CM.

20
Ação de Reset Microcontrolador 80C51

O reset é ativado quando o pino de reset (pino 9) fica em nível alto


por mais de dois ciclos de máquina (24 ciclos de clock); essa ação é
realizada quando energiza-se o microcontrolador:

• O reset zera os registradores A, B, PSW, DPTR, PC e os registradores dos


temporizadores/contadores;
• O registrador SP (stack pointer) é carregado com o valor 07h e o banco 0
de registradores é ativado;
• Os ports são inicializados com o valor FFh, para ficarem configurados
como entrada;
• O registrador SCON é zerado e o registrador SBUF possui valor
indeterminado;

21
Ligação de Memória Externa
(EEPROM e RAM)

SEL/EESC-USP GRUPO DE SISTEMAS DIGITAIS 22


Microcontrolador 80C51
PINOS IMPORTANTES PARA INTERFACE COM MEMÓRIAS
EXTERNAS
RD : leitura na memória de dados externa
WR : escrita na memória de dados externa
PSEN : leitura na memória de programa externa
P0 : multiplexado com endereços (A0-A7) e dados (D0-D7)
P2 : endereços A8-A15
ALE: Address Latch Enable. Sinal para demultiplexar P0
EA : External Access Enable. Especifica o uso de memória de programa externa
ou interna

23
Microcontrolador 80C51
Organização das Memórias na família MCS-51

Até
60Kb
Até Até
64b 64Kb

4Kb

256 ou
384 bytes

24
Microcontrolador 80C51
Organização das Memórias na família MCS-51

MEMÓRIA DE PROGRAMA

Os 4 KB de ROM interna podem ser usados ou não, de acordo com o


estado do pino EA (External Access Enable):
▪ se EA = 0 até 64 KB de programa externo
▪ se EA = 1 4 KB de ROM interna e até 60 KB de
memória (EEPROM) de programa externa
Microcontrolador 80C51
Organização das Memórias na família MCS-51
MEMÓRIA DE PROGRAMA
Endereço das Memórias de Programa interna e externa

Se EA = 0 → toda a memória de programa é externa : 0000H a FFFFH


Microcontrolador 80C51
Organização das Memórias na família MCS-51
MEMÓRIA DE DADOS

▪ Externa (DADOS) expansão com até 64 K RAM


▪ Pode-se usar as memórias RAM interna e externa
simultâneamente
▪ As instruções de transferência de dados são diferentes para a
memória externa e interna
Microcontrolador 80C51
Mapeamento de Memória Externa

28
Microcontrolador 80C51
Informações sobre o 74373

Para leitura:
OE = ‘0’
E = ‘1’

29
Mapeamento da Memória Externa de
Programa
Mapeamento completo (64 Kbytes )

Memória de programa só pode ser lida. São sempre emitidos endereços de 16 bits. As
portas P0 e P2 são sacrificadas quando se usa memória de programa externa.

30
Memória de programa externa de programa
(EEPROM)
▪ Porta P2 8 bits mais significativos do endereço
▪ Porta P0 8 bits menos significativos do endereço multiplexado com
os dados

1. pino ALE (address latch enable) quando em nível lógico 1, indica a presença de
endereço no duto multiplexado (porta P0);
2. latch externo (ex.74373) é comandado pelo ALE :
se ALE = 1 bits A0-A7 são armazenados na saída do 74373 (OC em “0”)
3. pino PSEN (ativo em nível lógico 0) ligado no Output Enable da memória externa;
4. Opcode ou operandos lidos da EPROM pelo microprocessador, são colocados nos
pinos da porta P0, o qual é o duto D7-D0.

31
Mapeamento da Memória Externa de Dados
(RAM)
Mapeamento completo (64 Kbytes)

32
Memória de Dados externa
(RAM)
▪ Porta 2 8 bits mais significativos do endereço
▪ Porta 0 8 bits menos significativos do endereço + dados

1. pino ALE (address latch enable), quando em nível lógico 1, indica a presença
de endereço no duto multiplexado (P0)
2. latch externo (ex.74373), comandado pelo ALE:
se ALE = 1 bits A0-A7 são armazenados na saída do 74373 (OC em “0”);
3. pinos /RD e /WR quando em nível lógico “0” corresponde respectivamente a
operação de leitura e escrita, na memória RAM;
4. o dado lido da memória ou a ser gravado na memória é colocado no duto
AD0-AD7, o qual é a porta P0.

33
Memória de dados externa
Portas I/O para expansão da memória

Ativos só se a CPU está executando instrução de leitura


e escrita na memória de dados (RAM) externa
RD • Leitura da RAM RD = 0 WR = 1
PSEN = 1
WR • Escrita na RAM RD = 1 WR = 0

Gerados • Quando Leitura em EEPROM externa:


pelos pinos PSEN = 0 RD = 1 WR = 1
da Porta 3

34
Mapeamento da Memória Externa de
Dados e Programa

35
Microcontrolador 80C51

Ponteiros : registradores que contém endereço


• PC (Program Counter ): ponteiro de 16 bits para área de programa (EEPROM);
• DPTR ( Data Pointer) : ponteiro de 16 bits para área de dados em memória
EPROM ou RAM Externa;
• SP ( Stack Pointer) : ponteiro de pilha (8 bits), localizado na RAM Interna ( inicia
com endereço 07H, e incrementa o seu valor de uma unidade antes de guardar
um dado na pilha ( ponteiro incrementável);
• R0 : ponteiro de 8 bits para RAM interna;
• R1 : ponteiro de 8 bits para RAM interna.
Microcontrolador 80C51
Registradores de Uso do Programador

• A : acumulador de 8 bits
• B : registrador de 8 bits
• 8 registradores nomeados de R0 a R7
❖ há 4 bancos de registradores RO – R7, mapeados em RAM interna
❖ apenas um banco pode ser selecionado por vez
Existem outros registradores para a programação dos timers, do controlador da
serial e de interrupção. Esses registradores são mapeados na RAM dedicada aos
SFR.
Microcontrolador 80C51
Tipos de Instruções
As instruções do 8051 podem ser classificadas em 5 tipos diferentes:

• Transferência de dados;
Ex: MOV A, Rn

• Aritméticas;
Ex: SUBB A, #dado8

• Lógicas;
Ex: ANL A, Rn

• Booleanas;
Ex: CPL C

• Desvio;
Ex: LJMP addr
Microcontrolador 80C51
Modo de acesso às Memórias

Modo de acesso às memórias ou de endereçamento das memórias, é a forma como a


instrução, através de registradores, lê ou escreve na memória ou dispositivos de I/O.
Para acessar um dado, as instruções do microcontrolador 8051 contam com cinco
tipos de endereçamentos:
• Imediato
• Direto
• Indireto
• por Registradores ou por Registrador Específico
• Indexado.
Modo de acesso às memórias
Microcontrolador 80C51
•Endereçamento Imediato: quando uma constante é apresentada na instrução após #

•Endereçamento Direto: o endereço do operando é especificado por um campo de 8bits


na instrução. Somente RAM de dados interna e a região SFR pode ser diretamente endereçadas.

•Endereçamento Indireto: a instrução especifica um registrador que contém o endereço do


operando.
Ambas externa e interna RAM’s podem ser indiretamente acessadas.
Se o endereço possui 8bits, seu valor é armazenado em R0 ou R1.
Se o endereço for de 16bits, seu valor é armazenado no registrador DPTR.

•Endereçamento por Registradores: instruções que acessam registradores de R0 a R7 dos


bancos de registradores ou algumas instruções específicas a certos registradores. Tais instruções
são eficientes por eliminarem um byte de endereço. O próprio opcode é capaz de realizar tal
tarefa.

•Endereçamento Indexado: somente a Memória de Programas, cuja única operação é leitura,


pode ser acessada por esse modo. É usado para fazer leituras em tabelas na Memória de
Programas. Um registrador de 16bits (DPTR ) aponta para o início da tabela enquanto o
Acumulador é ajustado para a n-ésima posição da mesma. O endereço de uma entrada para a
tabela é formado pela soma entre o Acumulador

40
Modo de endereçamento (acesso) da
memória RAM interna 80C51
Endereçamento Imediato: quando uma constante é apresentada na instrução após #
Ex: MOV A,#0FH

41
Modo de endereçamento (acesso) da
memória RAM interna 80C51

42
Modo de endereçamento (acesso) da
memória RAM interna 80C51
•Endereçamento Direto: o endereço do operando é especificado por um campo
de 8bits na instrução. Somente RAM de dados interna e a região SFR pode ser
diretamente endereçadas. Ex : MOV A, 0FH

43
Modo de endereçamento (acesso) da
memória RAM interna 80C51

H H H

44
Modo de endereçamento (acesso) da
memória RAM interna 80C51

H H

45
Modo de endereçamento (acesso) da
memória RAM interna 80C51
Endereçamento Indireto: a instrução especifica um registrador que contém o
endereço do operando. Ambas externa e interna RAM’s podem ser indiretamente
acessadas.
Ex : MOV @R1,A

46
Modo de endereçamento (acesso) da
memória RAM interna 80C51

H H

47
Instrução para Memória de Programa
• Acesso a área de dados em EPROM
• É denominado modo de endereçamento Indexado, pois facilita o
acesso a tabelas.
• é endereçável pelo ponteiro de dados DPTR.
Instrução :
MOVC A,@A+DPTR

Exemplo:
MOV DPTR, #0F0BH
CLR A
MOVC A,@A+DPTR

48
Instruções para Memória de Dados Externa
• espaço de endereço de 64K bytes
• espaço todo é indiretamente endereçável pelo ponteiro de
dados DPTR.

Instruções :
movx a,@DPTR
movx @DPTR,a

49
Instruções para Memória de Dados INTERNA
(RAM interna)
Todas as instruções MOV
Exemplo:
❖ Endereçamento imediato: MOV Ri,#0F8H
❖ Endereçamento direto: MOV Ri,6FH
MOV 34H, 7FH
❖ Endereçamento indireto : MOV A, @R1
MOV A, @R0
❖ Endereçamento por registrador : MOV A,Ri
OBS: Ri pode ser escolhido de R0 a R7
50
Exemplo de Programa em Assembly pra o 8051
Programa que lê um dado na posição 2000h da memória de programa e soma com um dado armazenado na
memória externa na mesma posição e armazena na posição 6Fh da RAM interna.
ORG 0
MOV DPTR, #2000H ; ponteiro DPTR contém 2000H
CLR A ; limpa acumulador (A=0)
MOVC A,@A+DPTR ; valor do acumulador ( A=0) é somado com o valor do DPTR (2000H) e o conteúdo da
;posição de memória de programa EEPROM (2000H + 0 = 2000H) é carregado no
;acumulador (por ex: considerando que o conteúdo do endereço 2000H da EEPROM seja
;30H, A=30H)
MOV R1,A ; o valor do acumulador é copiado em R1 (R1= 30H)
MOVX A,@DPTR ; o conteúdo da posição apontada pelo DPTR (2000H) na RAM externa é copiado para o
;acumulador (por ex: considerando que o conteúdo da posição 2000H da RAM externa seja
;02H, então A=02H)
ADD A,R1 ; o conteúdo de R1(30H) é somado com o conteúdo do acumulador e o resultado é
;armazenado no acumulador, então A= 02H + 30H = 32H
MOV 6Fh,A ; o valor do acumulador é copiado para a posição 6Fh da RAM interna, então o conteúdo de
;6FH na RAM interna torna-se 32H
SJMP $ ; fim do processamento
ORG 2000H
DB 30H ; diretiva que define dado, no caso como 30H
END ; fim físico do programa
51
Exemplo de Programa em Assembly pra o 8051
Programa que lê um dado na posição 2000h da memória de programa e soma com um
dado armazenado na memória externa na mesma posição e armazena na posição 6Fh
da RAM interna.
FFFFH FFFFH

64K x 8 64K x 8

RAM
EEPROM
externa

FFH 256x8
30H 2000H RAM
2000H 02H interna
6FH 32H

00H
0000H 0000H
Memória de Memória de
Programa Dados Memória Interna
52
Exemplo de Programa em Assembly pra o 8051
memória EEPROM
Endereço em Conteúdo em Instrução
hexadecimal hexadecimal
0000 90
0001 20
MOV DPTR, #2000H
0002 00
0003 E4 CLR A
0004 93 MOVC A,@A+DPTR
0005 F9 MOV R1,A
0006 E0 MOVX A,@DPTR
0007 29 ADD A,R1
0008 F5
MOV 6Fh,A
0009 6F
000A 80
SJMP $
000B FE

2000 30

53
Conjunto de instruções e OPCODES do 8051

54
FIM

55

Você também pode gostar