Tutorial MC 8051

Tutorial MC 8051

(Parte 1 de 3)

MICROCONTROLADOR 8051

Alessandro de Souza Lima Vagner Santos da Rosa

NOTA IMPORTANTE: Esta documentação está em processo de revisão. Estamos trabalhando duro para assegurar que todas as informações contidas neste documento estejam corretas. Não nos responsabilizamos por qualquer dano ou perda provocado pelo uso deste material.

1 - Introdução aos Microcontroladores

Inicialmente, é importante frisarmos três conceitos:

a) Microprocessador: chip responsável pelo processamento em um microcomputador. É um elemento complexo, contendo, entre outras coisas, uma unidade lógica e aritmética (ULA) e diversos registros (registradores) especiais.

b) Microcomputador-de-um-só-chip: como o nome indica, reúne no mesmo chip os diversos elementos de um microcomputador: microprocessador, RAM, ROM, temporizadores, contadores, canal de comunicação serial e portas de I/O.

c) Microcontrolador: microcomputador-de-um-só-chip que pode ainda conter elementos para uso industrial, tais como conversores A/D e D/A, PLL, PWM, etc.

1.1 – Motivação para o Estudo de um Microcontrolador

O microcontrolador, hoje em dia, é um elemento indispensável para o engenheiro elétrico, eletrônico ou ainda para o técnico de nível médio da área, em função de sua versatilidade e da enorme aplicação. Entre algumas das aplicações de um microcontrolador podemos citar automação industrial, telefones celulares, auto-rádios, fornos de microondas e videocassetes. Além disso, a tendência da eletrônica digital é de se resumir a microcontroladores e a chips que concentram grandes circuitos lógicos, como os PLDs (Programmable Logic Devices). Para sistemas dedicados, o microcontrolador apresentase como a solução mais acessível, em função do baixo custo e facilidade de uso.

O 8051, da Intel, é, sem dúvida, o microcontrolador mais popular atualmente. O dispositivo em si é um microcontrolador de 8 bits relativamente simples, mas com ampla aplicação. Porém, o mais importante é que não existe somente o CI 8051, mais sim uma família de microcontroladores baseada no mesmo. Entende-se família como sendo um conjunto de dispositivos que compartilha os mesmos elementos básicos, tendo também um mesmo conjunto básico de instruções.

2 - Sistemas Microprocessados

Sistemas microprocessados são aqueles que têm por elemento central um microprocessador. O microprocessador funciona como um sistema seqüencial síncrono, onde a cada pulso, ou grupos de pulsos de clock, uma instrução é executada. Entre os microprocessadores mais conhecidos podemos citar o 8080 e 8085, Z-80, 8088, 8086, 80286, 68000, 80386 e superiores.

Embora já existam microprocessadores que trabalhem a centenas de MHz, o 8051 utiliza tipicamente um clock de 12 MHz, com tempos de execução de cada instrução variando entre 1µs e 4µs.

2.1 – Diagrama em Blocos de um Sistema Genérico com Microprocessador

Além do microprocessador, um sistema básico como este tem os seguintes elementos:

Interrupções: são entradas a partir de um sinal externo que fazem com que o processamento seja interrompido e seja iniciada uma subrotina específica. (Obs.: o 8051 tem interrupções com estrutura nesting, onde uma interrupção pode interromper outra que está sendo atendida, desde que tenha maior prioridade).

Gerador de Reset: responsável por inicializar o sistema ao ligar ou quando acionado.

Gerador de Clock: gera os pulsos necessários ao sincronismo do sistema.

Memória de Programa: memória onde o microprocessador vai procurar as instruções a executar. Em sistemas dedicados costumam-se utilizar memórias ROM, embora em alguns casos memórias RAM também sejam utilizadas.

Memória de Dados: memória onde o microprocessador lê e escreve dados durante a operação normal. Geralmente é do tipo volátil, embora memórias não-voláteis possam ser utilizadas.

Seleção de Endereços: lógica para escolher qual memória ou periférico o microprocessador vai utilizar.

Portas de I/O: sua função é a comunicação com o mundo externo. Através delas dispositivos como teclados, impressoras, displays, entre outros, comunicam-se com o sistema.

3 - Hardware

Como já foi citado, o 8051 é um microcontrolador de ampla utilização. O mesmo tem dois modos básicos de funcionamento:

a) modo mínimo, onde somente recursos internos são utilizados pela CPU. Neste modo, estão disponíveis 4 KB de ROM para memória de programa e 128 bytes de RAM para memória de dados. O modo mínimo possui a vantagem (além da economia de componentes e espaço físico) de poder utilizar as 4 portas de 8 bits cada para controle (I/O); b) modo expandido. Neste modo, a memória de programa (ROM), a memória de dados (RAM) ou ambas podem ser expandidas para 64 kB, através do uso de CIs externos. No entanto, apresenta a desvantagem de "perder" duas das 4 portas para comunicação com as memórias externas.

A pinagem para o 8051, é mostrada abaixo na figura 3.1:

Figura 3.1

Um exemplo de utilização do modo expandido é mostrado na figura 3.2. No caso, estão sendo utilizadas externamente tanto memória de programa como memória de dados, mas é possível a utilização de apenas uma delas (somente a ROM).

Figura 3.2 - Expandindo RAM e ROM

Como pode ser visto na figura 3.2, além das memórias faz-se necessário a utilização de um outro CI (no caso o 74373) para a multiplexação de dados e endereços. Ocorre da seguinte forma: no primeiro ciclo de máquina, o 8051 coloca nos pinos AD0 a AD7 o byte menos significativo do endereço externo e leva o pino ALE (Address Latch Enable - Habilitador da Trava de Endereços) a nível alto, de modo que o 74373 (oito Latches tipo D) coloque em suas saídas essa informação, e logo em seguida passa este pino para nível baixo, para que esse byte fique retido no 74373. Após isso, os pinos AD0 a AD7 estarão livres para o transporte dos dados.

O 8051 pode, no modo expandido, utilizar toda a memória de programa externa (com nível lógico 0 aplicado ao pino 31 - External Address NOT) ou ainda utilizar os primeiros 4 kB internos e o restante externo (com 1 em EA).

O CI 8031 é a versão sem ROM interna do 8051. O mesmo é muito utilizado em fase de desenvolvimento ou quando se quer produzir em pequenas quantidades. Como o 8031 tem a mesma pinagem que o 8051, o mesmo possui o pino EA, que deverá sempre ser utilizado em nível lógico baixo.

Retornando a figura 3.2, nela estamos utilizando 8kB de RAM externa, além dos 256 bytes de RAM interna. Além disso, temos um total de 8kB de memória ROM que, no caso do 8051, pode estar sendo utilizado apenas no CI externo ou com os 4096 bytes menos significativos em memória interna e os 4096 bytes mais significativos na memória externa.

Ainda em relação à figura 3.2, para fazer uma leitura na ROM externa, o pino PSEN será levado a nível baixo, para fazer uma leitura na RAM externa, o pino RD será levado a nível baixo e, para fazer uma escrita na RAM externa, o pino WR será levado a nível baixo.

4 - A Organização da Memória

As figuras 4.1 e 4.2 ilustram, respectivamente, a organização da memória de programa e da memória de dados do 8051.

É importante salientar que, diferentemente de outros sistemas baseados em microprocessador, onde cada endereço de memória identifica uma única posição física, no 8051 o mesmo endereço hexadecimal pode identificar 3 posições físicas diferentes (e até 4, no caso do 8052, que tem 256 bytes de RAM interna). Por exemplo, temos o endereço 23H na RAM interna, o endereço 23H na RAM externa e o endereço 23H na ROM externa. Mesmo com esses endereços "iguais", não há risco de confusão, pois as instruções e o modo de endereçamento são diferentes. Para deixar mais claro, vamos supor que queiramos carregar no acumulador o conteúdo de cada uma das posições 23H. Veja os exemplos abaixo:

a) da RAM interna

MOV A,23H ;end.direto b) da RAM externa

MOVX R0,#23H ;imediato ;R0 como ponteiro

MOVX A,@R0 ;indireto c) da ROM externa

A figura 4.3 mostra em detalhes a divisão da RAM interna do 8051. Note a presença dos 4 bancos de registradores auxiliares, cada um contendo 8 registradores (R0, R1, R2, R3, R4, R5, R6, R7). Estes registradores são utilizados para endereçamento indireto. Apesar de existirem 4 bancos de registradores, somente um está ativo por vez para uso como índice. A seleção do banco ativo é feita no registro de função especial PSW, que será visto em breve.

Como pode ser visto pela figura, os bytes 20 a 2F da RAM interna tem bits endereçáveis individualmente. Podemos, com os mesmos, executar várias instruções de bits. Por exemplo, a instrução SETB 3CH coloca em nível alto o bit 3C ou seja, o bit 4 da posição de memória 27 H da RAM interna. 5 - Os Registros de Função Especial

Os Registros de Função Especial (SFRs - Special Function Registers) são responsáveis pela maior parte do controle do 8051. Os mesmos são mostrados na figura 5.1, sendo que alguns deles possuem bits endereçáveis. Note que alguns dos bits endereçáveis possuem inclusive um nome mnemônico, para maior facilidade de desenvolvimento de software em compiladores.

Figura 5.1

A função básica de cada registro especial é descrita abaixo. Ao lado do registro está seu endereço na RAM. P0 (80H), P1 (90H), P2 (A0H) e P3 (B0): São as posições na RAM que contém os dados das 4 portas de I/O do microcontrolador, caso as mesmas sejam utilizadas com esse fim. Se for feita uma escrita em um desses registros, o conteúdo nos pinos correspondentes à porta será automaticamente alterado. Já uma leitura dos mesmos verifica o estado dos pinos. SP (81H): É o apontador de pilha (Stack Pointer), que aponta para o alto da pilha. DPL (82H) e DPH (83H): Em conjunto formam o DPTR, utilizado para endereçamento indireto de 16 bits. PCON (87H): O registro PCON (Power Control) permite adaptar o microcontrolador para redução de consumo com segurança. TCON (88H) e TMOD (89H): Registros dos Temporizadores/Contadores. Permitem a programação dos mesmos. TL0 (8AH), TH0 (8CH), TL1 (8BH) e TH1 (8DH): São os registros dos dados dos dois Temporizadores/Contadores (T0 e T1). SCON (98H) e SBUF (99H): Registros para uso da porta de comunicação serial. IE (A8H) e IP (B8H): Registro para programação (habilitação/desabilitação, prioridade etc.) das interrupções. PSW (D0H): O PSW (Program Status Word - palavra de status do programa) é o registro dos Flags do 8051 ACC (E0H): É o acumulador. B ( F0H): Registro auxiliar B.

A seguir, são mostrados com mais detalhes alguns dos registros de função especial. 5.1 – Palavra de Status de Programa ( P S W )

A palavra de status de programa ( PSW ) contém vários bits de status que refletem o estado corrente da CPU. O registro PSW é acessado pelo endereço D0h e também é bit endereçavel. A figura abaixo apresenta a estrutura do registro PSW, que reside no espaço de endereçamento de registros de função especial.

D7h D6h D5h D4h D3h D2h D1h D0h CY AC F0 RS1 RS0 OV - P

(Parte 1 de 3)

Comentários