MICROCONTROLADOR8051
Notas de Aula (v.2014)
Prof. André R. Hirakawa
Prof. Paulo S. Cugnasca
Prof. Carlos E. Cugnasca
ARQUITETURA 8051
APLICAÇÕES MAIS FREQUENTES
SISTEMAS COMPACTOS: � MEMÓRIAS ROM / RAM INTERNAS� E/S INTERNAS:
� 1 CANAL SERIAL (CONSOME P3.0 E P3.1)� 2 INTERRUPÇÕES EXTERNAS (CONSOMEM P3.2 E P3.3)� 2 TIMERS/CONTADORES (PODEM CONSUMIR P3.4 E P3.5)� 26 LINHAS E/S (4x8 – 2 – 2 – 2):
� P0 (2 CARGAS TTL), � P1, P2, P3 (1 CARGA TTL)
� MODOS DE BAIXO CONSUMO
APLICAÇÕES DE MÉDIO PORTE
EXPANSÃO DE MEMÓRIA:� ROM: 0000h a FFFFh →→→→ até 64k bytes
� 80C31: só ROM EXTERNA� 80C51:� Caso EA/ = 1: 4kbytes INT. e até 60k bytes EXT.� Caso EA/ = 0: só ROM EXTERNA
� RAM: 0000h a FFFFh →→→→ até 64k bytes, além da RAM INTERNA
� E/S INTERNAS: parte consumida pelas expansões (sobra P1)
� EXPANSÃO DE MEMÓRIA: � P0 →→→→ AD0-7 � P2 →→→→ A8-15 � P3.6 →→→→ WR/ , P3.7 →→→→ RD/
� Expansão de E/S: mapeada no espaço de memória RAM.
� EX.: Display, Portas Paralelas, Conversor A/D
APLICAÇÕES DE MÉDIO PORTE
RAM INTERNA
� 128 bytes� Registros Especiais
FFh
80h
255
128SFR
Registros de Funções Especiais
128 bytes
7Fh
00h
127
0
RAM Interna de Uso Geral &
Pilha
128 bytes
RAM INTERNA E PILHA7Fh
30hBytes Endereçáveis
2Fh
20hBits e Bytes Endereçáveis
1Fh
18h
R7...R0
Banco 3 Seleção do Banco de Registradores: por meio de 2 bits do PSW
Ex.: Programa usa Banco 0Interrupções Usam o Banco 1
Observação: R0, R1 podem ser usados com Registradores de Índice
17h
10h
R7...R0
Banco 2
0Fh
08h
R7...R0
Banco 1
07h
00h
R7...R0
Banco 0
REGISTROS ESPECIAIS - SFRF8 FFF0 B F7E8 EFE0 ACC E7D8 PSW DFD0 D7C8 CFC0 C7B8 IP BFB0 P3 B7A8 IE AFA0 P2 A798 SCON SBUF 9F90 P1 9788 TCON TMOD TL0 TL1 TH0 TH1 8F80 P0 SP DPL DPH PCON 87
↓ ↓ ↓ ↓ bit e byte endereçáveis
REGISTRADOR PSW
PSW: 7 6 5 4 3 2 1 0
CY AC F0 RS1 RS0 OV P
CarryCarry
Auxiliar
UserDefini-
tion
00: Banco 001: Banco 110: Banco 211: Banco 3
OverflowExpan-
sãoFutura
Pari-dade
FORMAS DE ACESSO À MEMÓRIA
� ROM: só parar programas e leitura de constantes
� Acesso à ROM Externa: gera sinal PSEN/ (~RD/ para ROM)
� Forma de se ler constantes da ROM: usar o Registrador DPTR
� EX.: única maneira de se ler constantes da ROM Externa
MOV DPTR, #dado16 (DPTR) ←←←← dado16
MOVC A, @A + DPTR (A) ←←←← conteúdo end. x
end. x
# - Endereçamento Imediato @ - Endereçamento Indireto
FORMAS DE ACESSO À MEMÓRIA
� RAM Interna e RAM Externa (gera RD/ e WR/):� Endereços iguais, mas acessadas com instruções diferentes
� EX.: Endereço 20h Interno – modo de Endereçamento Direto
MOV 20h, A (20h) ←←←← (A)
� EX.: Endereço 20h Externo – modo de Endereçamento Indexadoo Usando Ri (de 8 bits, mais rápido, para i=0,1)
MOV R0, #20h (R0) ←←←← 20h
Escrita MOVX @R0, A (20h) ←←←← (A) ... ... ... ...
Leitura MOVX A, @R0 (A) ←←←← (20h)
FORMAS DE ACESSO À MEMÓRIA
� Qualquer posição de memória: Usar DPTR (16 bits)
MOV DPTR, #dado16 (DPTR) ←←←← dado16
Escrita MOVX @DPTR, A ((DPTR)) ←←←← (A)
... ... ... ...
Leitura MOVX A, @DPTR (A) ←←←← ((DPTR))
... ... ... ...
PILHA
� Sempre na memória RAM Interna� Ponteiro da Pilha: SP (81h)� PUSH / POP: 1 byte ; Endereço de Retorno: 2 bytes
20H2FH
30H31H5FH
Base da Pilhap.ex.: 5FH
Inserção: SP + 1Remoção: SP – 1
60H
. . .
7FH
MODOS ESPECIAIS DE FUNCIONAMENTO
� Apenas para as versões CHMOS � Ex.: 80C51BH, 80C31BH, 87C51, 80C52BH, ...
MODO “IDLE”
� A UCP PÁRA� RAM E DEMAIS COMPONENTES CONTINUAM ATIVOS →→→→
CONSUMO CAI PARA 15% DO ORIGINAL� PORTAS E/S MANTÊM O ÚLTIMO ESTADO� ALE E PSEN/ = 1
� FORMA DE ENTRADA DESSE MODO:� BIT 0 PCON ←←←← 1� FORMAS DE SAÍDA DESSE MODO:
� a. POR INTERRUPÇÃO HABILITADA� 1. COLOCAR 0 NO BIT 0 DE PCON (TIRA DE IDLE)� 2. DESVIA P/ TRATAMENTO INTERRUPÇÃO� 3. RETI LEVA PARA A INSTRUÇÃO SEGUINTE À QUE COLOCOU A UCP EM
IDLE� b. RESET:
� IDEM 1 E 3: NÃO VAI PARA A POSIÇÃO 0000h !
MODO “POWER DOWN”
� TODAS AS ATIVIDADES DA UCP SÃO SUSPENSAS� A RAM INTERNA MANTÉM OS DADOS� ALE, PSEN/ VÃO PARA “0”� PORTAS E/S: MANTÉM ÚLTIMO ESTADO (COLOCAR “0” ,
SE POSSÍVEL, POIS REDUZ O CONSUMO)
� CONSUMO:� 10mA, E Vcc PODE SER REDUZIDO A ~ 2.0 V
� FORMA DE ENTRADA DESSE MODO:� BIT 1 PCON ←←←← 1
� FORMA DE SAÍDA DESSE MODO:� RESET:� RECOMEÇO DO PROGRAMA EM 0000h
80C51 – ENTRADAS E SAÍDAS
� 4 PORTAS DE ENTRADA E SAÍDA, ENDEREÇADAS POR BYTE OU POR BIT, BIDIRECIONAIS.
� ÚTEIS PARA CONTROLAR PERIFÉRICOS, IMPLEMENTAÇÃO DE “HANDSHAKING”, FUNÇÕES LÓGICAS, PORTAS PARALELAS, ETC.
P0 - END. 80h (P0.0 – 80h, P0.1 – 81h, ... , P0.7 – 87h):
• NÃO DISPONÍVEL EM CASO DE EXPANSÃO EXTERNA DE MEMÓRIA (AD0-AD7)
• SUPORTA 8 CARGAS TTL LS. • NÃO POSSUI RESISTORES DE “PULL-UP” INTERNOS.
CONFIGURAÇÃO DAS PORTAS
P1 - END. 90h (P1.0 – 90h, P1.1 – 91h, ... , P1.7 – 97h):
� SUPORTA 4 CARGAS TTL LS. � POSSUI RESISTORES DE “PULL-UP” INTERNOS.
80C51 – ENTRADAS E SAÍDAS
P2 - END. A0h (P2.0 - A0h, P2.1 - A1h, ... , P2.7 - A7h):
• NÃO DISPONÍVEL EM CASO DE EXPANSÃO EXTERNA DE MEMÓRIA (A8-A15).
• SUPORTA 4 CARGAS TTL LS. • POSSUI RESISTORES DE “PULL-UP” INTERNOS.
80C51 – ENTRADAS E SAÍDAS
P3 - END. B0h (P3.0 - B0h, P3.1 – B1h ... , P3.7 – B7h):
� ALGUNS BITS NÃO DISPONÍVEIS NO CASO DE USO DOS RECURSOS PORTA SERIAL E TIMERS.
� SUPORTA 4 CARGAS TTL LS. � POSSUI RESISTORES DE “PULL-UP” INTERNOS.
BIT P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0
SINAL RD/ WR/ T1 T0 INT1/ INT0/ TXD RXD
END. B7H B6H B5H B4H B3H B2H B1H B0H
� ALGUMAS INSTRUÇÕES LEEM O PINO DA PORTA:MOV C,P1.5 ; Flag Carry ←←←← P1.5
� O NÍVEL LÓGICO PODE ESTAR DEGENERADO (CARGAS MAIS ALTAS, P.EX., TRANSISTORES). NESSE CASO, PODE-SE LER A SAÍDA DO LATCH:
� INSTRUÇÕES QUE LEEM E MODIFICAM (POR EX., COMPLEMENTO) LEEM A SAÍDA DO LATCH:
CPL P1.5 ; Complementa P1.5
� 1 CANAL SERIAL� 2 TIMERS/CONTADORES� EXPANSÕES: MAPEADAS NA MEMÓRIA RAM.
� EXEMPLOS: DISPLAYS, PORTAS DE 8 BITS ADICIONAIS, CONVERSORES AD E DA.
80C51 – ENTRADAS E SAÍDAS
8051 – INTERRUPÇÕES
� INT0/ (MAIS PRIORITÁRIA) E INT1/: BITS DA PORTA P3� INTERRUPÇÕES VETORADAS, COM VETOR FIXO NA
MEMÓRIA DE PROGRAMA� HABILITAÇÃO E DESABILITAÇÃO INDIVIDUAL: BITS DO IE� INTERRUPÇÕES POR SOFTWARE: NÃO POSSUI (TRAP OU
RST), MAS PODEM SER SIMULADAS (ESCRITA NO REGISTRADOR DE INSTRUÇÕES). USO: POR EXEMPLO, CHAMADAS AO SISTEMA OPERACIONAL.
� PRIORIDADES – A INTERRUPÇÃO DE PRIORIDADE MAIOR INTERROMPE A INTERRUPÇÃO DE PRIORIDADE MENOR:
� INT0/, TIMER 0, INT1/, TIMER 1, CANAL SERIAL� MASCARAMENTO PERMITIDO – REGISTRADOR IE� PERMITE A CRIAÇÃO DE DOIS GRUPOS DE PRIORIDADE
(“NESTING”):� INTRi: SENSÍVEL À BORDA DE DESCIDA OU A NÍVEL ("0"),
CONFIGURÁVEL
VETOR DE INTERRUPÇÕES
0000h RESET
...
0003h INT0/
...
000Bh TIMER 0
...
0013h INT1/
...
001Bh TIMER 1
...
0023h CANAL SERIAL
...
ESTRUTURA DAS INTERRUPÇÕES
REGISTRADOR TCON (88h)BIT TCON.7 TCON.6 TCON.5 TCON.4 TCON.3 TCON.2 TCON.1 TCON.0
SINAL TIMERS 0 E 1 IE1 IT1 IE0 IT0
END. 8Fh 8Eh 8Dh 8Ch 8Bh 8Ah 89h 88h
ITi = “1”: INTi\ ACEITA NA TRANSIÇÃO DE “1” PARA “0”, DEVENDO PERMANECER EM 0 POR PELO MENOS 12 PERÍODOS DE CLOCK
ITi = “0”: INTi\ ACEITA SE NA AMOSTRAGEM ESTIVER EM “0” (DEVE VOLTAR PARA “1” ANTES DO RETORNO DA ROTINA DE TRATAMENTO
IEi: O HARDWARE INTERNO O FAZ = “1” QUANDO DETECTADA UMA TRANSIÇÃO DE “1” PARA “0” EM INTi\, E = “0” QUANDO TRATA INTi\
REGISTRADOR IE (A8h)
BIT IE.7 IE.6 IE.5 IE.4 IE.3 IE.2 IE.1 IE.0
SINAL EA ES ET1 EX1 ET0 EX0
END. AFh AEh ADh ACh ABh AAh A9h A8h
REGISTRADOR IP (B8h)
BIT IP.7 IP.6 IP.5 IP.4 IP.3 IP.2 IP.1 IP.0
SINAL PS PT1 PX1 PT0 PX0
END. BFh BEh BDh BCh BBh BAh B9h B8h
TIMER/COUNTER� 2 Timer/Counter de 16 bits
� Várias formas de entrada
� Geração interrupção
� Timer 1 utilizado para gerar o Baud rate da UART