(Parte 1 de 6)

DEPARTAMENTO DE ELECTROTECNIA Sistemas Digitais µControladores da Família 51

João Paulo Baptista

1 Família de Micro Controladores 80511
2 Arquitectura Base1
4 Sistema de Memória2
4.2 Memória de Dados4
4.2.1 Memória de Dados Interna4
4.2.2 Memória de dados externa7
4.3 Multiplexagem de Barramentos8
5 Portos de Entrada / Saída de Dados9
6 Temporizadores / Contadores12
6.1 Registo TMOD12
6.3 Funcionamento dos Temporizadores / Contadores13
7.1 Funcionamento em transmissão de dados16
7.2 Funcionamento em recepção de dados16
7.3 Registo de Controlo do Porto Série17
7.4 Funcionamento em MODO 018
7.5 Funcionamento em MODO 118
7.6 Funcionamento em MODO 219
7.7 Funcionamento em MODO 319
7.8 Comunicações em Rede de µCs19
8 Sistema de Interrupções21
8.1 Registo de Permissão das Interrupções22
A1 Conjunto de Instruções do 8051I
A1.1 Endereçamento de OperandosI
A1.1.1 Endereçamento por RegistoI
A1.1.2 Endereçamento directoI
A1.1.3 Endereçamento Indirecto por RegistoII
A1.1.4 Endereçamento ImediatoI
A1.1.5 Endereçamento Indirecto por Registo Base + Registo ÍndexII
A2 Tabelas de InstruçõesI
Figura 1 – Diagrama de blocos dos µCs da família 511
Figura 2 – Duas caixas possíveis para o µC2
Figura 3 – Memória interna de dados4
Figura 4 – Memória interna de dados (0 – 7F)5
Figura 5 – Mapa de memória dos SFRs5
Figura 6 – Registo de Estados (PSW)7
Figura 7 – Escrita na memória externa de dados8
Figura 8 – Leitura da memória externa de dados8
Figura 9 – Leitura de código da memória externa de programa8
Figura 10 – Interligação do 8051 com memória externa9
Figura 1 – Hardware de um bit do Porto 010
Figura 12 – Hardware de um bit do Porto 110
Figura 13 – Hardware de um bit do Porto 211
Figura 14 – Hardware de um bit do Porto 311
Figura 15 – Registo para definição do modo de funcionamento dos T/Cs12
Figura 16 – Registo de controlo dos T/Cs13
Figura 17 – T/C 1 programado em Modo 0 (contador de 13 bits)14
Figura 18 – T/C 1 programado em Modo 2: contador de 8 bits com auto recarga14
Figura 19 – T/C 0 programado em Modo 315
Figura 20 - Diagrama de blocos da UART16
Figura 21 - Registo de controlo do Porto Série (SCON)17
Figura 2 - Transmissão de dados em Modo 018
Figura 23 - Recepção de dados em Modo 018
Figura 24 - Rede de µCs master-slave20
Figura 25 – Sistema base de interrupções dos µCs da família 5121

1 Família de Micro Controladores 8051

O 8051 é um µControlador de 8 bits desenvolvido originalmente pela INTEL em 1980. Trata-se sem dúvida do núcleo de µControlador mais popular em todo o mundo, sendo desenvolvido por um grande número de fabricantes que lhe vão introduzindo ao longo do tempo novos melhoramentos essencialmente no que diz respeito aos periféricos que lhe estão associados.

Um 8051 típico contém: • CPU com processador booleano

• 6 fontes de interrupção com possibilidade de diferentes níveis de prioridade

• Temporizadores / Contadores de 16 bits

• Porto de comunicação série, com taxas de comunicação programáveis

• RAM de dados interna

• ROM / EPROM / EEPROM / FLASH interna para armazenamento de programa (não existente em alguns modelos)

O conjunto de instruções do 8051 encontra-se optimizado para as operações ao bit permitindo uma mais fácil implementação de software de controlo em tempo real. O processador booleano fornece suporte directo para a manipulação de bits, conduzindo a programas mais eficientes no que toca às operações de entrada e saída de dados tão importantes na resolução de problemas de controlo digital.

2 Arquitectura Base A fig. 1 apresenta a arquitectura base dos µControladores da família 51.

Figura 1 – Diagrama de blocos dos µCs da família 51

• CPU – unidade de processamento central.

• Memória de Programa – memória interna destinada a armazenar o código correspondente ao programa a executar pelo µC. Esta memória pode não existir em alguns modelos de µC.

• Memória de Dados – memória interna destinada ao armazenamento de dados.

• Controlo de Interrupções – permite a detecção e consequente processamento de um conjunto de sinais de interrupção externos e internos.

• Timer 0 e Timer 1 – temporizadores / contadores de 16 bits que podem ser activados a partir do exterior.

• Porto Série – dispositivo implementado por uma UART (Universal Assynchronous Receiver Transmiter) permitindo efectuar comunicações série com o exterior.

• Portos de I/O – conjunto de 4 portos paralelos para o interface com o exterior. Dois destes portos podem ser usados para implementar barramentos de acesso a dispositivos de memória exteriores.

• Controlo do Barramento – quando é utilizada memória externa ao mC, este bloco contém o hardware necessário para o controlo das transferências de informação.

• Oscilador – permite gerar os sinais de relógio necessários ao funcionamento do µC.

3 ‘PinOut’ do µControlador Na fig. 2 mostram-se duas caixas possíveis para este µC.

Figura 2 – Duas caixas possíveis para o µC

Como já foi referido no parágrafo 2, os diferentes elementos da família 51 dispõe de memória interna de dados e, na maior parte das vezes, de memória interna de programa. Alguns exemplos de µCs desta família:

µControlador Mem. Programa Interna (bytes)

Mem. Programa Externa (bytes)

Mem. de Dados Interna (bytes)

Mem. de Dados Externa (bytes)

80C31 0 Até 64K 256 Até 64k 87C51 4K (EPROM) Até 64K 256 Até 64k 8051 4K (ROM) Até 64K 256 Até 64k 89C51 4K (Flash) Até 64K 384 Até 64k

89C51RD2 64K (Flash) Até 64K 384 Até 64k 89C2051 2K (Flash) 0 256 0

Tabela 1

De notar que nestes µCs, o espaço de endereçamento da memória de programa é totalmente distinto do espaço de endereçamento da memória de dados, o que permite, com um barramento de endereços de 16 bits, obter 64K bytes de programa mais 64K bytes de dados. Comparando com o Z80, em que estes dois espaços de endereçamento se sobrepõe (64K programa + dados), este µC consegue endereçar o dobro de memória.

A razão de ser deste aumento do espaço de endereçamento tem a ver com o barramento de controlo do 8051. No processador Z80, conforme foi estudado anteriormente, o barramento de controlo para o acesso às memórias dispõe unicamente de um sinal de escrita (WR) e de um de leitura (RD). Estes sinais são utilizados quer se esteja a fazer um acesso à memória de programa quer se esteja a aceder à memória de dados. No caso dos µCs 51, existe uma distinção entre o barramento de controlo para a memória de programa (PSEN) e o barramento de controlo para a memória de dados (WR e RD). Este duplo barramento aliado à existência de instruções específicas para acesso a cada uma daquelas zonas de memória, permite a duplicação da capacidade de endereçamento nestes µControladores.

4.1 Memória de Programa

Os µCs da família 51 têm capacidade para endereçar um total de 64K bytes de memória de programa. Esta memória pode estar fisicamente situada

• no interior do µC

• no interior e no exterior do µC

• no exterior do µC

Como foi referido na Tabela 1, a quantidade de memória de programa existente no interior do µC depende do modelo que se está a utilizar. Normalmente este valor pode variar entre 0 (p. ex. 8031) e 64K bytes (p. ex. T89C51RD2).

Quando é utilizada memória externa de programa ou de dados, a comunicação com os dispositivos de memória é feita à custa de 3 barramentos:

• Barramento de Endereços, com 16 bits, implementado fisicamente a partir dos Portos 0 e 2 do µC. • Barramento de Dados, com 8 bits, implementado fisicamente a partir do Porto 0 do µC.

• Barramento de Controlo que é constituído pelos sinais PSEN (pino 29) e ALE (pino 30). O PSEN é o sinal de leitura da memória de programa. A função do ALE será analisada num parágrafo posterior.

Como se pode ver, os barramentos de endereços e de dados partilham um porto do 51 – Porto 0. Este processo de partilha será analisado mais à frente no parágrafo que diz respeito à Multiplexagem de Barramentos.

Ainda em relação ao acesso à memória de programa, o sinal EA (pino 31) permite-nos indicar ao µC se a memória de programa está no seu interior ou no seu exterior. Assim, se EA estiver ligado a VCC (nível lógico 1) o µC faz a pesquisa das instruções de programa a partir da sua memória interna de programa. Se EA estiver ligado ao nível lógico 0 (VSS), a pesquisa é feita da memória externa de programa, através dos barramentos descritos anteriormente.

De notar que, mesmo que exista uma certa quantidade de memória interna de programa, é sempre possível fazer a sua expansão até 64K utilizando memória externa. Neste caso EA deverá ser colocado a 1 para permitir aceder à memória interna. O µC é capaz de detectar quando é feito um acesso a um endereço da memória externa, colocando automaticamente em funcionamento os barramento para que a instrução possa ser pesquisada do exterior.

Como se pode ver na Tabela 1, há alguns µCs desta família que não permitem a expansão de memória. É o caso do 89C2051 que dispõe internamente de 2K bytes de memória de programa mas que, devido à sua construção, não apresenta os Portos 0 e 2, impossibilitando por isso a implementação dos barramentos de acesso ao exterior.

Relativamente à memória de dados, os µCs da família 51 dispõe de 256 (384) bytes de RAM interna, permitindo ainda a implementação de 64K bytes no seu exterior. Em alguns elementos da família é possível encontrar ainda 64 a 2K bytes de memória com tecnologia EProm para o armazenamento de dados que necessitam de retenção em caso de falha de alimentação.

4.2.1 Memória de Dados Interna

Como se mostra na fig. 3, a memória interna de dados é constituída por 2 ou 3 espaços de endereçamento. A existência do 3º espaço de endereçamento, que aparece a tracejado na figura, depende do modelo do µC.

(Parte 1 de 6)

Comentários