SE
L 04
15
Prof. Dr. Marcelo A. C. Vieira
SEL 0415 – INTROD. À ORGANIZAÇÃO DE COMPUTADORES
Aula 10 – MicrocontroladorIntel 8051 Parte 2
Mapeamento das memórias internas
SE
L 41
5
Gru
po d
e Si
stem
as D
igita
is
n 8051 oferece uma memória de dados interna, com ummínimo de 128 bytes para o usuário (uso geral)ØVantagem 1: rápido acesso aos dados e, em
muitas aplicações, pode eliminar a necessidade daRAM externa _ custo menor;
ØVantagem 2: áreas de RAM interna acessíveis bit abit _ útil para operações booleanas.
n Duto de endereçamento para a RAM interna → 8 bitsÆ256 bytes de memória (128 bytes para o usuário e
128 bytes para uso interno e para os registradoresde funções especiais
ÆModelo 8052 Æ há mais 128 bytes de RAM parauso geral (total de 384 bytes)
Memória de dados interna (RAM)
Gru
po d
e Si
stem
as D
igita
is
Memória de dados interna (RAM)
(REGISTRADORES DE USO GERAL)
128 BYTES INFERIORES DA RAM INTERNA
7Fh
.
.
.
00h
FFh
.
.
.
80h
(REGISTRADORES DE FUNÇÕES ESPECIAIS) 128 BYTES
SUPERIORES
Gru
po d
e Si
stem
as D
igita
is
Memória de dados interna (RAM)
(Registradores de Uso Geral)128 BYTES
SUPERIORES (modelo 8052)
(REGISTRADORES DE USO GERAL)
128 BYTES INFERIORES DA RAM INTERNA
7Fh
.
.
.
00h
FFh
.
.
.
80h
(REGISTRADORES DE FUNÇÕES ESPECIAIS) 128 BYTES
SUPERIORES
FFh
.
.
.
80h
Gru
po d
e Si
stem
as D
igita
is
Modos de Endereçamento
7Fh
.
.
.
00h
FFh
.
.
.
80h
Apenas Endereçamento
Direto
FFh
.
.
.
80h
Endereçamento Direto e Indireto
Apenas Endereçamento
Indireto
Registradores de Funções Especiais (SFR)
SE
L 41
5
Gru
po d
e Si
stem
as D
igita
is
7Fh
.
.
.
00h
FFh
.
.
.
80h
SFR
FFh
.
.
.
80h
• Registradores da CPU para configuração de operações, controle de periféricos, interrupção, temporizadores, portas de I/O, etc.
• 16 posições endereçáveis por bit
Registradores de Funções Especiais (SFR)
Gru
po d
e Si
stem
as D
igita
is
Registradores de Funções Especiais (SFR) – Mapa
Endereço
80889098A0A8B0B8C0C8D0D8E0E8F0F8
P0
P1
P2
P3
SP DPL DPH PCONTCON TMOD TL0 TL1 TH0 TH1
SCON SBUF
IE
IP
PSW
ACC
B
878F979FA7AFB7BFC7CFD7DFE7EFF7FF
Gru
po d
e Si
stem
as D
igita
is
Registradores de Uso Geral (GPR)
GPR
7Fh
.
.
.
00h
FFh
.
.
.
80h
FFh
.
.
.
80h• Registradores para uso do programador • 4 bancos de registradores Ri para facilitar a programação• 16 posições endereçáveis por bit
Gru
po d
e Si
stem
as D
igita
is
R7...R0
R7...R0
R7...R0
R7...R0
07...00
BANCO DE REGISTRADORES 0
BANCO DE REGISTRADORES 1
BANCO DE REGISTRADORES 2
BANCO DE REGISTRADORES 3
80 BYTES ENDEREÇÁVEIS
16 BYTES ENDE-REÇÁVEIS POR BIT
7F ... 7807 ... 00
0F...08
17...10
1F...18
2F...20
7F...30
Registradores de Propósito Geral (GPR)
• Formados pelos registradores R0 a R7• Seleção entre os Bancos feita pelos bits 3 e 4 do registrador PSW
Bits de controle do banco de
registradores
CY AC F0 RS1 RS0 OV – P
07
RS1 RS0 Banco Endereço0 0 0 00 – 07h0 1 1 08 – 0Fh1 0 2 10 – 17h1 1 3 18 – 1Fh
Banco de Registradores
Program Status Word - PSW
Gru
po d
e Si
stem
as D
igita
is
Memória de dados interna (RAM)
Área de dadosAs posições de 30h a 7Fh da RAM interna são disponíveis para leitura e escrita, através de endereçamento direto e indireto.
Bits de seleção em um
registrador especial
chamado de PSW
11
10
01
00 00h
07h
08h
10h
18h
20h
30h
0Fh
17h
1Fh
2Fh
7Fh
Banco 3
Banco 2
Banco 1
Banco 0
Gru
po d
e S
iste
mas
Dig
itais
nBits indicadores de estado:Ø São bits que são setados ou apagados (0 ou 1),
geralmente por hardware, dependendo do resultado de alguma operação do microcontrolador
ØAlguns podem ser setados ou apagados na instrução (por software)
ØAlgumas instruções testam flags para ver se elas devem ser executadas ou não
Ø flags típicas: CARRY, ZERO, OVERFLOWØ No 8051 as flags de estado da ULA ficam no
registrador PSW
ØHá também outras flags, como das interrupções, comunicação serial, temporizadores, etc.
Flags
Gru
po d
e Si
stem
as D
igita
is
Program Status Word - PSW
Flag de CARRY
Flag de CARRYAuxiliar*
(*) Para operações BCD
Flagauxiliar
Flag de OVERFLOW
C AC F0 RS1 RS0 OV – P
07
Flag de Paridade
Registradores de Funções Especiais (SFR)
Gru
po d
e Si
stem
as D
igita
is
Endereçamento por ByteSFR Endereçáveis por Byte
Todas as posições de memória RAM dos registradoresespeciais (80-FF) podem ser acessadas por byte (usando onome ou o endereço do registrador), mas apenas porendereçamento direto.
Ex.:a) Endereçamento Direto
MOV P0, #0AAh ou MOV 80h, #0AAh
MOV PSW, #00011000b ou MOV D0h, #00011000b
MOV SP, #00 ou MOV 81h, #00
Gru
po d
e Si
stem
as D
igita
is
§ Os SFR’s cujos endereços terminam em 0 ou 8h podem também ser endereçados a bit§ Modos de acesso ao bit:
(I) por endereço do Bit dentro do Byte:
1. SETB 80h.1; seta o bit 1 do endereço 80h (Porta 0)
2. CLR 80h.2 ; zera o bit 2 do endereço 80h (Porta 0)
SFR endereçáveis a bitP0
P1
P2
P3
TCON
SCON
IE
IP
PSW
ACC
B
80
889098A0A8B0B8C0C8D0D8E0E8F0F8
Endereçamento por Bit
Gru
po d
e Si
stem
as D
igita
is
§ Os SFR’s cujos endereços terminam em 0 ou 8h podem também ser endereçados a bit§ Modos de acesso ao bit:
(II) por nome :1. SETB P0.1 ; seta o bit 1 do endereço 80h (Porta 0)
2. CLR P0.2 ; zera o bit 2 do endereço 80h (Porta 0)
SFR endereçáveis a bitP0
P1
P2
P3
TCON
SCON
IE
IP
PSW
ACC
B
80889098A0A8B0B8C0C8D0D8E0E8F0F8
Endereçamento por Bit
Gru
po d
e Si
stem
as D
igita
is
§ Os SFR’s cujos endereços terminam em 0 ou 8h podem também ser endereçados a bit§ Modos de acesso ao bit:
(III) pelo endereço absoluto do bit :
1. SETB 81h ; seta o bit 1 do endereço 80h (Porta 0)
2. CLR 82h ; zera o bit 2 do endereço 80h (Porta 0)
SFR endereçáveis a bitP0
P1
P2
P3
TCON
SCON
IE
IP
PSW
ACC
B
80889098A0A8B0B8C0C8D0D8E0E8F0F8
Endereçamento por Bit
Registradores de Uso Geral (GPR)
SE
L 41
5
Gru
po d
e Si
stem
as D
igita
is
Endereçamento por ByteGPR Endereçáveis por Byte
Todas as posições de memória RAMdos registradores de uso geral (00-7F)podem ser acessadas por byte, porendereçamento direto ou indireto.
Ex.:a) Endereçamento Direto
MOV 30h,#0AAh
b) Endereçamento Indireto
MOV R0,#30H
MOV @R0,#0AAh
Gru
po d
e Si
stem
as D
igita
is
Endereçamento por Bit
Todos os bytes de endereço entre 20h – 2Fh também podem ser endereçados por bit
Ex. SETB 0Ah ou SETB 21h.2CLR 47h ou CLR 28h.7
GPR Endereçáveis por Bit
Gru
po d
e Si
stem
as D
igita
is
Instruções de operação direta com bit
CLR bit à zera o bit diretamente SETB bit à seta o bit diretamenteCPL bit à complementa o bit diretamente
ANL C,bit à AND entre o bit e o carryANL C,/bit à AND entre o complemento do bit e o carryORL C,bit à OR entre o bit e o carryORL C,/bit à OR entre o complemento do bit e o carryMOV C,bit à move o bit para o carryMOV bit,C à move o carry para o bitJB bit,rel à pula para o end. “rel” se bit = 1JNB bit,rel à pula para o end. “rel” se bit = 0JB bit,rel à pula para o end. “rel” se bit = 1 e zera o bit
Gru
po d
e Si
stem
as D
igita
is
Registradores de controle das portas de I/O
§ P0 (80h) Æ Porta 0§ P1 (90h) Æ Porta 1§ P2 (A0h) Æ Porta 2§ P3 (B0h) Æ Porta 3
• Contêm os dados das 4 portas deI/O do 8051 (cada porta tem umlatch associado de 8 bits)
•Todas podem ser endereçáveis abit (controle de cada pinoindividualmente)
• Escrever nesses registradores Æ altera o conteúdo nos pinos desaída do chip
• MOV P1,#01h
• Leitura Æ os registradores armazenam o estado presente nospinos do chip na posição desejada
• MOV A, P1
Gru
po d
e Si
stem
as D
igita
is
n PC (Program Counter): ponteiro de 16 bits paraárea de programa (ROM)
n DPTR (Data Pointer): ponteiro de 16 bits para áreade dados em memória RAM interna e externa
n SP (Stack Pointer): ponteiro de pilha (8 bits),determina a área da RAM interna dedicada à pilha.n R0: ponteiro de 8 bits para RAM interna ou externan R1: ponteiro de 8 bits para RAM interna ou externa
Ponteiros
Exemplos com instrução MOV:
Instruções para Memória de Dados Interna (RAM)
• Endereçamento imediato: MOV R0,#0F8H
• Endereçamento direto: MOV R3,6FHMOV 34H, 7FH
• Endereçamento indireto: MOV A, @R1MOV A, @R0
• Endereçamento por registrador: MOV A,R7
Exemplo de Programação #1
Gru
po d
e Si
stem
as D
igita
is
Exemplo de Programação 1
Ex. aplicativo:
§Suponhamos que, em função de um certo bit (P3.5), os leds nos 8 pinos da porta 1 sejam acesos sequencialmente conforme o estado daquele bit
8051
P1.0
P1.1...
P1.7
Vcc
Vcc
R
R
R
.
..
.. .
Vcc
P3.5
Vcc
Gru
po d
e Si
stem
as D
igita
is
Exemplo de Programação 1Software simbólico:
faz acumulador = 00000001
Lê o bitse P3.5 = 0 então
roda acumulador à esquerda (coloca o bit D0 em D1 e assim por diante, até colocar o bit D7 em D0)move acumulador para a porta 1perde um tempovolta para o “Lê o bit”
senão (isto é, se P3.5 = 1)
roda acumulador à direita (coloca o bit D7 em D6 e assim por diante, até colocar o bit D0 em D7)move acumulador para a porta 1perde um tempovolta para o “Lê o bit”
Gru
po d
e Si
stem
as D
igita
is
Software RealORG 0 ;define início do programa no end. 00hMOV A,#00000001B ;faz acumulador = 00000001 MOV P1, A ;move acumulador para a Porta 1
LEITURA: JNB P3.5, LEFT ;pula para LEFT se P3.5 = 0, senão próx. linha
RIGHT:RR A ;roda byte do Acumulador para direitaMOV P1, A ;move Acumulador para a Porta 1ACALL TEMPO ;gasta tempoSJMP LEITURA ;lê bit P3.5 novamente
LEFT:RL A ;roda byte do Acumulador para esquerdaMOV P1, A ;move Acumulador para a Porta 1ACALL TEMPO ;gasta tempoSJMP LEITURA ;lê bit P3.5 novamente
TEMPO:xxx ;sub-rotina para gastar tempoRET ;retorna da sub-rotinaEND ;fim do programa (compilador)
Gru
po d
e Si
stem
as D
igita
is
Como fica na Memória ROM (Flash) do 8051?
Exemplo de Programação #2
Exemplo # 2Usando ponteiro de 8 bits
ORG 0 ; define início do programa no endereço 00hMOV R0, #30h ; carrega ponteiro com endereço 30hCLR A ; apaga conteúdo do acumulador
SOMA: ADD A, @R0 ; soma o valor apontado pelo ponteiro
INC R0 ; incrementa ponteiroCJNE R0, #34h, SOMA ; verifica se o ponteiro chegou no end. 34h
FIM: SJMP FIM ; fim lógico do programa
Gru
po d
e S
iste
mas
Dig
itais
Gru
po d
e Si
stem
as D
igita
is
Como fica na memória ROM (Flash) no 8051?
Gru
po d
e Si
stem
as D
igita
is
Como fica a memória RAM
após a execução do programa?
Rotinas de Temporização
SE
L 41
5
Gru
po d
e Si
stem
as D
igita
is
Gru
po d
e Si
stem
as D
igita
is
CICLO DE MÁQUINA
Clock e Temporização no 8051
n Consiste numa seqüência de 6 estados, cada um formado por dois períodos de CK Æ por isso:
1 ciclo de máquina = 12 períodos de CK
Gru
po d
e Si
stem
as D
igita
is
Gru
po d
e Si
stem
as D
igita
is
CICLO DE MÁQUINA
Clock e Temporização no 8051
n Instruções da família MCS-51 duram 12 ou 24 TCK (1 ou 2 Ciclos de máquina - CM)
n Exceção Æ MUL AB e DIV AB (usam 4 CM)
Gru
po d
e Si
stem
as D
igita
is
Gru
po d
e Si
stem
as D
igita
is
Gru
po d
e Si
stem
as D
igita
is
Gru
po d
e Si
stem
as D
igita
is
Exemplo de Programação #3
Gru
po d
e Si
stem
as D
igita
is
• Fazer o mesmo exemplo #1 do acendimentosequencial de LEDs considerando agora umintervalo de 1s entre cada acendimento;
• Considerar que o 8051 está alimentado com umcristal de 1,0 MHz.
Exemplo de Programação
Gru
po d
e Si
stem
as D
igita
is
Exemplo de Programação
Ex. aplicativo:
§Suponhamos que, em função de um certo bit (P3.5), os leds nos 8 pinos da porta 1 sejam acesos seqüencialmente conforme o estado daquele bit;
§ Considerar agora um atraso de 1s na seqüência
8051
P1.0
P1.1...
P1.7
Vcc
Vcc
R
R
R
.
..
.. .
Vcc
P3.5
Vcc
Gru
po d
e Si
stem
as D
igita
is
Exemplo de ProgramaçãoSoftware simbólico:
faz acumulador = 00000001
Lê o bitse P3.5 = 0 então
roda acumulador à esquerda (coloca o bit D0 em D1 e assim por diante, até colocar o bit D7 em D0)move acumulador para a porta 1perde um tempo – 1s com clock de 1MHzvolta para o “Lê o bit”
senão (isto é, se P3.5 = 1)
roda acumulador à direita (coloca o bit D7 em D6 e assim por diante, até colocar o bit D0 em D7)move acumulador para a porta 1perde um tempo – 1s com clock de 1MHzvolta para o “Lê o bit”
Gru
po d
e S
iste
mas D
igitais
Cálculos para atraso de 1sClock (cristal) de 1 MHz :
§ Tcristal = 1 / f = 1/106
= 1μs
§ Ciclo de máquina (M) = 12 x Tcristal = 12μs
§ fcristal = 1MHz
§ fciclo de máquina = 1MHz / 12 = 0,08333 MHz
§ Ciclo de máquina (M) = 1 / fciclo de máquina = 1 / 0,08333 MHz =
12μs
Gru
po d
e S
iste
mas
Dig
itais
Cálculos para atraso de 1sNúmeros de ciclos de máquina :
Rotina de 16 bits (R0 e R1):
§ C = ((((R0 x 2) +3) x R1) +3)
§ Δt = C x M = 1s - como M = 12μs, temos:
§ C = 1/12μ ~ 83333 ciclos
§ Escolho um valor para R0 e determino R1...
§ Fazendo R0 = 250 e R1 = 166
§ C = 83501 ciclos \ Δt = C x M = 83501 x 12μs ~ 1,002s
Gru
po d
e S
iste
mas
Dig
itais
Software Real (com atraso)ORG 0MOV A,#00000001B ;faz acumulador = 00000001 MOV P1, A ;move acumulador para a Porta 1
LEITURA: JNB P3.5, LEFT ;pula para LEFT se P3.5 = 0, senão próx. linha
RIGHT:RR A ;roda byte do Acumulador para direitaMOV P1, A ;move Acumulador para a Porta 1ACALL TEMPO ;gasta tempoSJMP LEITURA ;lê bit P3.5 novamente
LEFT:RL A ;roda byte do Acumulador para esquerdaMOV P1, A ;move Acumulador para a Porta 1ACALL TEMPO ;gasta tempoSJMP LEITURA ;lê bit P3.5 novamente
TEMPO: ;sub-rotina para gastar 1sMOV R1, #166 ;considerando cristal de 1MHz
LOOP: MOV R0, #250DJNZ R0, $DJNZ R1, LOOPRET ;retorna da sub-rotinaEND ;fim do programa para o compilador
Exemplo de Programação #4
SE
L 41
5
Uso da memória de programa para
armazenamento de dados não voláteis
Gru
po d
e Si
stem
as D
igita
is
• Utiliza a memória de programa (ROM) para armazenar dados
• É denominado modo de endereçamento indexado• Utilizado para armazenamento de tabelas (dados não voláteis)
• É endereçável pelo ponteiro de dados DPTR (16 bits)
• É necessário utilizar uma diretiva do compilador para armazenar atabela de dados (o compilador deve saber diferenciar o que éinstrução e o que é dados parar escrever na memória de programa)
Instrução:
MOVC A,@A+DPTR
Instrução para Memória de Programa
Exemplo:MOV DPTR, #0F0BHCLR AMOVC A,@A+DPTR
Gru
po d
e Si
stem
as D
igita
is
ORG 0MOV DPTR, #TABELA
LOOP:MOV A, P0MOVC A, @A+DPTRMOV 30H, ASJMP LOOP
TABELA: DB 0,6,10,12,14,16,17,18
Exemplo de Programa
Tabela de conversão para cálculo de “20*log(num+1)”, sendo num o valor colocado na porta P0
Gru
po d
e Si
stem
as D
igita
is
Como fica na memória ROM (Flash) no 8051?
Algumas Instruções - 8051
• MOV• MOVC• MOVX• ADD• SETB• CLR• SJMP• ACALL• INC • DEC• CPL
• ORG• EQU• END• DB
diretivas do compilador
Ver apostila na página da disciplina: Capítulos 10 e 11
• JB• JNB• RET• RETI• DJNZ• NOP• RR• RL• PUSH• POP
Gru
po d
e Si
stem
as D
igita
is
FIM