exemplo de projeto com microcontroladormicrocontrolador ...iris.sel.eesc.usp.br/sel614/aula7.pdf ·...
TRANSCRIPT
Exemplo de Projeto com Exemplo de Projeto com
MicrocontroladorMicrocontrolador MCSMCS--5151
Prof. Adilson Gonzaga
Definições Iniciais:Definições Iniciais:
� Microcontrolador
◦ Tamanho da Memória de Programa
Interna � define o tamanho da Memória
de Programa Externa a ser utilizada.
� Periféricos
◦ Definição das Interfaces necessárias ao
projeto (Serial,Teclado, Display,
conversores A/D e D/A, sensores,
atuadores, etc...)
Prof. Adilson Gonzaga 2
MicrocontroladorMicrocontrolador AT89S52AT89S52
Prof. Adilson Gonzaga 3
MicrocontroladorMicrocontrolador AT89S52AT89S52
Prof. Adilson Gonzaga 4
Características de AlimentaçãoCaracterísticas de Alimentação
Valores Máximos suportados pelo componente:
Prof. Adilson Gonzaga 5
Para que se possa utilizar circuitos integrados
no padrão TTL, a alimentação recomendada é
Vcc = 5v
Características Elétricas do AT89S52Características Elétricas do AT89S52
Prof. Adilson Gonzaga 6
Freqüência de OperaçãoFreqüência de Operação
Para poder projetar uma
interface serial operando
em Baud Rate padrão,
será utilizado um Cristal
Prof. Adilson Gonzaga 7
será utilizado um Cristal
de 11,0592 MHz
Logo :
1 ciclo de máquina (M) = 12 períodos de clock (P)
• Um ciclo de máquina (M) consiste de uma seqüência de 6
estados (S1 a S6).
• Cada estado é formado por 2 períodos de clock (P1 e P2).
Ciclos de Máquina
1 ciclo de máquina (M) = 12 períodos de clock (P)
Se o cristal é de
11.0592 Mhz:
Ciclo de Máquina (M):
Ciclos de Máquina
Reset de Reset de PowerPower--OnOn e Manuale Manual
Δt ≥ 2*1,085 μs ≥ 2,17 μs
Δt = R*C = 10k*C
1017,26
>×
=−
Prof. Adilson Gonzaga 10
pFC 2171010
1017,23
>×
×=
Não há precisão na escolha do capacitor.
Logo, escolhendo C =1μF >> 217pF smsxt µ17,210101101063
>>=××=∆−
Reset e CristalReset e Cristal
Prof. Adilson Gonzaga 11
Recursos Internos do Recursos Internos do
MicrocontroladorMicrocontrolador� Caso as necessidades do projeto exijam apenas os Recursos
internos de memória, as Interfaces podem utilizar as Portas
P0, P1, P2 e P3.
Prof. Adilson Gonzaga 12
Acesso a Recursos Externos ao Acesso a Recursos Externos ao
MicrocontroladorMicrocontrolador� Os microcontroladores da
família MCS-51 possuem
o duto de Dados (D0 a
D7) multiplexado ao Duto
de Endereços (A0 a A7)
na Porta P0 (AD0 a AD7).na Porta P0 (AD0 a AD7).
� Torna-se necessário,
portanto, demultiplexar os
dois dutos para gerar o
duto de Dados (D0 a D7)
e o duto de Endereços
(A0 a A15)
separadamente.
Prof. Adilson Gonzaga 13
TimmingTimming dos Dutos de Dados e dos Dutos de Dados e
de Endereços Externosde Endereços Externos
Prof. Adilson Gonzaga 14
O 8051 mantém os endereços de
A0 a A7 na Porta P0 enquanto
pulsa o ALE (Adress Latch Enable)
Depois desse tempo, o 8051
transforma os pinos da P0
em Duto de Dados (D0 a D7)
Os pinos da Porta P2 (A8 a A15) são mantidos constantes durante todo o ciclo
de máquina
Circuito de Circuito de LatchLatch (74373)(74373)
� Deve-se armazenar (latch) o Duto de Endereços
(A0 a A7) durante o pulso de ALE.
Um circuito de latch apropriado é o 74373 que possui 8 Flip-Flops tipo D
e controle de tri-state das saídas.
Prof. Adilson Gonzaga 15
Duto de
Dados
Duto de
Endereços
Prof. Adilson Gonzaga 16
As Memórias Externas
poderão ser acessadas
em toda a extensão de
64k x 8 Bytes
Mapa de Memória de Programa Mapa de Memória de Programa
ExternaExternaO AT89S52 possui 8 Kbytes de Memória de Programa Interna
Memória
1FFFhPara utilizar toda a
Memória de Programa
Interna e também a
Memória de Programa
Prof. Adilson Gonzaga 17
Memória
de
Programa
Interna
0000h
8 KBytes
Memória de Programa
Externa, o endereço de
início desta deverá ser:
2000h
Se for utilizada apenas a Memória de Programa Externa, esta
começará no endereço: 0000h
Mapa de Memória de Programa Mapa de Memória de Programa
ExternaExterna
Memória
de
Programa
FFFFh
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
Duto (Bus) de Endereços
Prof. Adilson Gonzaga 18
Memória
de
Programa
Interna (8k)
Programa
Externa
(56k)
0000h
1FFFh
2000h
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
Decodificação de Endereços (2000h a FFFFh)
Qualquer endereço igual ou maior que
2000h pode ser decodificado pelas
linhas A13, A14 e A15.
Se o número binário formado por A15 A14 A13
for maior ou igual a 1, o endereço equivalente
será maior ou igual a 2000h
Mapa de Memória de Programa Mapa de Memória de Programa
ExternaExternaDecodificação das linhas de Endereço
da Memória de Programa Externa
S = A15 + A14 + A13
Prof. Adilson Gonzaga 19
S = 1 se o endereço estiver no intervalo de 2000h a FFFFh
S = 0 se o endereço estiver no intervalo de 0000 a 1FFFh
Mapa de Memória de Programa Mapa de Memória de Programa
ExternaExterna
Memória
de
Programa
Externa
FFFFh
S = 1
Prof. Adilson Gonzaga 20
Memória
de
Programa
Interna (8k)
Externa
(56k)
0000h
1FFFh
2000h
S = 0
Mapa de Memória de Programa Mapa de Memória de Programa
ExternaExternaSe o componente de memória utilizado tiver capacidade inferior a 56 K,
deverá ser realizada uma Associação de componentes. Neste caso, o
mapa de memória definido por S deverá ser particionado considerando-se
os blocos existentes.
A15 A14 A13 Saída
0 0 0 Y0
0 0 1 Y1
0 1 0 Y2
0 1 1 Y3
Prof. Adilson Gonzaga 21
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 Y3
1 0 0 Y4
1 0 1 Y5
1 1 0 Y6
1 1 1 Y7
Neste caso toda a Memória de Programa está particionada em 8 Blocos
de 8k. O Y0 refere-se aos endereços de 0000 a 1FFFh, e não deve ser
usado pois acessa a Memória Interna (A15=A14=A13=0)
Mapa de Memória de Programa Mapa de Memória de Programa
ExternaExterna
FFFFh
S = 1
Y4(8k)
Y5(8k)
Y6(8k)
Y7(8k)
56k
Memória de Programa (64k) particionada em 8 blocos de 8 Kbytes
Prof. Adilson Gonzaga 22
Memória
de
Programa
Interna (8k)
Y0
0000h
1FFFh
2000h
S = 0
Y1(8k)
Y2(8k)
Y3(8k)
Y4(8k) 56k
A15 A14 A13 Saída End.
Inicial
End.
Final
0 0 0 Y0 0000h 1FFFh
0 0 1 Y1 2000h 3FFFh
0 1 0 Y2 4000h 5FFFh
0 1 1 Y3 6000h 7FFFh
1 0 0 Y4 8000h 9FFFh
1 0 1 Y5 A000h BFFFh
1 1 0 Y6 C000h DFFFh
1 1 1 Y7 E000h FFFFh
Ciclo de Leitura na Memória de Ciclo de Leitura na Memória de
Programa ExternaPrograma Externa
Prof. Adilson Gonzaga 23
No início do Ciclo de Máquina o
8051 pulsa o ALE para que se
possa armazenar externamente o
Duto de Endereços (A0 a A7)
Após esse tempo, o 8051 coloca
em zero o pino PSEN, para que
se possa ler a instrução no
endereço acessado (A0 a A15)
Exemplo_1: Mapeamento completo Exemplo_1: Mapeamento completo ––
64k bytes de Memória de Programa64k bytes de Memória de Programa
D0 a D7
Prof. Adilson Gonzaga 24
A0 a A7
A8 a A15
Prof. Adilson Gonzaga 25
Memória ROM de
64k Bytes
A chave em EA seleciona se a Memória
de Programa é Externa de 64k (EA=0)
ou Interna de 8k (EA=1) mais 56k de
memória externa.
Espaço de Endereçamento da Espaço de Endereçamento da
Memória de Programa Memória de Programa
As 64 K posições da Memória de Programa podem ser também
utilizadas tanto por componentes de memória (ROM) como por
dispositivos de Entrada de Dados.
Dispositivo nFFFFh
Os dispositivos de Interface podem ocupar
Prof. Adilson Gonzaga 26
Memória de
Programa
Dispositivo 1
Dispositivo 2
0000
Os dispositivos de Interface podem ocupar
uma ou várias posições de memória e somente
poderão ser Interfaces de Entrada, ou seja, o
programa somente conseguirá ler cada
dispositivo e NUNCA escrever.
Exemplos de Dispositivos de entrada de Dados:
Chaves, Conversor A/D, sensores, Portas de
Entrada.
Exemplo_2: Espaço da Memória de Exemplo_2: Espaço da Memória de
Programa Externa com 16Kbytes de ROM Programa Externa com 16Kbytes de ROM
e um conjunto de 8 chaves mecânicas.e um conjunto de 8 chaves mecânicas.A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0000
3FFFh
Espaço de 16 K da Memória de Programa Externa
Prof. Adilson Gonzaga 27
Enquanto A14 e A15 forem zero, o espaço acessado pelo microcontrolador
refere-se aos primeiros 16 Kbytes .
Se A15 =1 Faixa de endereços de 8000h a FFFFh (32 Kbytes)
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
8000h
FFFFh
Este espaço pode ser usado para dispositivos de entrada de dados
Seleção dos Endereços das Seleção dos Endereços das
ChavesChaves
Se A15 =1 Faixa de endereços de 8000h a FFFFh (32 Kbytes)
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
8000h
FFFFh
Este espaço pode ser usado para dispositivos de entrada de dados
Prof. Adilson Gonzaga 28
Lógica de seleção dos endereços das chaves:
PSENAS +=_____
15
S somente será igual a
zero no intervalo de
endereços de 8000h a
FFFFh, pois A15 =1 e
durante o pulso de
leitura, PSEN = 0
Chaves conectadas diretamente no Duto Chaves conectadas diretamente no Duto
de Dados (Espaço da Memória de de Dados (Espaço da Memória de
Programa)Programa)� E necessário utilizar um circuito Octal
Buffer/Line Driver – Tri-state
Ex: 74244
Prof. Adilson Gonzaga 29
As Saídas “Y” copiam as entradas “A” quando os pinos
“OE” estão em nível baixo. Caso contrário, as saídas
ficam em “tri-state” (Alta impedância).
Memória de Programa:
0000 a 3FFFh
(16 Kbytes)
Prof. Adilson Gonzaga 30
Chaves:
Qualquer endereço no intervalo:
8000h a FFFFh
Acessa o conjunto de 8 chavesQual instrução pode ser usada para
ler o valor das 8 chaves?
Res: MOVC A,@A+DPTR tendo carregado antes o DPTR
MOV DPTR,#8000h ou com qualquer outro valor até FFFFh
Ex: Programa que lê as chaves e Ex: Programa que lê as chaves e
mostra seu valor na P1 continuamentemostra seu valor na P1 continuamente
Prof. Adilson Gonzaga 31
Observe que qualquer valor no DPTR entre 8000h e FFFFh gera
sinal de leitura no circuito de “Line-Driver” das chaves.
Espaço de Endereçamento da Espaço de Endereçamento da
Memória de Dados ExternaMemória de Dados ExternaA Demultiplexação dos dutos realizada para a Memória de Programa
Externa é também utilizada para endereçar a Memória de Dados Externa.
Prof. Adilson Gonzaga 32
O que diferencia o espaço de endereçamento da Memória de Programa
Externa do espaço de endereçamento da Memória de Dados Externa
são as linhas de leitura (RD) e escrita (WR).
Mapeamento Completo da Memória Mapeamento Completo da Memória
de Dados Externa de Dados Externa -- RAM (64K)RAM (64K)
O pino EA não tem
Prof. Adilson Gonzaga 33
O pino EA não tem
nenhum efeito sobre a
Memória Externa de
Dados
E possível escrever ou ler
em qualquer posição, de
0000 a FFFFh, usando as
instruções MOVX
Ciclo de Leitura na Memória de Ciclo de Leitura na Memória de
Dados Externa ( MOVX A,@DPTR )Dados Externa ( MOVX A,@DPTR )
Prof. Adilson Gonzaga 34
No início do Ciclo de Máquina de
uma instrução MOVX A,@DPTR
o 8051 pulsa o ALE para que se
possa armazenar externamente o
Duto de Endereços (A0 a A7)
O DPL é enviado
para a Porta P0 e o
DPH para a Porta
P2. O pino RD ativa
a leitura
O dado acessado no
endereço (DPH DPL)
é colocado no Duto
de Dados (Porta P0).
Ciclo de Leitura na Memória de Ciclo de Leitura na Memória de
Dados Externa ( MOVX A,@Ri)Dados Externa ( MOVX A,@Ri)
Prof. Adilson Gonzaga 35
No início do Ciclo de Máquina de
uma instrução MOVX A,@Ri
o 8051 pulsa o ALE para que se
possa armazenar externamente o
Duto de Endereços (A0 a A7)
O Ri é enviado para
a Porta P0. O pino
RD ativa a leitura
O dado acessado no
endereço ( Ri) é
colocado no Duto de
Dados (Porta P0).
Ciclo de Escrita na Memória de Ciclo de Escrita na Memória de
Dados Externa (MOVX @DPTR,A)Dados Externa (MOVX @DPTR,A)
Prof. Adilson Gonzaga 36
No início do Ciclo de Máquina de
uma instrução MOVX @DPTR,A
o 8051 pulsa o ALE para que se
possa armazenar externamente o
Duto de Endereços (A0 a A7)
O DPL é enviado
para a Porta P0 e o
DPH para a Porta
P2. O pino WR
ativa a escrita
O dado a ser
armazenado no
endereço (DPH DPL)
é colocado no Duto
de Dados (Porta P0).
Ciclo de Escrita na Memória de Ciclo de Escrita na Memória de
Dados Externa (MOVX @Ri,A)Dados Externa (MOVX @Ri,A)
Prof. Adilson Gonzaga 37
No início do Ciclo de Máquina de
uma instrução MOVX @Ri,A
o 8051 pulsa o ALE para que se
possa armazenar externamente o
Duto de Endereços (A0 a A7)
O Ri é enviado para
a Porta P0. O pino
WR ativa a escrita
O dado a ser
armazenado no
endereço ( Ri) é
colocado no Duto de
Dados (Porta P0).
Observações:Observações:
� Tanto na Leitura como na Escrita usando as
instruções:
MOVX A,@Ri
MOVX @Ri,A
a Porta P2 não é utilizada como duto, logo, pode ser
utilizada como porta comum.utilizada como porta comum.
Prof. Adilson Gonzaga 38
O acesso à Memória de Dados Externa Usando estas
instruções, atinge apenas do endereço 0000 a 00FFh ( as
primeiras 256 posições).
Mapa de Memória de Dados Mapa de Memória de Dados
ExternaExterna
FFFFh
Y4(8k)
Y5(8k)
Y6(8k)
Y7(8k)
64k
Memória de Dados (64k) particionada em 8 blocos de 8 Kbytes
Prof. Adilson Gonzaga 39
0000h
Y1(8k)
Y2(8k)
Y3(8k)
Y4(8k) 64k
A15 A14 A13 Saída End.
Inicial
End.
Final
0 0 0 Y0 0000h 1FFFh
0 0 1 Y1 2000h 3FFFh
0 1 0 Y2 4000h 5FFFh
0 1 1 Y3 6000h 7FFFh
1 0 0 Y4 8000h 9FFFh
1 0 1 Y5 A000h BFFFh
1 1 0 Y6 C000h DFFFh
1 1 1 Y7 E000h FFFFh
Y0(8k)
As linhas RD e WR garantem que as
saídas (Y0 a Y7) fiquem ativas
somente durante uma leitura ou
escrita no endereço selecionado.
Espaço de Endereçamento da Memória de Espaço de Endereçamento da Memória de
Dados Externa Dados Externa As 64 K posições da Memória de Dados Externa podem ser
também utilizadas tanto por componentes de memória (RAM) como
por dispositivos de Entrada/Saída de Dados.
Dispositivo nFFFFh
Os dispositivos de Interface podem ocupar
uma ou várias posições de memória e poderão
ser Interfaces de Entrada ou Saída.
Prof. Adilson Gonzaga 40
Memória de
Dados
Dispositivo 1
Dispositivo 2
0000
Se o dispositivo for uma Entrada, o pino de RD será
ativado e a instrução a ser usada é do tipo
MOVX A,@DPTR
Se o dispositivo for uma Saída, o pino de WR será
ativado e a instrução a ser usada é do tipo
MOVX @DPTR,A
Entrada e Saída mapeada em Memória Entrada e Saída mapeada em Memória
(Espaço da Memória de Dados Externa)(Espaço da Memória de Dados Externa)
� Exemplos de Dispositivos de Entrada:
◦ Conversor A/D
◦ Chaves
◦ Sensores◦ Sensores
� Exemplos de Dispositivos de Saída:
◦ Conversor D/A
◦ Displays
◦ Leds
◦ Atuadores (Relês, motores, etc...)
Prof. Adilson Gonzaga 41
Exemplo_3: Espaço da RAM Externa com Exemplo_3: Espaço da RAM Externa com
32 Kbytes de RAM + 8 Chaves e 8 32 Kbytes de RAM + 8 Chaves e 8 LedsLeds..
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mapeamento:
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0000
7FFFh
Espaço de 32 Kbytes de RAMA15=0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8000h
Prof. Adilson Gonzaga 42
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 FFFFh
Espaço de 32 Kbytes (Mapeados como I/O)A15=1
A15 RD WR RAM Entrada Saída
0 x x Ativa Desativada Desativada
1 0 1 Desativada Ativa Desativada
1 1 0 Desativada Desativada Ativa
Circuitos de interface para a Circuitos de interface para a
Entrada e para a SaídaEntrada e para a Saída
Prof. Adilson Gonzaga 43
Line-driver para a
Entrada: (74244)
O circuito é
ativado com nível
lógico zero
Latch para a
Saída: (74373)
O circuito é
ativado com
nível nível
lógico um.
Exemplo_3: Espaço da RAM Externa com Exemplo_3: Espaço da RAM Externa com
32 Kbytes de RAM + 8 Chaves e 8 32 Kbytes de RAM + 8 Chaves e 8 LedsLeds..
_________
15ARDSi +=
A15 Si
0 0 1
0 1 0
1 0 1
1 1 1
_____
RD
Prof. Adilson Gonzaga 44
15ARWSo ⋅=
A15 So
0 0 0
0 1 1
1 0 0
1 1 0
____
WR
Programa que lê as chaves, armazena o byte Programa que lê as chaves, armazena o byte
equivalente na RAM Externa e acende ou apaga os equivalente na RAM Externa e acende ou apaga os
LedsLeds correspondentescorrespondentes
Prof. Adilson Gonzaga 45
LED é aceso com nível lógico UM
Chave Fechada = Nível lógico ZERO
Projeto: Projeto: (Entregar até o dia da P2)(Entregar até o dia da P2)
Projetar um Circuito Microcontrolado baseado no AT89S52 e com os
seguintes requisitos mínimos:
a) Memória de Programa externa = mínimo de 8K Bytes
b) Memória de Dados externa = mínimo de 8k Bytes
c) Teclado Matricial (hexadecimal) de 16 teclas. Cada tecla apertada gera
sinal na INT1
Prof. Adilson Gonzaga 46
sinal na INT1
d) Display LCD de 16 caracteres x 2 linhas
e) Quatro Motores de Passo com acionamentos independentes
f) Um sensor óptico conectado na Interrupção externa INT0
g) Um “encoder óptico” conectado na entrada T0
h) Um Conversor A/D de 8 Bits
i) Um Conversor D/A de 8 Bits
j) Interface Serial RS232
k) 8 Leds de sinalização
Fornecer o Esquema eletrônico (Hardware), o Mapeamento de
memória e Periféricos e o “data sheet” (pinagem e Tabela Verdade)
de cada circuito integrado utilizado.
Escrever um programa em Assembly, para o projeto desenvolvido que:
a) Rode na memória de programa externa.
b) Leia continuamente o conversor A/D, envie o valor lido para o conversor D/A e
armazene na RAM externa cada valor lido em intervalos de 1 segundo. Quando
a RAM externa estiver cheia, o programa deve continuar a armazenando a partir
da primeira posição.
c) Na primeira linha do display de LCD deve aparecer o valor em hexadecimal de
cada byte lido do A/D sempre na mesma posição. A mesma informação deve ser
enviada para um monitor RS232 a uma taxa de 9600,N,8,1.
d) Se o valor do conversor A/D estiver entre 00 e 1Fh, acender somente o led
menos significativo, entre 20h e 3Fh acender somente o segundo led, entre 40h
Prof. Adilson Gonzaga 47
menos significativo, entre 20h e 3Fh acender somente o segundo led, entre 40h
e 5Fh acender o próximo e assim por diante até entre E0h e FFh que deve
acender apenas o led mais significativo.
e) Se uma descida de borda for detectada pelo sensor óptico, acionar os quatro
motores de passo na velocidade de 100 Hz, sentido horário, contar o número de
pulsos do encoder óptico durante 10 segundos e enviar o valor hexadecimal
para a segunda linha do display de LCD.
f) O código 3F4Dh digitado no teclado dispara todo o processo e o código E123h
termina o programa e envia a mensagem “Programa suspenso” para o display
de LCD e para o monitor de vídeo na mesma taxa do item c.