Aula8_8051_Parte1_2023
Aula8_8051_Parte1_2023
Aula8_8051_Parte1_2023
▪ 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
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
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
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
10
Operação de um Microcontrolador
11
Microcontrolador 80C51
12
Microcontrolador 80C51
1. Características do Núcleo (Core)
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
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
19
Ciclo de Máquina do 8051
20
Ação de Reset Microcontrolador 80C51
21
Ligação de Memória Externa
(EEPROM e RAM)
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
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
34
Mapeamento da Memória Externa de
Dados e Programa
35
Microcontrolador 80C51
• 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
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