Exemplo de Projeto com Microcontrolador MCS-51iris.sel.eesc.usp.br/sel433a/Aula8.pdf · Externa...
Transcript of Exemplo de Projeto com Microcontrolador MCS-51iris.sel.eesc.usp.br/sel433a/Aula8.pdf · Externa...
Exemplo de Projeto com Microcontrolador MCS-51
Prof. Adilson Gonzaga
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
Microcontrolador AT89S52
Prof. Adilson Gonzaga 3
Microcontrolador AT89S52
Prof. Adilson Gonzaga 4
Características de Alimentação
Prof. Adilson Gonzaga 5
Para que se possa utilizar circuitos integrados no padrão TTL, a alimentação recomendada é Vcc = 5v
Valores Máximos suportados pelo componente:
Características Elétricas do AT89S52
Prof. Adilson Gonzaga 6
Freqüência de Operação
Prof. Adilson Gonzaga 7
Para poder projetar uma interface serial operando em Baud Rate padrão, 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
)(100592,11
16
clockdoPeríodoP⋅
= )(100592,11
16
clockdoPeríodoP⋅
=Se o cristal é de
11.0592 Mhz:
sPM µ085,1100592,11
11212
6=
⋅⋅=⋅= sPM µ085,1
100592,11
11212
6=
⋅⋅=⋅=Ciclo de Máquina (M):
Ciclos de Máquina
Reset de Power-On e Manual
Prof. Adilson Gonzaga 10
Δt ≥ 2*1,085 μs ≥ 2,17 μs
Δt = R*C = 10k*C
pFC 2171010
1017,23
6
>×
×=
−
Não há precisão na escolha do capacitor.
Logo, escolhendo C =1μF >> 217pF smsxt µ17,2101011010 63>>=××=∆
−
Reset e Cristal
Prof. Adilson Gonzaga 11
Recursos Internos do Microcontrolador� 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 Microcontrolador
� 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).
� 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
Timming dos Dutos de Dados e de 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 Latch (74373)� Deve-se armazenar (latch) o Duto de Endereços (A0 a A7) durante o pulso de ALE.
Prof. Adilson Gonzaga 15
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 16
Duto de
Dados
Duto de
Endereços
As Memórias Externas poderão ser acessadas em toda a extensão de 64k x 8 Bytes
Mapa de Memória de Programa Externa
Prof. Adilson Gonzaga 17
O AT89S52 possui 8 Kbytes de Memória de Programa Interna
Memória de Programa Interna
0000h
1FFFh
8 KBytes
Para utilizar toda a Memória de Programa Interna e também a 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 Externa
Prof. Adilson Gonzaga 18
Memória de Programa Interna (8k)
Memória de Programa Externa (56k)
0000h
1FFFh
2000h
FFFFh
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
Duto (Bus) de Endereços
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 Externa
Prof. Adilson Gonzaga 19
Decodificação das linhas de Endereço
da Memória de Programa Externa
S = A15 + A14 + A13
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 Externa
Prof. Adilson Gonzaga 20
Memória de Programa Interna (8k)
Memória de Programa Externa (56k)
0000h
1FFFh
2000h
FFFFh
S = 1
S = 0
Mapa de Memória de Programa Externa
Prof. Adilson Gonzaga 21
Se 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 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
A15 A14 A13 Saída
0 0 0 Y0
0 0 1 Y1
0 1 0 Y2
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 Externa
Prof. Adilson Gonzaga 22
Memória de Programa Interna (8k)
Y0
0000h
1FFFh
2000h
FFFFh
S = 1
S = 0
Y1(8k)Y2(8k)Y3(8k)Y4(8k)Y5(8k)Y6(8k)Y7(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
Memória de Programa (64k) particionada em 8 blocos de 8 Kbytes
Ciclo de Leitura na Memória de Programa 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 –64k bytes de Memória de Programa
Prof. Adilson Gonzaga 24
D0 a D7
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 Memória de Programa
Prof. Adilson Gonzaga 26
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.
Memória de Programa
Dispositivo 1
Dispositivo 2
Dispositivo n
0000
FFFFh
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 Programa Externa com 16Kbytes de ROM e um conjunto de 8 chaves mecânicas.
Prof. Adilson Gonzaga 27
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
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 Chaves
Prof. Adilson Gonzaga 28
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
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 de Dados (Espaço da Memória de Programa)
� É 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 = Z).
Prof. Adilson Gonzaga 30
Memória de Programa:0000 a 3FFFh (16 Kbytes)
Chaves:Qualquer endereço no intervalo:8000h a FFFFhAcessa o conjunto de 8 chaves
Qual 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 mostra 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 Memória de Dados Externa
Prof. Adilson Gonzaga 32
A Demultiplexação dos dutos realizada para a Memória de Programa Externa é também utilizada para endereçar a Memória de Dados Externa.
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 de Dados Externa - RAM (64K)
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 Dados Externa ( MOVX A,@DPTR )
Prof. Adilson Gonzaga 34
No início do Ciclo de Máquina de uma instrução MOVX A,@DPTRo 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 Dados Externa ( MOVX A,@Ri)
Prof. Adilson Gonzaga 35
No início do Ciclo de Máquina de uma instrução MOVX A,@Rio 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.A Porta P2 não é utilizada para endereçamento.
O dado acessado no endereço ( Ri) é colocado no Duto de Dados (Porta P0).
Ciclo de Escrita na Memória de Dados Externa (MOVX @DPTR,A)
Prof. Adilson Gonzaga 36
No início do Ciclo de Máquina de uma instrução MOVX @DPTR,Ao 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 Dados Externa (MOVX @Ri,A)
Prof. Adilson Gonzaga 37
No início do Ciclo de Máquina de uma instrução MOVX @Ri,Ao 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. A Porta P2 não é utilizada para endereçamento.
O dado a ser armazenado no endereço ( Ri) é colocado no Duto de Dados (Porta P0).
Observações:� Tanto na Leitura como na Escrita usando as instruções:MOVX A,@RiMOVX @Ri,A
a Porta P2 não é utilizada como duto, logo, pode ser 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 Externa
Prof. Adilson Gonzaga 39
0000h
FFFFh
Y1(8k)Y2(8k)Y3(8k)Y4(8k)Y5(8k)Y6(8k)Y7(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
Memória de Dados (64k) particionada em 8 blocos de 8 Kbytes
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 Dados Externa
Prof. Adilson Gonzaga 40
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.
Memória de Dados
Dispositivo 1
Dispositivo 2
Dispositivo n
0000
FFFFh
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.
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 (Espaço da Memória de Dados Externa)
� Exemplos de Dispositivos de Entrada:
◦ Conversor A/D
◦ Chaves
◦ 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 32 Kbytes de RAM + 8 Chaves e 8 Leds.
Prof. Adilson Gonzaga 42
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 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 8000h
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 Entrada 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 lógico um.
Exemplo_3: Espaço da RAM Externa com 32 Kbytes de RAM + 8 Chaves e 8 Leds.
Prof. Adilson Gonzaga 44
_________
15ARDSi +=
A15 Si
0 0 1
0 1 0
1 0 1
1 1 1
15AWRSo ⋅=
A15 So
0 0 0
0 1 1
1 0 0
1 1 0
____
WR
_____
RD
Programa que lê as chaves, armazena o byte equivalente na RAM Externa e acende ou apaga os Leds correspondentes
Prof. Adilson Gonzaga 45
LED é aceso com nível lógico UM
Chave Fechada = Nível lógico ZERO
Projeto: (Entregar até o dia da P2)
Prof. Adilson Gonzaga 46
Projetar um Circuito Microcontrolado baseado no AT89S52 e com os seguintes requisitos mínimos:
a) Memória de Programa externa = mínimo de 8K Bytesb) Memória de Dados externa = mínimo de 8k Bytesc) Teclado Matricial de 16 teclas. Cada tecla apertada gera sinal na INT1 d) Display LCD de 16 caracteres x 2 linhase) Quatro Motores de Passo com acionamentos independentesf) Um sensor óptico conectado na Interrupção externa INT0g) Um “encoder óptico” conectado na entrada T0h) Um Conversor A/D de 8 Bitsi) Um Conversor D/A de 8 Bitsj) Interface Serial RS232k) 8 Leds de sinalização
Fornecer o Esquema eletrônico (Hardware), o Mapeamento de
memória e Periféricos.