Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


MCS-51 Microcontroladores: Família, Características e Memória, Provas de Engenharia Elétrica

Uma introdução à família mcs-51 de microcontroladores, suas características, como interrupções, memória de programa e dados, e um mapa completo de suas memórias internas. O microcontrolador 8051 é o núcleo da família e oferece vantagens como memória de dados interna e arquitetura de harvard.

Tipologia: Provas

Antes de 2010

Compartilhado em 09/11/2009

volnei-junior-12
volnei-junior-12 🇧🇷

4.7

(43)

293 documentos

1 / 14

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
CAPÍTULO II FAMÍLIA MCS-51
MICROCONTROLADORES (MCS-51) 2 - 1
CAPÍTULO II
FAMÍLIA MCS-51
2.1. INTRODUÇÃO
Este curso abordará somente a família MCS-51. Ela não é tão antiga e limitada como a
MCS-48 nem tão cara como a MCS-96. Por isso mesmo é atualmente a família de controladores de
maior emprego. É adequada para a grande maioria de aplicações a nível universitário.
2.2. FAMÍLIA MCS-48
A família MCS-51 originou-se a partir da MCS-48, daí o motivo de seu estudo neste
curso. Esta foi a primeira família de controladores lançada no mercado pela INTEL. As limitações
tecnológicas da época (1976) impuseram uma série de restrições mas, para a época, foi um grande
produto. Uma de suas maiores aplicações foram os teclados dos computadores de 16 bits, IBM PC
(lançados em 1981).
P1
P2
BUS
TEST
1PC
12 bits
Acc
PSW
ROM
1 KB
TIMER
RAM
END. IND.
32 bytes
R0 ... R7
8 bytes BK1
PILHA (8 niveis)
16 bytes
R0 ... R7
8 bytes BK0
C P U
8 bits
portas
paralelas
MICROCONTROLADOR 8048
8 bits
8 bits
8 bits
3 bits
8 bits
8 bits
11 bits
64 bytes
Figura 2.1. Diagrama em blocos do 8048.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe

Pré-visualização parcial do texto

Baixe MCS-51 Microcontroladores: Família, Características e Memória e outras Provas em PDF para Engenharia Elétrica, somente na Docsity!

MICROCONTROLADORES (MCS-51) 2 - 1

CAPÍTULO II

FAMÍLIA MCS-

2.1. INTRODUÇÃO

Este curso abordará somente a família MCS-51. Ela não é tão antiga e limitada como a MCS-48 nem tão cara como a MCS-96. Por isso mesmo é atualmente a família de controladores de maior emprego. É adequada para a grande maioria de aplicações a nível universitário.

2.2. FAMÍLIA MCS-

A família MCS-51 originou-se a partir da MCS-48, daí o motivo de seu estudo neste curso. Esta foi a primeira família de controladores lançada no mercado pela INTEL. As limitações tecnológicas da época (1976) impuseram uma série de restrições mas, para a época, foi um grande produto. Uma de suas maiores aplicações foram os teclados dos computadores de 16 bits, IBM PC (lançados em 1981).

P

P

BUS

TEST

1 PC

12 bits

Acc

PSW

ROM

1 KB

TIMER

RAM

END. IND. 32 bytes R0 ... R 8 bytes BK PILHA (8 niveis) 16 bytes R0 ... R 8 bytes BK

C P U

8 bits

portas

paralelas

MICROCONTROLADOR 8048

8 bits 8 bits 8 bits 3 bits 8 bits

8 bits

11 bits

64 bytes

Figura 2.1. Diagrama em blocos do 8048.

2 - 2 MICROCONTROLADORES (MCS-51)

O 8048 oferece os seguintes recursos:

  • Interrupções (em 1 nível somente),
  • Single Step,
  • 1K de ROM interna (8748 tinha uma EPROM de 1K),
  • Memória de Programa Externa de até 4 KB (PC=12 bits com o bit mais significativo, alterado pela instrução SEL, chaveando os 2 bancos de 2K),
  • Aceita outros periféricos (8155,8255,8355,8243,8279),
  • 96 instruções, 90% de 1 byte.

2.3. FAMÍLIA MCS-

O êxito da família MCS-48 e os avanços da tecnologia dos circuitos integrados levaram a INTEL a lançar no mercado a família MCS-51 em 1980. O microcontrolador 8051 é o membro original da família e também o núcleo para toda a MCS-51.

C P U

8 bits 8 bits 8 bits 8 bits 8 bits

TXD RXD

*INT

*INT

P

P

P

P

PORTA SERIAL

R O M

4 KB

P C

TIMER

TIMER

8051 MCS-51 CORE INTERRUPÇÕES EXTERNAS A0-A D0-D A8-A

ENTRADAS CONTADORES

R A M

S F R

21 bytes

128 bytes

DOS

(16 bits) (16 bits)

(16 bits)

(128 bytes)

1 bit 1 bit

1 bit 1 bit

PORTAS PARALELAS

1 bit 1 bit

Figura 2.2. Diagrama em blocos do 8051.

O 8051 oferece os seguintes recursos:

  • 5 Interrupções (2 externas, 2 dos timers/counters e 1 da porta serial),
  • 64 KB de Memória de Programa (PC=16 bits),
  • 64 KB de Memória de Dados,

2 - 4 MICROCONTROLADORES (MCS-51)

P0 → multiplexado com endereços (A0-A7) e dados (D0-D7) P2 → endereços A8-A ALE → Address Latch Enable. Sinal para demultiplexar P *EA → External Access Enable. Especifica o uso de memória de programa externa

Para executar um programa a partir de uma memória externa bastam algumas conexões simples:

8 bits ALE=1(A0-A7) ALE=0(D0-D7)

D Q

G

LATCH (^373) 8 bits (A0-A7)

8 bits (A8-A15)

8 0 5 1 R O M P0 (AD0-AD7)

ALE

P2 (A8-A15)

*PSEN

*EA

(D0-D7)

(A0-A7)

(A8-A15)

*OE

Figura 2.4. Microcontrolador com Memória de Programa externa.

Deve-se notar que a memória de programa só pode ser lida. São sempre emitidos endereços de 16 bits, por isso as portas P0 e P2 são sacrificadas quando se usa memória de programa externa.

Um acesso à memória de dados externa tem uma configuração muito semelhante:

MICROCONTROLADORES (MCS-51) 2 - 5

8 bits ALE=1(A0-A7) ALE=0(D0-D7)

D

Q

G

LATCH 8 bits (A0-A7)

8 0 5 1 S R A M

P0 (AD0-AD7)

ALE

P2 (A8-A15)

(D0-D7)

(A0-A7)

(A8-A15)

*RD *OE

*WR *WE

8 bits (^) n bits (8-n) bits (^) I/O P3. P3.

Figura 2.5. Microcontrolador com Memória de Dados externa.

Deve-se notar o uso de dois bits da porta P3. Por outro lado, se todo o programa está na ROM interna, a porta P2 não é totalmente sacrificada; somente são usados os bits necessários para emitir os endereços. Exemplo: RAM externa de 2 KB → 8 bits de P → 3 bits de P Sobram 5 pinos da porta P2.

OBSERVAÇÃO: No caso explicado acima, onde são usados somente 3 bits de P2, um acesso à memória de dados não pode ser efetuado com a instrução MOVX A,@DPTR. Deve ser trocada por:

MOV P2,#????? A10 A9 A8 ;especificar MSB do endereço MOV R0,# A7 A6 A5 A4 A3 A2 A1 A0 ;especificar LSB do endereço MOVX A,@R0 ;efetuar a leitura

MICROCONTROLADORES (MCS-51) 2 - 7

2.5. MEMÓRIA INTERNA (RAM INTERNA)

Uma das grandes vantagens do 8051 é oferecer uma memória de dados interna, com um mínimo de 128 bytes. Essa memória permite um rápido acesso aos dados e, em muitas aplicações, pode eliminar a necessidade da RAM externa, diminuindo portanto o custo do circuito controlador. Além da velocidade, existem áreas de RAM interna que são acessíveis bit a bit, o que é muito útil para operações booleanas. O espaço de endereçamento reservado para acessar a RAM interna é de 8 bits, o que proporciona um máximo de 256 bytes. Mas com um pequeno artifício é possível colocar mais 128 bytes, resultando num total de 384 bytes na RAM interna (assim é o 8052). Além disso, na RAM interna existem 4 bancos de 8 registros (R0, R1, ... , R7) que podem ser utilizados pelo usuário.

BANCO 0^0

BANCO 1 8

BANCO 2 10H

BANCO 3 18H

20H

30H

80H

BIT A BIT (16 bytes)

(80 bytes)

S F R

REGISTROS DE

FUNÇÕES

ESPECIAIS

(128 bytes)

(128 bytes)

80H

7FH

80H

0

FFH

FFH

128 UPPER (^) (Só para 8052) Endereçáveis indiretamente

128 bits endereços 0 ... 7FH

128 LOWER

endereços 0 ... 7FH

RAM INTERNA endereçáveis com modo direto ouindireto

e podem ser usados como pilha

(8 bytes) (8 bytes) (8 bytes) (8 bytes)

(128 LOWER + SFR + 128 UPPER)

S F R

LOWER

Figura 2.8. RAM interna do MCS-51.

A pilha sempre funciona na RAM interna e a consome muito; por isso nos 8052 o recurso de colocar a pilha nos 128 bytes endereçados indiretamente (128 UPPER) é muito atraente.

Exemplo: seja o caso onde não há RAM externa e se queira utilizar os 4 bancos, os 16 bytes endereçáveis bit a bit e mais 10 variáveis de 1 byte. Isso deixa 70 bytes para a pilha. Se forem usadas interrupções, para cada uma são guardados: PC (2 bytes), PSW, Acc e B ==> 5 bytes. Podem acontecer até 2 interrupções simultâneas, o que consome até 10 bytes. Logo, há 60 bytes

2 - 8 MICROCONTROLADORES (MCS-51)

disponíveis para a pilha. Se para cada CALL são guardados PC, PSW, Acc e B (5 bytes), há disponibilidade de até 12 CALL aninhados. Se a pilha for trabalhar nos 128 UPPER, subtraindo os 10 bytes para as interrupções têm-se 118 bytes, o que resulta em 23 CALL aninhados (23 x 5 =115 bytes) e ainda sobram 80 bytes para as variáveis nos 128 LOWER. Os bancos de registros são ótimos para guardar o contexto, principalmente no caso de interrupções. Estes são trocados com uma só instrução. Por exemplo, poder-se-ia usar: BK3 → interrupção porta serial BK2 → interrupção INT BK1 → interrupção INT BK0 → trabalho

Só pode haver um banco selecionado de cada vez mas todos os registros podem ser endereçados através do endereço de seu byte.

R

R

R

F

1F

10H

18H

endereços

128 LOWER

Se o banco 0 está selecionado MOV A,R MOV A,0 fazem o mesmo

Se o banco 1 está selecionado MOV A,R MOV A,0BH fazem o mesmo

Assim, mesmo quando um banco não está selecionado, seus registros são acessíveis pelo endereço R

R

R

R

R

R

R

R

R

BANCO 0

BANCO 1

BANCO 2

BANCO 3

de seu byte.

Figura 2.9. Endereço dos registros.

2 - 10 MICROCONTROLADORES (MCS-51)

A seguir é apresentada uma breve descrição de cada registro:

Acc → Acumulador

B → Usado durante as operações de multiplicação e divisão; nos demais casos pode ser usado como auxiliar.

PSW → Program Status Word ou Registro de Flags de Estado 7 6 5 4 3 2 1 0 CY Ac F0 RS1 RS0 0V - P PSW.7CY → Carry Flag PSW.6Ac → Carry auxiliar (operação com BCD – Binary Coded Decimal) PSW.5F0 → Flag 0, uso geral PSW.4RS1 → Selecionador de Banco (Range Selector), bit 1 PSW.3RS0 → Selecionador de Banco (Range Selector), bit 0

RS1 RS0 BANCO SELEC.

0 0 Banco 0 0 1 Banco 1 1 0 Banco 2 1 1 Banco 3 PSW.2OV → Overflow PSW.1- → Flag definível pelo usuário PSW.0P → Paridade (ímpar) P =1 → quantidade ímpar de 1s P =0 → quantidade par de 1s

SP → Ponteiro da Pilha (Stack Pointer), incrementado antes de PUSH e CALL

DPTR → Ponteiro para memória de dados externa (Data Pointer). É um registro de 16 bits formado por DPH e DPL

P0 , P1 , P2 , P3 → Latchs das portas paralelas

IP → Prioridade das interrupções (Interrupt Priority)

IE → Habilitação das interrupções (Interrupt Enable)

MICROCONTROLADORES (MCS-51) 2 - 11

TMOD → Modo de operação dos Timers/Counters (Timer/Counter Mode)

TCON → Controle dos Timers/Counters (Timer/Counter Control)

SCON → Controle da porta serial (Serial Control)

SBUF → Dois registros, um para leitura e outro para escrita (Serial Buffer) Leitura → receber o dado da porta serial Escrita → enviar o dado para a porta serial

PCON → Controle de energia (Power Control); coloca no modo "Power Down" ou "Idle"

2.7. MAPA DA RAM INTERNA

Aqui é apresentado um mapa completo da RAM Interna da MCS-51. Os endereços dos bytes vão de 0H até FFH. Existem dois grupos de bytes:

  • 128 LOWER → de 00H até 7FH.
  • SFR → de 80H até FFH.

Observações:

  1. Os registros ou endereços em negrito são endereçáveis bit a bit.
  2. Usam-se as letras "BK" para abreviar a palavra "banco".
  3. As células marcadas com "-" são inexistentes.
  4. A seqüência de endereços é da direita para a esquerda e de baixo para cima.

MICROCONTROLADORES (MCS-51) 2 - 13

2.8. MAPA DOS BITS

A seguir, na figura 2.12 é apresentado um mapa com todos os bits do MCS-51. São 256 bits e, portanto, ocupam 32 bytes. Estão marcados o endereço dos bits, o nome e o byte ao qual pertencem. Existem duas classes de bits: os que pertencem ao 128 LOWER e têm os endereços de 00H a 7FH e os que pertencem aos SFR e têm os endereços de 80H até FFH. Alguns bits não existem ou serão utilizados em futuras versões e estão marcados com "-". Como será abordado mais adiante, os bits podem ser endereçados de até 4 formas diferentes. Como exemplo, uma instrução para habilitar a recepção serial (setar o bit REN), poderia ser:

  1. SETB REN
  2. SETB SCON.
  3. SETB 98H.
  4. SETB 9CH

2 - 14 MICROCONTROLADORES (MCS-51)

MAPA DOS 256 BITS

END BIT

BIT 7

BIT 6

BIT 5

BIT 4

BIT 3

BIT 2

BIT 1

BIT 0

END BIT

END BYTE

NOM BYTE FFH - - - - - - - - F8H F8H F7H B.7 B.6 B.5 B.4 B.3 B.2 B.1 B.0 F0H F0H B EFH - - - - - - - - E8H E8H E7H Acc.7 Acc.6 Acc.5 Acc.4 Acc.3 Acc.2 Acc.1 Acc.0 E0H E0H Acc DFH - - - - - - - - D8H D8H - D7H CY AC F0 RS1 RS0 OV P D0H D0H PSW CFH - - - - - - - - C8H C8H - C7H - - - - - - - - C0H C0H - BFH - - - PS PT1 PX1 PT0 PX0 B8H B8H IP B7H P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 B0H B0H P AFH EA - - ES ET1 EX1 ET0 EX0 A8H A8H IE A7H P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 A0H A0H P 9FH SM0 SM1 SM2 REN TB8 RB8 TI RI 98H 98H SCON 97H P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 90H 90H P 8FH TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 88H 88H TCON 87H P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 80H 80H P 7FH 7FH 7EH 7DH 7CH ... 78H 2FH 77H 70H 2EH 6FH 68H 2DH 67H 60H 2CH 5FH 58H 2BH 57H 50H 2AH 4FH 48H 29H 47H 40H 28H 3FH 38H 27H 37H 30H 26H 2FH 28H 25H 27H 20H 24H 1FH 18H 23H 17H 10H 22H 0FH ... 0BH 0AH 09H 08H 08H 21H 07H 07H 06H 05H 04H 03H 02H 01H 00H 00H 20H Figura 2.12. Mapa completo dos bits do 8051.