s - Voltar

Transcrição

s - Voltar
Curso de Microcontroladores
Família MCS51® - Hardware e Software
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
1
Tópicos a serem estudados
1. Introdução
•
Retrospectiva
2. Apresentação da Família de Microcntroladores-MCS51
[Algumas variações: 89S5131-44pinos; 89C51-40pinos;
89C1051; 89C2051 e 89C4051-20pinos]
1. Características
2. Pinagem
3. Arquitetura
3. Descrição de hardware e Software
1. Portas de E/S - [I/O]
2. Organização de memória/Set de Instruções/Programação
Estruturada
3. Barramento de Expansão
4. Sistema de interrupções/Programação da Interrupção
5. Timer/Counter - Programação
6. Outras Características/Programação/Informações Extras
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
2
Microcontroladores - Família-MCS51®
Introdução
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
3
Microcontrolador - Família-MCS51® - Introdução
• 1976 - Família MCS - 48
• Início da tecnologia de microcontroladores;
• Microcontroladores 8048, 8748 e 8035;
• Orientada para aplicações de controle.
• Anos 80 – Família MCS- 51
• Família 8048 estendida;
• Microcontroladores 8051, 8751 e 8031;
• Maior performance sobre a MCS®- 48.
• Na atualidade: Família MCS- 51 CHMOS
•
•
•
•
03/09/2012
80C51 Compatível com o original 8051;
Microcontroladores 80C51, 87C51, 89C51 e 80C31
Modos de controle para redução de potência.;
Referenciada como 80C51.
Prof. Corradi - www.corradi.junior.nom.br
4
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
Características;
Pinagem;
Arquitetura.
Apresentação:
Microcontrolador - Família-MCS51®
5
Apresentação do 80C51- Características Básicas
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Memória interna de programa (ROM) de 4KB, ou mais dependendo da versão do chip - [40
pinos] e 1KB a 4KB - [20 pinos];
Memória interna de dados (RAM) de 128 bytes, mais 128 bytes de registradores especiais
[SFR] = 80C51. No 80C52 temos mais 128 bytes;
32 linhas de E/S - [I/O], para 40 pinos e 15 I/O para 20 pinos;
2 contadores/temporizadores de 16 bits - [ podendo chegar até 3 C/T para outras versões];
5 fontes de interrupções - [ podendo chegar até 11 para outras versões];
Porta serial programável, [ possui outras formas de comunicação serial: CAN, I2C, USB];
Espaço de memória de programa externa até 64KB, [expansão usando P0 e P2];
Espaço de memória de dados externa até 64KB, [expansão usando P0 e P2];
Níveis lógicos CMOS compatíveis com TTL;
2 Modos para redução de potência: Power Down e Idle
Oscilador interno;
Velocidade de 4 MHz a 50 MHz;
Disponível nas versões: Flash (reprogrammable), Flash ISP (In-System Programmable, Flash
ISP - Single Cycle Core, Lighing MCUs, MP3 Reader MCUs, OTP (One-Time Programmable),
ROM, EPROM. EEPROM, ROMless, Smart Card Reader MCUs e USB MCUs;
Disponível nos encapsulamentos DIP e PLCC;
Processador booleano.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
6
Apresentação do 80C51 - Pinagem
Vcc – Tensão de alimentação do chip, 5V ±
10%, Pino 40.
Aspecto
Vss – Terra do circuito, Pino 20.
Rst – Entrada de “reset” do chip. É ativo
em nível lógico 1.
XTAL1 e XTAL2 respectivamente, do
Pinos 18 e 19.
P0.0
P1.0
P2.0
P3.0
a
a
a
a
P0.7
P1.7
P2.7
P3.7
-Porta
-Porta
-Porta
-Porta
Entrada e saída,
oscilador interno,
0, Pinos 39 a 32;
1, Pinos 1 a 8;
2, Pinos 21 a 28;
3, Pinos 10 a 17;
PSEN – Pulso de leitura para memória de
programa externa, pino 29;
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
7
Apresentação do 80C51 - Pinagem
ALE/Prog – Dupla função, pino30.
o ALE - Saída do pulso de habilitação para o
armazenamento no latch externo do byte de
endereço de baixa ordem, durante acessos à
memória externa (Address Latch Enable);
o PROG – Entrada para
o pulso
programação da EPROM (Pino 30);
de
EA/Vpp – Dupla função, pino 31.
o EA – Entrada que Permite selecionar
memória de programa interna ou externa
(4KB):
EA=1: Memória de programa interna;
EA=0: Memória de programa externa.
o Vpp – Entrada p/ Tensão de alimentação
durante a programação da EPROM (12,75V);
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
8
Apresentação do 80C51 – Arquitetura Básica
Interrupções Interrupções
internas
externas
IE
Memória de
Memória de
Programa
Controle de
Interrupção
IP
TCON
Dados
(256 bytes RAM)
(4KB)
TMOD
TH0
TL0
C/T 0 – 16 bits
T0
TH1
TL1
C/T 1 – 16 bits
T1
CPU
ULA - 8 bits
Registros associados
( A,B, PSW, SP e PC )
P
C
O
N
Latch
P0
Controle de
barramento
Oscilador
Latch
P1
Latch
P2
Latch
P3
Portas de E/S
(32 linhas)
PSEN ALE
Memória
RD
SBUF - Tx
SBUF - Rx
Porta Serial
WR
P0
P2
BARRAMENTO
DADOS\ENDEREÇOS
03/09/2012
S
C
O
N
P1
P3
TXD RXD
FUNÇOES SECUNDÁRIAS
Prof. Corradi - www.corradi.junior.nom.br
9
Apresentação do 80C51 - Arquitetura
•Mais Detalhes
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
10
Apresentação do 80C51 - Arquitetura
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
11
Apresentação do 80C51 - Arquitetura
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
12
Microcontrolador 80C51
Obs.: Atualmente as MCU’s mais utilizados são:
- AT89CXXXXX [ATMEL]
- P89CXXXXX [PHILIPS]
Hardware:
Portas de E/S - [I/O];
Organização de memória;
Barramento de expansão;
Sistema de Interrupções.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
13
Hardware do 80C51
Portas de E/S - [I/O]
1. Organização;
2. Função;
3. Estrutura básica dos bits.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
14
Hardware 80C51 – Portas de E/S [I/O]
• Organização
–
O 80C51 possui 32 linhas de E/S organizadas como 4 portas
paralelas bidirecionais de 8 bits e nomeadas da seguinte forma:
P0, P1, P2 e P3;
• Função
– Funções básicas de E/S;
– Função de barramento de endereços e de dados (P0 e P2);
– Funções especiais associadas aos módulos internos do
80C51 (P3).
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
15
Hardware do 80C51 – Portas de E/S
•O programador
Processo de gravação
Esquema elétrico
03/09/2012
8
0
C
5
1
Prof. Corradi - www.corradi.junior.nom.br
16
Hardware do 80C51 – Portas de E/S
ESTRUTURA DOS BITS DAS PORTAS DE E/S
Bit da Porta 0
Bit da Porta 2
B2
B2
B1
B1
Mais detalhes
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
17
Hardware do 80C51 – Portas de E/S
ESTRUTURA DOS BITS DAS PORTAS DE E/S
Bit da Porta 1
Bit da Porta 3
Saída
alternativa
B2
B2
B1
B1
Entrada
alternativa
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
18
Hardware do 80C51
Organização de memória/Set de Instruções
1. Memória de programa;
2. Memória de dados:
03/09/2012
–
256 bytes de RAM; [128 bytes uso geral, mais 128 de SFR.
–
Área de registradores especiais [SFR - mais 128 bytes].
Prof. Corradi - www.corradi.junior.nom.br
19
Hardware do 80C51 – Organização de Memória
ESTRUTURA DA MEMÓRIA DO 80C51
MEMÓRIA DE PROGRAMA
64KB
PC ( 16 bits)
Memória
de
program
a
externa
MEMÓRIA DE DADOS
Apenas
implementado no
80C52
Upper
Área de
registros
especiais
4096
EA=1
Interna
EA=0
0000
Externa
Memória
RAM
externa
255
255
128
127
64 KB
Memória
Interna
(128)
128
Lawer
0
00
RD WR
PSEN
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
20
Hardware do 80C51 – Organização de Memória
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
21
Hardware do 80C51 – Organização de Memória
MEMÓRIA INTERNA DE DADOS
(128 bytes de RAM)
7FH
255 (FFH)
128 (80H)
Área de
registradores de
funções especiais
Área de bytes
endereçáveis
Área de bit e
byte endereçáveis
Banco 3
127 (7FH)
Memória de dados
(RAM de 128 bytes)
17H
10H
0FH
0
30H
2FH
Banco com 8
registradores
R7
20H
1FH
R6
18H
R4
Banco 2
R5
R3
R2
R1
Banco 1
07H
Banco 0
R0
07H
00H
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
22
Hardware do 80C51 – Organização de Memória
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
23
Hardware do 80C51 – Organização de Memória
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
24
Hardware do 80C51 – Organização de Memória
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
25
03/09/2012
Exemplo: AT89S8252
Prof. Corradi - www.corradi.junior.nom.br
26
Hardware do 80C51 – Organização de Memória
Hardware do 80C51 – Organização de Memória
•Mais detalhes
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
27
Hardware do 80C51 – Organização de Memória
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
28
Hardware do 80C51 – Organização de Memória
ÁREA DE REGISTRADORES DE FUNÇÕES ESPECIAIS
Registrador A:
– Registro de 8 bits que armazena um operando fonte e também o
resultado de uma operação;
Registrador B:
– Registro de 8 bits utilizados nas operações de multiplicação e
divisão e também para propósitos gerais;
Registrador PSW [Program Status Word]:
– É a palavra de status do programa. Seus bits indicam quais as
ocorrências na última operação lógica realizada. Permite selecionar o
banco de registradores a ser acessado.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
29
Hardware do 80C51 – Organização de Memória
ÁREA DE REGISTRADORES DE FUNÇÕES ESPECIAIS
FORMATO DO REGISTRADOR PSW
CY
AC
F0
BITS DE FLAGS
RS1
RS0
OV
-
P
BITS DE SELEÇÃO DOS BANCOS
RS1
RS0
Banco selecionado
Carry auxiliar
0
0
0
F0
Definido pelo usuário
0
1
1
OV
overflow
1
0
2
P
Paridade do Acumulador
1
1
3
CY
Carry
AC
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
30
Hardware do 80C51 – Organização de Memória
ÁREA DE REGISTRADORES DE FUNÇÕES ESPECIAIS
Registrador DPTR
–
É um registrador de 16 bits utilizado em endereçamento indireto na
memória de programa e na memória de dados externa. Este registro é
um concatenação dos registros DPH e DPL.
Registrador das Portas de E/S [P0, P1, P2 e P3]
– São posições da memória RAM [SFR] associadas a cada bit das
portas de E/S.
Apontador de Pilha – SP [STACK POINTER]
–
Registro de 8 bits que contém o endereço do último dado armazenado
na pilha (stack) ou o endereço do próximo dado a ser retirado da pilha.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
31
Hardware do 80C51 - Após o RESET
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
32
MCS-51 – Introdução ao Software
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
33
Introdução a Linguagem Assembly
•“Linguagem assembly” e “assembler” [ou COMPILADOR] são coisas diferentes. A
primeira representa um conjunto de regras usadas para escrever um programa para
um determinado microcontrolador e a outra, é um programa que “roda” em um
computador pessoal que traduz a linguagem assembly para uma linguagem de zeros e
uns e/ou um formato em hexadecimal [formato INTEL]. Um programa escrito em
“zeros” e “uns” diz-se que está escrito em “linguagem de máquina”.
• O formato de uma instrução normalmente é retangular dividido em campos de bits.
• Cada campo pode assumir o valor:
• Op-code [código de operação = Set de Instruções], (primeiro campo)
• Valor de uma constante
• Endereço de memória
• Endereço/nome de um registrador
10001
op-code
03/09/2012
10000001
00001111
operando
Prof. Corradi - www.corradi.junior.nom.br
34
Introdução a Linguagem Assembly
• Mostrar
• O formato da Instrução - Formato INTEL®
FONTE
DESTINO
op-code
operando
DESTINO
op-code
03/09/2012
FONTE
FONTE
operando
Prof. Corradi - www.corradi.junior.nom.br
35
Introdução a Linguagem Assembly
•Rn - Registrador R0 – R7 do banco de registradores selecionado.
•direto - 8-bits de endereço da posição da RAM de dados interna. Podem ser
referentes tanto à RAM interna (0–7F) como ao espaço SFR (80 - FF).
•@Ri - 8-bits da RAM interna de dados (00 - FF) endereçada indiretamente
através de R0 ou R1 do banco de registradores selecionado.
•#dado - valor de 8-bits contida na instrução.
•#dado16 - valor de 16-bits contida na instrução.
•addr16 - Endereço de destino em 16-bits. Usado pelas instruções LCALL e LJMP,
podendo acessar toda a memória.
•addr11 - Endereço de destino em 11-bits. Usado pelas instruções ACALL e AJMP,
podendo acessar 2Kb de distância da instrução usada.
•rel - Endereço relativo em 8-bits. Pode alcançar uma distância de -128 a +127
bytes de distância da instrução seguinte à instrução usada. Note que o valor
negativo deve ser obtido por complemento de dois.
•bit - Endereço direto do bit. Pode acessar a RAM interna e o espaço SFR.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
36
Introdução a Linguagem Assembly
O Assembly e os Modos de endereçamento
– Linguagem Assembly
• Estrutura e sintaxe:
Set de Instrução
op-code
03/09/2012
DESTINO
FONTE
operando
Prof. Corradi - www.corradi.junior.nom.br
37
Introdução a Linguagem Assembly
O rótulo deve
ser finalizado
com dois pontos
03/09/2012
Os operandos devem
ser separados por virgula
O comentário deve ser
precedido por ponto e virgula
Prof. Corradi - www.corradi.junior.nom.br
38
Modos de Endereçamento da família MCS51®
• Tipos de Endereçamento
– Modo direto: MOV A,30h ⇒ (A) ← (30h)
– Modo indireto: MOV R0,#10h ⇒ (R0) ← 10h
MOV @R0,#20h ⇒ (10h) ← 20h
– Modo Registrador: MOV A,Rn ⇒ (A) ← (Rn)
– Modo Específico a Registrador: RL A ⇒ Rotaciona á esquerda
MUL AB ⇒ A = LSB
B = MSB
– Modo imediato: MOV B,#0Fh ⇒ (B) ← 0Fh
– Modo endereçamento á memória (MP) e (MD):
MOVC A,@A+DPTR
MOVX @DPTR,A
03/09/2012
[MOVC = MOVE CODE]
[MOVX = MOVE EXTERNAL]
Prof. Corradi - www.corradi.junior.nom.br
39
Exemplo
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
40
Exemplos de rotações
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
41
Set de Instruções da família MCS51®
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
42
Software do 80C51 - Algoritmo / Fluxograma
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
43
Software do 80C51 - Fluxograma
•SIMBOLOGIA BÁSICA PARA CONSTRUÇÃO DE DIAGRAMA DE BLOCOS
(Fluxograma)
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
44
Software do 80C51 - Fluxograma
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
45
Software do 80C51 - Fluxograma [exemplo]
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
46
Codificação Assembly do 8051
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
47
Codificação Assembly do 8051
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
48
Codificação Assembly do 8051
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
49
Codificação Assembly do 8051
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
50
Codificação Assembly do 8051
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
51
Codificação Assembly do 8051
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
52
Modos de Endereçamento do 8051
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
53
Modos de Endereçamento do 8051
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
54
Modos de Endereçamento do 8051
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
55
Modos de Endereçamento do 8051
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
56
Modos de Endereçamento do 8051
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
57
Modos de Endereçamento do 8051
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
58
Modos de Endereçamento do 8051
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
59
Exemplo de Programação - Assembly para o 80C51
Situação Problema:
Acionar um LED – Conforme Hardware abaixo
• Criar o Algoritmo e o fluxograma –
(Solução do Problema)
• Que tipo de movimento
podemos utilizar?
• Resposta: Movimento de bit uso do flag – carry [cy ou
apenas c]
• Proposta – Ao acionarmos a chave SW1 o LED1 deve
acender e ao acionarmos SW1 novamente o LED1 deve apagar.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
60
Software do 80C51 - Fluxograma e Algoritmo
Acionamento do LED através
de uma chave retentiva
Definição das Variáveis:
SW1 = P1.0
LED = P1.2
Movimento de dados; utilizando
o flag carry [c].
Mover SW1 para carry
Mover o conteúdo do carry
para LED
Nome do programa
SW1 equ p1.0
equ p1.2
Led
Volta:
mov c,SW1
mov led,c
jmp volta
end
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
61
Exemplo 02
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
62
Mnemônicos (Programa Assembly)
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
63
Mnemônicos (Programa Assembly)
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
64
Solução no uVision [editor de Assembly]
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
65
Exercício de aplicação
Baseado no sistema mínimo acima desenvolver
um programa em Assembly para comutar o LED
toda vez que o botão SW2 for acionado. Ao
ligar o circuito pela primeira vez o LED deve
estar apagado [desligado].
-
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
66
Exemplo de Programação - Assembly para o 80C51
Exemplo 02- uso de sub-rotina
Executando o
programa acima,
obtemos o seguinte
efeito:
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
67
Estruturas de Programação
Decisões:
• Desviam o fluxo de execução do programa
conforme determinada condição for verdadeira ou
falsa (IF - ELSE)
Repetições:
• Permitem a repetição de um conjunto de ações
(loop) enquanto determinada condição for
verdadeira ou falsa (FOR, WHILE, DO - WHILE)
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
68
Exemplo: Estrutura de decisão
CLR C
SUBB A, R0
JZ IGUAL
JC MAIOR
;faz carry=0
;subtrai R0 de A
;se R0=A salta para IGUAL
;se R0>A salta para MAIOR
MOV R1, #01
SJMP FIM
;sinaliza em R1 que R0<A
MOV R1, #02
SJMP FIM
;sinaliza em R1 que R0>A
MOV R1, #00
;sinaliza em R1 que R0=A
;segue em frente
MENOR:
MAIOR:
IGUAL:
FIM:
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
69
Exemplo: Estrutura de repetição
MOV R0, #16
LOOP1:
DJNZ R0, LOOP1
MOV A, #20H
LOOP2:
DEC A
JNZ LOOP2
03/09/2012
;repetições = 16
;seqüência de instruções
;repete se R0! = 0
;repetições = 32
;seqüência de instruções
;repete se A! = 0
Prof. Corradi - www.corradi.junior.nom.br
70
Tdecorrido
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
Obs.: As linhas de programas acima são sub-rotinas, assim é necessário
serem finalizadas com RET e serem solicitadas com CALL.
MOV R1,#kte2 (1 CM)
DJNZ R1,$
(2 CM)
DJNZ R0,Kte
(2 CM)
RET
(2 CM)
MOV R0,#Kte1 (1 CM)
12 * (3 + 2 * kte)
=
Fcristal
71
12 *{3 + [kte1 (3 + 2 * kte2 )]}
=
Fcristal
Tdecorrido
Utilizando dois registradores (16 bits)
MOV R0,#kte (1 CM)
DJNZ R0,$
(2 CM)
RET
(2 CM)
Utilizando um único registrador (8 bits)
Kte:
•
•
Sub-rotinas de tempo sem o uso de TIMER/COUNTER
DJNZ
MOV
DJNZ
MOV
DJNZ
RET
03/09/2012
72
;(2µs) – (2µs x 255 x 255 x 7) = 0.91 seg
;(1µs) – ( 1µs x 255 x 7) = 1.7ms
;(2µs) – (2µs x 255 x 7) = 3.57ms
;(1µs) – (1µs x 7) = 7µs
;(2µs) – (2µs x 7) = 14µs
;(2µs)
;(1µs)
;(1µs)
;(1µs)
Prof. Corradi - www.corradi.junior.nom.br
R5,SALTO1
R5,#255
R6,SALTO1
R6,#255
R7,SALTO1
MOV R5,#255
MOV R6,#255
MOV R7,#7
Total: 0.92 segundos.
SALTO1:
TEMPO_1S:
; As instruções do 8051 levam 1µs para serem executadas, porém algumas
;instruções de desvio como a DJNZ são executadas em 2µs.
; Sub-rotina de tempo de 1 segundo
Exemplo de uma sub-rotina de 1s
Exemplo de Sub-rotina de tempo para 24 Bits
Tempo:
Cálculo do tempo:
mov R0,#kte1
tt0:
mov R1,#kte2
tt1:
mov R2,#kte3
Cálculo de kte3 para um determinado atraso.
djnz R2,$
Se usarmos: fxtal = 12 MHz, kte1 = 255 e kte2
= 255; kte3 poderá ser calculada por:
djnz R1,tt1
djnz R0,tt0
ret
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
73
Hardware do 80C51
Barramento de expansão
1. Expansão de memória de programa;
2. Expansão de memória de dados.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
74
Hardware do 80C51 – Barramento de Expansão
PORTA 0
PORTA 2
ALE
AD0 – AD7: Dados e parte baixa do endereço
A15 - A8: Parte alta do endereço
ALE: Separação de endereços/dados
80C51
P3.7
P3.6
PSEN
03/09/2012
RD: Pulso de leitura para memória externa de
dados
WR: Pulso de escrita para memória externa de
dados
PSEN: Habilitação de leitura para memória
externa de programa
Prof. Corradi - www.corradi.junior.nom.br
75
Hardware do 80C51 – Barramento de Expansão
EXPANSÃO DE MEMÓRIA DE PROGRAMA
-
Espaço de endereçamento de 64Kb;
-
Espaço completo (64 Kbytes) é endereçável indiretamente via registrador de 16 bits
PC ou DPTR;
80C51
A8 – A15
PORTA 2
ROM/EPROM
ALE
AD7-AD0
PORTA 0
Armazena
endereço
(A0 – A7)
A7-A0
D7 - D0
PSEN
03/09/2012
Endereço
Dados
OE
Prof. Corradi - www.corradi.junior.nom.br
76
Hardware do 80C51 – Barramento de Expansão
CICLO DE LEITURA DA MEMÓRIA DE PROGRAMA
Ciclo de leitura = 6
períodos de clock
XTAL
1
2
3
4
5
2
1
6
3
4
5
6
1
2
3
4
5
1
6
ALE
PSEN
DADOS
P0
P2
03/09/2012
PCL1
1
PCH1
FLOAT
DADOS
PCL2
2
DADOS
PCL3
PCH2
Prof. Corradi - www.corradi.junior.nom.br
3
PCH3
77
Hardware do 80C51 – Barramento de Expansão
EXPANSÃO DE MEMÓRIA DE DADOS
-
Espaço de endereçamento de 64Kb;
-
Memória endereçável via registradores de 8 bits (R0 e R1):
-
-
Segmentos de 256 bytes;
Técnica de paginação de memória
Espaço completo (64 Kbytes) é endereçável indiretamente via registrador de 16 bits
(DPTR);
Bits de
páginas
80C51
Página (P2)
RAM
I/O
PORTA 2
ENDEREÇOS
endereços
ALE
PORTA 0
Armazena
endereço
(A0 – A7)
Dados
dados
WR
WR
RD
OE
03/09/2012
8 bits em P0
0
0
0
00 - FFH
0
0
1
00 - FFH
0
1
0
00 - FFH
0
1
1
00 - FFH
1
0
0
00 - FFH
1
0
1
00 - FFH
1
1
0
00 - FFH
1
1
1
00 - FFH
Prof. Corradi - www.corradi.junior.nom.br
78
Hardware do 80C51 – Barramento de Expansão
CICLO DE LEITURA NA MEMÓRIA DE DADOS
Ciclo de leitura = 12 períodos de clock
XTAL
1
2
3
4
5
6
8
7
9
10
11
12
1
2
3
4
5
6
ALE
RD
P0
Se o próximo
acesso for na
memória de
programa externa
DPL
OU RI
FLOAT
DADOS
P2
DPH
03/09/2012
OU
SFR DE P2
FLOAT
PCL
PCH
Prof. Corradi - www.corradi.junior.nom.br
79
Hardware do 80C51 – Barramento de Expansão
CICLO DE ESCRITA NA MEMÓRIA DE DADOS
Ciclo de leitura = 12 períodos de clock
XTAL
1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
ALE
WR
P0
Se a próximo acesso
for na memória de
programa externa
DPL
OU RI
DADOS
PCL
P2
DPH
03/09/2012
OU
SFR DE P2
Prof. Corradi - www.corradi.junior.nom.br
PCH
80
Hardware do 80C51
Sistema de Interrupções
1.
2.
3.
4.
03/09/2012
Descrição geral;
Regras para atendimento das interrupções;
Vetores de endereços das rotinas;
Registradores especiais.
Prof. Corradi - www.corradi.junior.nom.br
81
Hardware do 80C51 – Interrupções
O SISTEMA DE INTERRUPÇÃO DO 80C51
• 5 fontes de interrupções:
• 2 interrupções externas – /INT0 e /INT1
• 3 interrupções internas (TF0, TF1 e TI/RI, originadas dos módulos
contador 0, contador 1 e módulo serial, respectivamente).
• 2 níveis de atendimento:
• Alta prioridade;
• Baixa prioridade.
• 3 registros de funções especiais para controle das
interrupções:
• IE – Habilitação das interrupções;
• IP – Seleção de prioridade;
• TCON – 4 bits LSB para configuração da interrupções externas.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
82
Hardware do 80C51 – Interrupções
Obs. No software com interrupção, o
instante de ocorrência da interrupção não é
previsto, isto é, ela é assíncrona e depende
de um evento externo.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
83
Hardware do 80C51 – Interrupções
• Não Vetorada -> dispositivo que o interrompe envia o
endereço de desvio.
• Vetorada -> endereço fixo de desvio.
• Mascaramento -> propriedade do uC em permitir que um
dispositivo interrompa-o.
• Prioridade -> podemos programar a prioridade da
interrupção para evitar conflitos.
• Origem -> Interna e Externa
• Tipo de disparo -> por nível ou por borda
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
84
Hardware do 80C51 – Interrupções
REGRAS DE ATENDIMENTO DAS INTERRUPÇÕES
•
Interrupções são atendidas de modo que, uma interrupção de baixa prioridade
possa ser interrompida por uma de alta prioridade;
•
Quando duas interrupções de mesma prioridade ocorrem simultaneamente, o
80C51 realiza uma varredura para selecionar a interrupção a ser atendida,
obedecendo a seqüência:
03/09/2012
Prioridade
Fonte
Função
Mais alta
INT0
Interrupção externa 0
TF0
Interrupção do contador 0
INT1
Interrupção externa 1
TF1
Interrupção do contador 1
TI/RI
Interrupção da porta serial
Prof. Corradi - www.corradi.junior.nom.br
85
Hardware do 80C51 – Interrupções
VETOR DE ENDEREÇO DAS INTERRUPÇÕES
•
Cada interrupção está associada a um endereço na memória de programa,
que marca o início da rotina de serviço de interrupção.
Memória de programa
~
002BH
0023H
Endereços das rotinas de
tratamento de interrupção
001BH
0013H
~
Porta
serial
Contador
1
Interrupção
externa 1
Contador 0
000BH
8 bytes
0003H
reset
03/09/2012
Rotinas de
tratamento das
interrupções
Interrupção
externa 0
Obs. Estes endereços são relativos à
ROM/EPROM/FLASH do uC. Logo,
se utilizarmos estas interrupções
devemos deixar estes locais
reservados. Se gravarmos um
software neste locais e ocorrer uma
interrupção o sistema se perde.
0000H
Prof. Corradi - www.corradi.junior.nom.br
86
Hardware do 80C51 – Interrupções
Ilustração do processo de Interrupção [Vetorada]
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
87
Hardware do 80C51 – Interrupções
Obs.: O espaço 0003H à 0012H deve
ser suficiente para criar o software de
‘serviço de interrupção’ caso
contrário deve se a partir do endereço
inicial 0003H criar uma instrução
desvio para outro local da MP que
permita gravar todo o software e
finalizar com a instrução RETI.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
88
Hardware do 80C51 – Interrupções [exemplo]
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
89
Hardware do 80C51 – Interrupções
REGISTROS ESPECIAIS DO SISTEMA DE INTERRUPÇÃO
REGISTRADOR IE
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
EA
-
-
ES
ET1
EX1
ET0
EX0
Símbolo
Função
Estado do bit
Hab/desab.
EA
Habilitação global da Interrupções
1
Habilitada
ES
Hab/Desab. interrupção da porta serial
0
Desabilitada
ET1
Hab/Desab. interrupção do Contador 1
EX1
Hab/Desab. interrupção externa 1
ET0
Hab/Desab. interrupção do Contador 0
EX0
Hab/Desab. interrupção externa 0
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
90
Hardware do 80C51 – Interrupções
REGISTROS ESPECIAIS DO SISTEMA DE INTERRUPÇÃO
REGISTRADOR IP
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
-
-
-
PS
PT1
PX1
PT0
PX0
Símbolo
Função
PS
Define prioridade de interrupção da porta serial
PT1
Define prioridade de interrupção do Contador 1
PX1
Define prioridade de interrupção externa 1
PT0
Define prioridade de interrupção do Contador 0
PX0
Define prioridade de interrupção externa 0
03/09/2012
Estado do bit
Prioridade
1
Alta
0
baixa
Prof. Corradi - www.corradi.junior.nom.br
91
Hardware do 80C51 – Interrupções
REGISTROS ESPECIAIS DO SISTEMA DE INTERRUPÇÃO
REGISTRADOR TCON
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
SÍMBOLO
03/09/2012
FUNÇÃO
IT0
0
1
IT1
0
1
IE0
1
0
Sinaliza um pedido de interrupção em INT 0.
Após atendimento de INT 0.
IE1
1
0
Sinaliza um pedido de interrupção em INT 1.
Após atendimento de INT 1
INT 0 é ativa pelo nível
INT 0 ativa pela transição DE 1 → 0
INT 1 é ativa pelo nível
INT 1 ativa pela transição DE 1 → 0
Prof. Corradi - www.corradi.junior.nom.br
92
Hardware do 80C51 – Interrupções
ESQUEMA DE INTERRUPÇÕES DO 80C51
BIT DE TCON
INT0
0
IT0
1
IE
IP
Prioridade
ALTA
IE0
BAIXA
TF0
INT1
0
1
IT1
IE1
TF1
RI
TX
•Mais detalhes
03/09/2012
HABILITAÇÃO
INDIVIDUAL
HABILITAÇÃO
GLOBAL
Prof. Corradi - www.corradi.junior.nom.br
93
Software do 80C51 - Exemplo -
Programa com Interrupção externa
• Fluxograma a nível de conceito para um programa de teste de uma Interrupção
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
94
Software do 80C51 - Resolução
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
95
Timer/Counter
• Modos de Trabalho do Timer/Counter
–
–
–
–
Modo
Modo
Modo
Modo
0 = Contador com capacidade máxima de 13 bits
1 = Contador com capacidade máxima de 16 bits
2 = Contador com capacidade de 8 bits “auto-reload”
3 = Contador de 8 bits/duplo temporizador
• Como programar o Timer/Counter (timer0 e timer1)
– Exercício: Programar os Timer/Counters para:
• 1- Timer/Counter 0 para contagem de 50ms
• 2- Timer/Counter 1 para contagem de 50us com “autoreload”
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
96
Prof. Corradi - www.corradi.junior.nom.br
Obs.: Cristal de 12Mhz (pulso de 1us)
F = CLK/12.N
N = CLK/12.F
Podemos usar o Modo 0?
03/09/2012
•
Resolução
97
Programação dos Modos
•
•
TMOD = Timer mode – End. (89h)
TCON = Timer control – End. (88h)
•
TR1 e TR0 : Flag de liga/desliga (TRx)
– TRx = 1 liga
– TRx = 0 desliga
TF1 e TF0 : flag de indicação de “estouro” de contagem (“overflow”)
– TFx = 1 overflow do contador
– TFx = 0 contador sem overflow
•
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
98
03/09/2012
ESPERA:
Prof. Corradi - www.corradi.junior.nom.br
JNB TF0,ESPERA
CLR TR0
END
MOV TMOD,#01H
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
Como programar no Modo 1
99
Gerar tempo de 1 segundo
Obs. – 20 x 50 ms = 1000 ms = 1 s
ORG 00h
MOV TMOD,#01h
; C/T NO MODO 1
MOV R0,#20d
; CARREGO R0 COM VALOR 20
INI:
VOLTA:
MOV TH0,#HIGH(65535-50000)
MOV TL0,#LOW(65535-50000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,VOLTA
CPL P1.0
JMP INI
END
03/09/2012
; LIGA O TIMER 0
; FICA EM LOOP ATÉ O TF0 ‘ESTUORAR’
; DESLIGA CONTADOR
; LIMPA FLAG PARA PRÓXIMA
; CONTAGEM
; DECREMENTA R0, PASSANDO POR 20
; VEZES NO TIMER DE 50 ms
; PULSA P1.0
; RETORNA AO INÍCIO
; FIM DE PROGRAMAÇÃO
Prof. Corradi - www.corradi.junior.nom.br
100
Outras características importantes em
Microprocessadores/Microcontroladores
• As versões CHMOS (89C51, 89S52, etc…) da família MCS51® possuem
dois modos de controle de redução de potência de operação do chip .
• 1. Modo Idle
• 2. Modo Power Down
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
101
Registrador envolvido no IDLE
• O Registrador (SFR) utilizado para o controle de potência é o PCON.
PCON
Não
endereçável
a Bit
• IDL = 1 -> o oscilador funciona somente para as Interrupções e os Timers.
• Não existe sinal de clock para a CPU.
• O status da CPU é preservado: o SP, o PC, o PSW, o ACC e todos os
outros registradores mantêm seus dados durante o tempo em que a CPU
estiver em Modo Idle.
• As Portas mantêm seus estados lógicos que tinham quando o Modo Idle foi
ativado .
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
102
Existem 2 Modos de terminar o Modo Idle:
1. Ativação de uma Interrupção habilitada
•
•
•
•
Zera automaticamente o bit IDL
Atende a sub-rotina de Interrupção
Ao executar o RETI entra novamente no Modo Idle
Os Flags GF1 e GF2 podem ser utilizados para indicar se as interrupções
ocorreram durante o modo normal de operação ou durante o Modo Idle
2. Reset de Hardware
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
103
Modo Power Down
•
•
•
•
•
•
PD = 1 -> O oscilador pára.
Todas as funções param.
O conteúdo da RAM interna e dos SFRs se mantém.
Neste Modo Vcc pode ser reduzido para até 2 Volts.
A única forma de sair deste modo e através do reset de hardware .
O consumo é da ordem de 10 uA.
PD tem precedência sobre IDL
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
104
Outras características importantes em
Microprocessadores/Microcontroladores
Bits de Proteção (Lock Bits)
• São Bits que permitem a proteção do código do usuário gravado em um
Microcontrolador.
• Para a família MCS51® existem 3 Bits de proteção que podem ser gravados
durante a fase de programação do chip.
• Uma vez programados, os Bits de Proteção só podem ser alterados através de uma
operação de Chip Erase.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
105
Outras características importantes em
Microprocessadores/Microcontroladores
•Watchdog Timer
• Dispositivo de temporização de Hardware que “Reseta” o
Microcontrolador se o programa, devido a falhas, negar fornecer o
serviço do “watchdog” (por exemplo, escrever em uma determinada
posição de memória ou em determinado Bit).
– Simples -> apenas Reseta o Micro
– Complexo -> Salva informações de “debug” em mídias fixas.
• A rotina de atendimento ao “Watchdog Timer” pode colocar o
Microcontrolador em um “estado seguro” desligando motores, saídas
de alta tensão, etc; até que a falha seja resolvida.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
106
Exemplo de Microcontrolador com Watchdog Timer implementado
no chip.
•DS80C320 fabricado pela Dallas Semiconductor (núcleo do 8051)
• Quando o Watchdog é habilitado, o programa do usuário
deve escrever em um determinado SFR regularmente
permitindo ao Watchdog saber se o programa está
executando corretamente.
•Se o programa não realizar a escrita dentro de um
determinado período de tempo, o Watchdog assume que o
programa falhou e realiza um Reset ou uma Interrupção,
dependendo da configuração.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
107
Programação de Microcontroladores
•Microcontroladores com Memória de Programa Flash podem ser programados
de 3 maneiras:
1.
Programação Paralela (método Tradicional) -> Exige um
dispositivo – Programador – O chip do Microcontrolador é
programado separadamente. Única metodologia de
programação para dispositivos com memória EPROM.
2.
3.
In-System Programming (ISP)
In Application Programming (IAP)
•Retorna
03/09/2012
Programação In-Circuit
•O Programador
Prof. Corradi - www.corradi.junior.nom.br
108
Programação paralela do Microcontrolador 89S52
• Os endereços de cada linha do código deve
ser fornecido através das portas P1 e P2
(P2.0 a P2.5).
• Os dados (códigos do programa)
devem entrar através da porta P0.
• Os Pinos P2.6, P2.7, P3.6,
P3.7 selecionam a operação:
Apagar, Ler, Escrever, Gravar
Lock Bit, etc…
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
109
In-System Programming (ISP)
Processo no qual um Microcontrolador montado
em uma placa de circuito impresso pode ser
apagado ou programado com o código final do
usuário sem removê-lo da placa.
• Para a programação o Microcontrolador deve ser
ligado no “Modo ISP” .
• O Microcontrolador recebe comandos e dados
através de um software localizado, por exemplo,
em um PC.
• Terminada a operação de ISP o dispositivo é
reconfigurado para que possa operar
normalmente.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
110
In-System Programming (ISP)
• A programação “in-circuit” via ISP pode ser realizada
através de canais seriais do Microcontrolador.
• Os Microcontroladores que possuem a possibilidade de
programação ISP têm um programa localizado na parte
superior da Memória de Programa (BOOTROM) chamado
de BOOT LOADER.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
111
In-System Programming (ISP)
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
112
In-System Programming (ISP)
•SPI (Serial Peripheral Interface) é um duto padrão serial,
síncrono, desenvolvido pela Motorola e utilizado por diversos
fabricantes de Microcontroladores.
• Os dispositivos se comunicam em uma relação Mestre/escravo onde o Mestre inicia
a comunicação.
•SCLK -> Clock gerado pelo Mestre
•MOSI -> Master data Output, Slave data Input
•MISO -> Master data Input, Slave data Output
•SS
-> Slave Select
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
113
In-System Programming (ISP)
Em um esquema de múltiplos escravos, o Mestre deve gerar sinais
separados de Slave Select (SS) para cada Escravo.
• O SPI não tem um mecanismo de confirmação de dado recebido (acknowledgement).
• O SPI é indicado para aplicações que transferem diretamente um cordão de Dados
(Data Stream).
• Razão de Transmissão do SPI = 1Mbps
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
114
Utilização do duto SPI do Microcontrolador 89S52 para
programação “in-circuit”.
• Durante a transferência dos dados o pino
de RESET deve ficar em nível lógico 1.
• Após a gravação, deve-se colocar o pino de
RESET em zero para operação normal do
chip.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
115
In Application Programming (IAP)
• Algumas aplicações tem a necessidade de apagar ou
reprogramar o código do programa sob controle da própria
aplicação.
Exemplo:
• Armazenar informações de calibração “em vôo”
• Carregar novas partes do código do programa “em vôo”
• A capacidade de um Microcontrolador de apagar ou
reprogramar o código do programa na aplicação do usuário
(end-user) é conhecida como IAP.
• Em geral, as rotinas do Boot Loader que realizam a
programação no modo ISP, também são responsáveis pelo
Modo IAP.
• Não existe um Mestre para gravar o programa. A própria
aplicação pode realizar a tarefa.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
116
Introdução ao Protocolo I2C
As comunicações em bus I2C (Inter-Integrated Circuit) processam-se de dois circuitos. As designações e
as funções atribuídas a esses circuitos são as seguintes:
• SDA (Serial DAta Line):- serve de suporte à transmissão de dados e endereços.
• SCL (Serial CLock line):- suporta a transmissão de sinais que garantem o
sincronismo entre dispositivos (sinais de relógio).
O bus é bidirecional - pois, os sinais transmitidos podem ter origem em qualquer dispositivo e
a sua gestão pode ser partilhada por vários dispositivos que possuam a capacidade de gerar
sinais de relógio e controlar processos de transferência de informação - masters; diz-se, por
isso, que, no bus I2C, é adotada uma filosofia multimaster. No bus, podem ligar-se
dispositivos de vários tipos, incluindo os que podem receber dados -receptores-, os que
podem enviar dados -emissores- e os que podem desempenhar ambas as funções. Cada
dispositivo é reconhecido, no bus, por um endereço.
Em bus I2C, são permitidos ritmos de transmissão até 100Kbits/s, no modo standard, e até
400Kbits/s, no modo fast; este modo é suportado apenas por alguns dispositivos, que exibem
características próprias, como o fato de possuírem supressores de ruído e blocos do tipo
schimit trigger, nos circuitos de ligação aos pinos SCL e SDA.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
117
Introdução ao Protocolo I2C
Dispositivos Ligados através de um BUS I2C
Nas linhas SDA e SCL, inserem-se resistências de
pull-up, viabilizando a ligação dos dispositivos,
cujas saídas apresentam configurações do tipo
open-drain ou open-collector.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
118
Introdução ao Protocolo I2C
A transmissão ocorre da seguinte forma:
Se o microcontrolador desencadear um processo de transferência de
dados para qualquer dispositivo do bus, o mesmo toma o controle e
lança o endereço do dispositivo no circuito SDA, envia os dados,
gera os sinais de relógio inerentes ao processo, na linha SCL, e
encarrega-se de sinalizar o fim do processo. Esta transmissão
processa-se entre um master-emissor e um slave-receptor. O oposto
ocorre quando um dos dispositivos solicita a transmissão de dados.
Nos dispositivos, a informação sobre o estado de ocupação do bus é
obtida com base na detecção de condições START -(S) e STOP -(P);
o bus considera-se ocupado após a geração de uma condição
START e só considera livre a detecção de uma condição STOP
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
119
Introdução ao Protocolo I2C
A condição START é definida pela ocorrência de um flanco descendente na linha SDA,
quando a linha SCL está no estado high; a condição STOP é definida pela ocorrência de
um flanco ascendente na linha SDA, quando a linha SCL está no estado high. Só os
masters podem impor estas condições no bus.
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
120
Introdução ao Protocolo I2C
Para projetar sistemas que transmitam informações através de um bus
I2C, é necessário conhecer as características de cada um dos
dispositivos que se ligam ao bus (endereço, palavras de instrução,
tensão de alimentação,...); esta informação, deve ser obtida em manuais
de fabricantes dos dispositivos. Para obtenção de informações adicionais
sobre o bus, recomenda-se a consulta do material disponibilizado pela
PHILIPS e por outros fabricantes de microcontroladores; aí, existe
informação detalhada sobre alguns processadores derivados do 8051,
que - como o 83C751 e o 83C752 - apresentam características
adequadas para operarem em bus I2C, pois possuem SFRs e pinos (com
configuração do tipo open-drain) dedicados para este efeito
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
121
Exemplo de Interfacing para o 80C51
•External Memory
•Hex Keypad
•7-segment LED displays
•8-bit ADC and DAC
•8255 PPI
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
122
Interfaceamento com o Mundo!
Display
7 Segmentos
8051
ADC
DAC
External address, data, & control buses
Teclado
RAM
ROM
Hex
Memória
Externa
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
123
External Memory
74HC138
A13
A14
A15
A
B
C
O0
O1
O2
O3
O4
O5
O6
O7
E1
E2
E3
CS
8031
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
ALE
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
G
D
D
D
D
D
D
D
D
373
Q
Q
Q
Q
D
Q
Q
Q
A12
A11
A10
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
8K
EPROM
CS
D0
D1
D2
D3
D4
D5
D6
D7
D0
D1
D2
D3
D4
D5
D6
D7
8K
RAM
A12
A11
A10
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
WR
OE
RD
PSEN
(P3.6)
(P3.7)
WR
RD
EA
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
124
Hex Keypad
row3
C
D
E
F
8
9
A
B
4
5
6
7
0
1
2
3
row2
R
O
W
row1
row0
column 0
column 1
column 2
column 3
Column
Key Pressed = row × 4 + column
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
125
4×4 Matrix Hex Keypad
8051
Column 3
Column 2
Column 1
Column 0
P1.7
P1.6
C
D
E
F
8
9
A
B
4
5
6
7
0
1
2
3
P1.5
P1.4
P1.3
Row 3
P1.2
P1.1
P1.0
Row 2
Row 1
Row 0
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
126
Scanning Algorithm #1
KSCAN:
CALL
JC
CALL
CALL
RET
ROWRD
KSCAN
COLRD
CONVRT
;
;
;
;
;
find which row has key-press
No key pressed, scan again
find which column has key-press
convert key press to hex value
return to calling program
CLR
MOV
MOV
JNB
MOV
JNB
MOV
JNB
MOV
JNB
SETB
C
P1,#0F0H
R0,#0
P1.0,GOBK1
R0,#1
P1.1, GOBK1
R0,#2
P1.2, GOBK1
R0,#3
P1.3, GOBK1
C
;
ROWRD:
;
;
;
;
;
;
;
;
;
;
make all column “0” and row “1”
Is key-press in row 0?
Yes, return
Is key-press in row 1?
Yes, return
Is key-press in row 2?
Yes, return
Is key-press in row 3?
Yes, return
No key-press detected, return error (C=1)
GOBK1:
RET
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
127
Scanning Algorithm #2
COLRD:
MOV
P1,#0FH
; make all column “1” and row “0”
MOV
JNB
MOV
JNB
MOV
JNB
MOV
JNB
JMP
R1,#0
P1.4,GOBK2
R1,#1
P1.5,GOBK2
R1,#2
P1.6,GOBK2
R1,#3
P1.7,GOBK2
COLRD
; Is key-press in column 0?
; Yes, go back
; Is key-press in column 1?
; Yes, go back
; Is key-press in column 2?
; Yes, go back
; Is key-press in column 3?
; Yes, go back
; No key-press detected, keep reading
GOBK2:
RET
;
; multiply row by 4 and add product to column and exit with hex key-press in A.
CONVRT:
MOV
B,#4
MOV
A,R0
MUL
AB
ADD
A,R1
RET
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
128
Debouncing for the key pressed
KSCAN:
MOV
DEB: CALL
JC
DJNZ
CALL
CALL
RET
03/09/2012
R2, #50
ROWRD
KSCAN
R2, DEB
COLRD
CONVRT
; debounce count
; find which row has key-press
; No key pressed, scan again
; Yes, repeat 50 times
; find which column has key-press
; convert key press to hex value
; return to calling program
Prof. Corradi - www.corradi.junior.nom.br
129
Debouncing for the key pressed and released
KSCAN:
MOV
DEB: CALL
JC
DJNZ
CALL
CALL
KSCAN1:
MOV
DEB1: CALL
JNC
DJNZ
RET
03/09/2012
R2, #50
ROWRD
KSCAN
R2, DEB
COLRD
CONVRT
; debounce count
; find which row has key-press
; No key pressed, scan again
; Yes, repeat 50 times
; find which column has key-press
; convert key press to hex value
R2, #50
ROWRD
KSCAN1
R2, DEB1
; debounce count
; find which row has key-press
; No key released, scan again
; Yes, repeat 50 times
; return to calling program
Prof. Corradi - www.corradi.junior.nom.br
130
CALL CONVRT
Key Pressed = row × 4 + column
A = R0 × 4 + R1
CONVRT:
MOV
MOV
MUL
ADD
RET
B,#4
A,R0
AB
A,R1
(3,2)
(1,1)
(1,4)
(1,1)
(6,8)
CONVRT:
MOV
RL
RL
ADD
RET
A,R0
A
A
A,R1
(1,1)
(1,1)
(1,1)
(1,1)
(4,4)
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
131
7-segment LED displays
a
f
b
g
Common Anode
→ ‘0’ == ON
Common Cathode
→ ‘1’ == ON
c
e
d
h
Exemplo:
‘E’
h g
f
03/09/2012
e
d
c b
→
10000110 (CA)
a
Prof. Corradi - www.corradi.junior.nom.br
132
Interfacing to Two 7-segment LED
VCC
8051
VCC
Tr1
Tr2
a
b
c
d
e
f
g
h
a
b
c
d
e
f
g
h
74LS07
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
LED 1
LED 2
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
133
Sample Program to display “HI”
CHAR_H
CHAR_I
;
BEGIN:
CLR
MOV
SETB
CALL
;
CLR
MOV
SETB
CALL
;
SJMP
;
DELAY_25:
……..
;
END
03/09/2012
EQU
EQU
89H
0F9H
P3.5
P1,#CHAR_H
P3.4
DELAY_25
; turn off LED2
; display “H” on LED1
; delay for 25 ms
P3.4
P1,#CHAR_I
P3.5
DELAY_25
; turn off LED1
; display “I” on LED2
; delay for 25 ms
BEGIN
; repeat displays
Prof. Corradi - www.corradi.junior.nom.br
134
Sample Program (cont.) #1
DELAY_25:
MOV
LOOP2:
MOV
LOOP1:
DJNZ
DJNZ
RET
R1,#49
; second-loop counter
(1us)
R0,#0FFH
; first-loop counter
(1us)
R0,LOOP1
R1,LOOP2
; loop 255 times
; loop 49 times
(2us)
(2us)
(2us)
Total time = 1 + ( 2×255 + 2 + 1) × 49 + 2 = 25.1ms
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
135
Sample Program (cont.) #2
DELAY_25:
MOV
:
MOV
LOOP:
DJNZ
DJNZ
RET
R1,#49
R0,#0FFH
; second-loop counter
; first-loop counter
(1us)
(1us)
R0,LOOP
R1,LOOP
; loop 255 times
; loop 49 times
(2us)
(2us)
(2us)
Total time = 1 + 1 + ( 2×255 + 2) + (2 x 256 + 2) × 48 + 2 = 25.2ms
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
136
8-bit ADC and DAC
Interfacing to 8-bit ADC
+5V
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
8051
VCC
Analogue
input
Vin(+)
Vin(-)
A. Gnd
Vref/2
ADC0801
NC
R CLK
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
03/09/2012
D0
D1
D2
D3
D4
D5
D6
D7
WR
INTR
10 kΩ
CLK IN
RD
CS
150 pF
D. Gnd
Prof. Corradi - www.corradi.junior.nom.br
137
ADC Sample Program
; An ADC conversion subroutine that gets a converted sample,
; places it in the R0 register and returns.
CONVRT:
MOV
MOV
;
START:
CLR
SETB
;
JB
;
MOV
SETB
RET
03/09/2012
P1,#0FFH
P3,#0FFH
; make both Port 1 & Port 3
; as input ports
P3.0
P3.0
; send start of conversion signal
; low-to-high to start conversion
P3.1,$
; wait for sample
R0,P1
P3.1
; get converted reading
; clear interrupt
; return to main program
Prof. Corradi - www.corradi.junior.nom.br
138
Interfacing to 8-bit DAC
+5V
1k Ω
VCC
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
+5V
D0
Vref(+)
D1
1k Ω
D2
Vref(-)
D3
D4
1
D5
NC
D6
MC1408L8
D7
8051
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
4.7k Ω
COMP
Io
15 pF
GND
-
Vo
+
VEE
LM301
-12V
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
139
8255 PPI
Interfacing to 8255
03/09/2012
PA3
1
40
PA4
PA2
2
39
PA5
PA1
3
38
PA6
PA0
4
37
PA7
/RD
5
36
/WR
/CS
6
35
RESET
GND
7
34
D0
A1
8
33
D1
A0
9
32
D2
PC7
10
31
D3
PC6
11
30
D4
PC5
12
29
D5
PC4
13
28
D6
PC3
14
27
D7
PC2
15
26
Vcc
PC1
16
25
PB7
PC0
17
24
PB6
PB0
18
23
PB5
PB1
19
22
PB4
PB2
20
21
PB3
8255
Prof. Corradi - www.corradi.junior.nom.br
140
Interfacing to 8255 (cont.)
Memory IC
8051
Port 0
D0 – D7
74373
D
Q
G
ALE
Port 2
A8 – A15
D0-D7
Port A
A0 – A7
A0 A1
/WR /RD
Port B
8255
Port C
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
141
Aspecto DIP – 40 pinos
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
142
Aspecto DIP – 20 pinos
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
143
Aspecto PLCC
Retorna
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
144
Aspecto de Montagem
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
145
Programador de baixo custo
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
146
Programador de baixo custo - ISP
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
147
Programador Comercial – Médio Custo
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
148
EXPANSÃO DE MEMÓRIA DE PROGRAMA
+5VCC
0.1/50
4KB
31
SW1
40
EA
1/50
74373
P0.7
10K
D-FF
9 RST
D7
P0.0
P2.0
P2.2
20
D0
A0
A1
OE
CK
CE
A11
OE
ALE
PSEN
18
03/09/2012
19
2732
With external program memory
Prof. Corradi - www.corradi.junior.nom.br
149
EXPANSÃO DE MEMÓRIA DE DADOS
+5VCC
+5VCC
0.1/50
4KB
31
SW1
40
EA
1/50
74373
P0.7
D-FF
P0.0
OE
9 RST
10K
D0
A0
A1
D7
P2.0
P2.2
20
CK
CE
A11
OE
ALE
RD
WR
18
03/09/2012
19
WE
6132
With external data memory
Prof. Corradi - www.corradi.junior.nom.br
150
Procedimento
Processo de comunicação
•Retorna
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
152
Arquitetura
P1.1 P1.0 P3.5 P3.4
T2EX T2 T1 T0
INT0 INT1
P3.2
P3.3
RAM
256
(8052, 8032)
Timer 2
Timer 1
Interrupt
Control
Other
Registers
128
(8051, 8031)
ROM
or
EPROM
8K(8052, 8752)
4K(8051, 8751)
0K(8031, 8032)
Timers
Timer 0, 1
(8051, 8031)
Timer 0,1,2
(8052, 8032)
Timer 0
Serial port
CPU
Oscillator
Bus Control
sI/O Ports
WR
RD
P3.6
P3.7
XTAL1 XTAL2
EA RSTALE PSEN
P0
P1
P2
P3
(Address/Data)
(Address)
03/09/2012
sSerial Port
RxD
P3.0
TxD
P3.1
Prof. Corradi - www.corradi.junior.nom.br
153
Arquitetura
RAM Addr.
Register
Vcc
Vss
P0.0 ~ P0.7
P2.0 ~ P2.7
Port 0 drivers
Port 2 drivers
Port 0 latch
Port 2 latch
RAM
Acc
TEMP1
ALU
PSW
Timing
and
Control
OSC
XTAL1
Buffer
PCON
SCON
TMOD
TCON
T2CON
TH0
TH1
TL0
TL2 RCAP2H
TL1
TH2
SBUF
IE
IP
RCAP2L
Internal Serial Port and Timer Block
PC
Incrementer
Program
Counter
Instruction
Register
PSEN
ALE
EA
RST
Program
Address
Register
Stack
Pointer
TEMP2
B
Register
EPROM
/ROM
DPTR
Port 1 latch
Port 3 latch
Port 1 drivers
Port 3 drivers
P1.0 ~ P1.7
P3.0 ~ P3.7
XTAL2
MCSMCS-51
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
154
155
Serial
Port
Timer
Control
128×
×8
RAM
Control
PLA
Control
Engine
Instruction
Decoder
P3
P2
P0
PORT 0
Vcc
Vss
P1
PORT 2
Driver
PORT 3
PSEN
ALE/PROG
EA/VDD
XTAL2
Control
Register Bank 3
Register Bank 2
Register Bank 1
Register Bank 0
Driver
OSC
&
Timing
Circuitry
XTAL1
Program Control
PCH
PCL
03/09/2012
Rotate Control
Interrupt
Control
4K×
×8
None (8031)
ROM (8051)
EPROM (8751)
EEPROM (8951)
P
Acc
B
IP
IE
SBUF
SCON
TH1
TL1
TH0
TL0
TMOD
TCON
DPH
DPL
SP
Program Memory Address Decoder
F0 RS1 RS0 OV
PORT 1
RAM Address Decoder
Arquitetura
Special Function Register Address Decoder
CY AC
Prof. Corradi - www.corradi.junior.nom.br
ALU
Parity
Internal Data Memory
Low 128 bytes
7FH
FFH
F0H F7 F6 F5 F4 F3 F2 F1 F0 B
Direct
and
Indirect
Addressing
E0H
18H
17H
7F
77
6F
67
5F
57
4F
47
3F
37
2F
27
1F
17
0F
07
7E
76
6E
66
5E
56
4E
46
3E
36
2E
26
1E
16
0E
06
R7
R0
R7
10H R0
0FH R7
08H
07H
R0
R7
00H
R0
Byte Address
03/09/2012
7D
75
6D
65
5D
55
4D
45
3D
35
2D
25
1D
15
0D
05
7C
74
6C
64
5C
54
4C
44
3C
34
2C
24
1C
14
0C
04
7B
73
6B
63
5B
53
4B
43
3B
33
2B
23
1B
13
0B
03
Bank 3
Bank 2
Bank 1
Bank 0
7A 79
72 71
6A 69
62 61
5A 59
52 51
4A 49
42 41
3A 39
32 31
2A 29
22 21
1A 19
12 11
0A 09
02 01
FFH
E7 E6 E5 E4 E3 E2 E1 E0 Acc
8052
only
D0H D7 D6 D5 D4 D3 D2 D1 D0 PSW
MOV 30H,A
MOV @R0,A
2FH
2EH
2DH
2CH
2BH
2AH
29H
28H
27H
26H
25H
24H
23H
22H
21H
20H
1FH
High 128 bytes
SFR ( Direct Addressing )
78
70
68
60
58
50
48
40
38
30
28
20
18
10
08
00
8052 only
8052 only
8052 only
8052 only
CDH
CCH
CBH
CAH
TH2
TL2
RCAP2H
RCAP2L
C8H
CF CE CD CC CB CA C9 C8 T2CON (8052)
B8H
-
B0H
B7 B6 B5 B4 B3 B2 B1 B0 P3
A8H AF
-
- BC BB BA B9 B8 IPC
A0H
A7 A6 A5 A4 A3 A2 A1 A0 P2
99H
98H
SBUF
9F 9E 9D 9C 9B 9A 99 98 SCON
90H
97 96 95 94 93 92 91 90 P1
8DH
8CH
8BH
8AH
89H
88H 8F 8E 8D 8C 8B 8A 89 88
87H
83H
82H
81H
80H
Indirect
Addressing
Only
- AD AC AB AA A9 A8 IEC
DPH
DPL
87 86 85 84 83 82 81 80 SP
P0
Byte Address
MOV @R0,A
TH1
TH0
TL1
TL0
TMOD
TCON
PCON
80H
Byte address
Prof. Corradi - www.corradi.junior.nom.br
156
Configuração Interna - I/O Ports
•Voltar
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
157
Mode 0 : (MCS-48 Timer - 13-bit Timer/Counter)
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
158
Mode 1 : ( 16-bit Timer/Counter)
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
159
Mode 2 : ( 8-bit Auto-reload Timer/Counter)
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
160
Mode 2 : ( 8-bit Auto-reload Timer/Counter)
Retorna
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
161
Mode 3 :("Split" Timer)
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
162
(TCON.0, 88H)
IT0
IP
IE
Interrupt Enable Interrupt Priority
Register
Register
0
(pin 12, INT0/P3.2)
1
IE0
INT0
0
EX0
1
PX0
(TCON.1, 89H) (IE.0, A8H)
1
TF0
(TCON.5, 8DH)
Timer 0 Overflow Flag
(TCON.2, 8AH)
0
ET0
PT0
(IE.1, A9H)
IT1
0
(pin 13, INT1/P3.3)
1
0
EX1
PX1
(TCON.3, 8BH) (IE.2, AAH)
(SCON.1, 99H)
TI
R1
(SCON.0, 98H)
(T2CON.7, CFH)
TF2
EXF2
(T2CON.6, CEH)
(IP.2)
(BAH)
1
TF1
(TCON.7, 8FH) Timer 1 Overflow Flag
(IP.1)
(B9H)
1
IE1
INT1
(IP.0)
(B8H)
0
ET1
PT1
(IE.3, ABH)
(IP.3)
(BBH)
1
0
ES
PS
(IE.4, ACH)
(IP.4)
(BCH)
1
0
ET2
PT2
(IE.5, ADH)
(IP.5)
(BDH)
EA
(IE.7, AFH)
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
High
Priority
0003H
000BH
0013H
001BH
0023H
002BH
polling
hardware
0003H
000BH
0013H
001BH
0023H
002BH
polling
hardware
Low
Priority
163
RST pino ( 9 ) – XTAL pino (18 e 19)
+5V
+5V
10µ
µF
MCS-51
+
9
1K
RST
8.2K
Reset no Microcontrolador
80C51
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
164
Internal Program & Data Memory
+5V
31
EA
19
X1
18
X2
20pF
20pF
12MHz
9
RST
+5V
+
10µ
µF
8,2K
03/09/2012
12
13
14
15
INT0
INT1
T0
T1
1
2
3
4
5
6
7
8
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
MCS-51
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
39
38
37
36
35
34
33
32
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
21
22
23
24
25
26
27
28
RD
WR
PSEN
ALE
TxD
RxD
17
16
29
30
11
10
Prof. Corradi - www.corradi.junior.nom.br
165
External Program Memory
31
19
EA
X1
20pF
18
X2
20pF 12MHz
9
+
10µ
µF
1K
1
2
3
4
5
6
7
8
39
38
37
36
35
34
33
32
3
4
7
8
13
14
17
18
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
21
22
23
24
25
26
27
28
11
RD
WR
PSEN
ALE
TxD
RxD
17
16
29
30
11
10
RST
+5V
12
13
14
15
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
INT0
INT1
T0
T1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
D0
D1
D2
D3
D4
D5
D6
D7
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
2
5
6
9
12
15
16
19
G
OC
1
74LS373
10
9
8
7
6
5
4
3
25
24
21
23
2
26
27
1
20
22
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15
O0
O1
O2
O3
O4
O5
O6
O7
11
12
13
15
16
17
18
19
CE
OE
27512
64K EPROM
MCS-51
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
166
External Data Memory
+5V
31
19
EA
X1
20pF
18
X2
20pF 12MHz
9
+
10µ
µF
1K
1
2
3
4
5
6
7
8
39
38
37
36
35
34
33
32
3
4
7
8
13
14
17
18
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
21
22
23
24
25
26
27
28
11
RD
WR
PSEN
ALE
TxD
RxD
17
16
29
30
11
10
RST
+5V
12
13
14
15
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
INT0
INT1
T0
T1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
D0
D1
D2
D3
D4
D5
D6
D7
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
2
5
6
9
12
15
16
19
G
OC
1
74LS373
10
9
8
7
6
5
4
3
25
24
21
23
2
26
1
20
27
22
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
CS1
O0
O1
O2
O3
O4
O5
O6
O7
11
12
13
15
16
17
18
19
WE
OE
62256
32K SRAM
MCS-51
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
167
Compreenda o formato Intel-HEX
Observe o exemplo abaixo
escrito no formato ASM51
cseg at 8000h
jmp main
org 8100h
main:
clr a
mov r7,#0
loop:
mov a,r7
cpl a
mov p1,a
mov r6,#50h
djnz r6,$
djnz r7,loop
jmp $
end
03/09/2012
Após o código ter sido compilado (Assembrer), obtemos o
Intel-HEX abaixo.
:03800000028100FA
:0F810000E47F00EFF4F5907E50DEFEDFF680FEA8
:00000001FF
Verifique também o arquivo Listing (.lst).
8000
8000 028100
8100
8100
8101
8103
8104
8105
8107
8109
810B
810D
E4
7F00
EF
F4
F590
7E50
DEFE
DFF6
80FE
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
cseg at 8000h
jmp main
org 8100h
main: clr a
mov r7,#0
loop: mov a,r7
cpl a
mov p1,a
mov r6,#50h
djnz r6,$
djnz r7,loop
jmp $
end
Prof. Corradi - www.corradi.junior.nom.br
• segue
168
Compreenda o formato Intel-HEX
O ficheiro INTELHEX,é uma forma de representar um ficheiro binário em ASCII
(representado em Hexadecimal)
Podem existir 3 representações:
• 8‐bit, para processadores de 8‐bit, com 16 bit de endereçamento
• 16‐bit para processadores bit, de 16‐bit, com 20 bit de endereçamento
segmentado
• 32‐bit, para processadores, com espaço de endereçamento de 32 bit
•• A representação hexadecimal do código é codificada em caracteres ASCII
alfanuméricos.
•• Assim o valor binário de 8 bit, 0011‐1111 é 3F em hexadecimal
•• Esta representação precisa de 2 x mais que os bytes na representação
binária
•• A representação hexadecimal é agrupada em “records”, a salientar:
– Data record (8‐, 16‐, 32‐ bit)
– End Of File record (8‐, 16‐, 32‐ bit)
• segue
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
169
Compreenda o formato Intel-HEX
Agora estude o significado de cada campo no arquivo .HEX.
• Retorna
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
170
Bloco de uma ROM
ROM
m+1 bit
Address
[Endereço]
Capacidade :
2
m +1
A0
A1
D0
D1
A2
D2
Am
2m+1 × (n + 1)
OE : Output Enable
n+1 bit
Data
Dn
ROM
PROM
EEPROM
connect to RD of µP
CE (CS )
03/09/2012
: Chip Enable
to Address decoder
CE
OE
Prof. Corradi - www.corradi.junior.nom.br
171
Dispositivos
U3
27XX EPROM
U1
8
7
6
5
4
3
2
1
23
22
19
20
18
21
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
U2
O0
O1
O2
O3
O4
O5
O6
O7
9
10
11
13
14
15
16
17
OE
CE
VPP
8
7
6
5
4
3
2
1
23
22
19
21
20
18
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
O0
O1
O2
O3
O4
O5
O6
O7
9
10
11
13
14
15
16
17
OE/VPP
CE
10
9
8
7
6
5
4
3
25
24
21
23
2
22
27
20
1
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
O0
O1
O2
O3
O4
O5
O6
O7
11
12
13
15
16
17
18
19
OE
PGM
CE
VPP
2716
2732
2764
16 kbit
2 kbyte
32 kbit
4 kbyte
64 kbit
8 kbyte
PGM and VPP are used to programming
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
172
Dispositivos
27XXX EPROM
U7
U4
10
9
8
7
6
5
4
3
25
24
21
23
2
26
22
27
20
1
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
U6
U5
D0
D1
D2
D3
D4
D5
D6
D7
11
12
13
15
16
17
18
19
OE
PGM
CE
VPP
10
9
8
7
6
5
4
3
25
24
21
23
2
26
27
22
20
1
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
D0
D1
D2
D3
D4
D5
D6
D7
11
12
13
15
16
17
18
19
10
9
8
7
6
5
4
3
25
24
21
23
2
26
27
1
OE
CE
22
20
VPP
28
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15
O0
O1
O2
O3
O4
O5
O6
O7
11
12
13
15
16
17
18
19
OE/VPP
CE
VCC
12
11
10
9
8
7
6
5
27
26
23
25
4
28
29
3
2
24
31
22
1
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15
A16
D0
D1
D2
D3
D4
D5
D6
D7
13
14
15
17
18
19
20
21
OE
PGM
CE
VPP
27128
27256
27512
27010
128 kbit
16 kbyte
256 kbit
32 kbyte
512 kbit
64 kbyte
1024 kbit
128 kbyte
03/09/2012
Prof. Corradi - www.corradi.junior.nom.br
173
Dispositivos
28XX E2PROM
8
7
6
5
4
3
2
1
23
22
19
20
21
18
24
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
I/O0
I/O1
I/O2
I/O3
I/O4
I/O5
I/O6
I/O7
9
10
11
13
14
15
16
17
10
9
8
7
6
5
4
3
25
24
21
23
2
OE
WE
CE
22
27
20
VCC
28
A0
I/O0
A1
I/O1
A2
I/O2
A3
I/O3
A4
I/O4
A5
I/O5
A6
I/O6
A7
I/O7
A8
A9 RDY/BUSY
A10
A11
A12
11
12
13
15
16
17
18
19
1
10
9
8
7
6
5
4
3
25
24
21
23
2
26
1
22
27
20
OE
WE
CE
VCC
28
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
D0
D1
D2
D3
D4
D5
D6
D7
11
12
13
15
16
17
18
19
OE
WE
CE
VCC
12
11
10
9
8
7
6
5
27
26
23
25
4
28
29
3
2
24
31
22
32
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15
A16
D0
D1
D2
D3
D4
D5
D6
D7
13
14
15
17
18
19
20
21
OE
WE
CE
VCC
12
11
10
9
8
7
6
5
27
26
23
25
4
28
29
3
2
30
1
24
31
22
32
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15
A16
A17
A18
D0
D1
D2
D3
D4
D5
D6
D7
13
14
15
17
18
19
20
21
OE
WE
CE
VCC
2816
2864
28256
28010
28040
16 kbit
2 kbyte
64 kbit
8 kbyte
256 kbit
32 kbyte
1026 kbit
128 kbyte
4096 kbit
512 kbyte
Prof. Corradi - www.corradi.junior.nom.br
174
03/09/2012
Dispositivos
RAM(Static)
m+1 bit
Address
Capacity :
2
m +1
A0
A1
D0
D1
A2
D2
Am
2m+1 × (n + 1)
RAM
n+1 bit
Data
Dn
Data bus is
Bidirectional
RD : Read signal
connect to MemRD of µP
WR : Write signal
connect to MemWR of µP
CS : Chip Select
to Address decoder
03/09/2012
CS
WR RD
Prof. Corradi - www.corradi.junior.nom.br
175
03/09/2012
Final da Apresentação
176

Documentos relacionados