80C51 Microcontrolador de 8 Bits - Parte 3 (MIC106)

Nas duas primeiras partes deste artigo (MIC104 e MIC105) descrevemos a arquitetura e o Set de instruções do Microcontrolador de 8 bits 80C51, da Philips Components, projetado especialmente para aplicações de controle de processos em tempo real. Nesta última parte do artigo falaremos do Hardware da família, o que possibilitará ao projetista saber com que elementos internos ao componente pode contar e também com que periféricos. Maiores informações, conforme dito nos artigos anteriores, podem ser obtidas no manual do componente.

Na figura 1 temos um diagrama que nos mostra o 80C51 em sua totalidade, e a partir do qual faremos a descrição deste componente.

 

Figura 1 – Diagrama do 80C51
Figura 1 – Diagrama do 80C51

 

Esta descrição inclui os seguintes itens:

As ports drivers e como elas funcionam, tanto como ports propriamente ditos, como para o caso da porta e port1, como barramento de operações.

Os timers/contadores

A interface serial

O sistema de interrupções

O reset

Os modos de potência reduzida para versões CMOS

A versão EPROM do 80C51

 

REGlSTRADORES EFUNÇOES ESPECIAIS

Na figura 2 temos o mapa da memória on-chip mostrando a área deominada Special Function Register ou SFR.

 

Figura 2 – Mapa da Memória
Figura 2 – Mapa da Memória

 

Observe que existem endereços não ocupados nesta área, e que são utilizados pelo fabricante em produtos derivados desta série.

São as seguintes as funções que encontramos na SFH:

 

Acumulador

ACC é o registrador do Acumula Registrador B

Este registrador é usado nas operações de multiplicação e divisão.

 

Program Status Word

Ele contém o programa PSW.

 

Stack Pointer

É o apontador de pilha, e tem 8 bits de largura.

 

Data Pointer

É o apontador de dados (DPTR), e consiste num bit alto (DPH) e um bit baixo (DPL), sendo destinado ao manuseio de endereços de 16 bits.

 

Ports 0 a 3

P0, P1, P2 e P3 são os latches do SPR.

 

Buffer de Dados Serial

O Buffer de Dados Serial é na realidade formado por dois registradores separados, sendo um para transmissão e outro para recepção de dados.

 

Registradores de Tempo Básicos para o 80C51

Os pares THO, TLO e TH1 e TL1 são registradores de contagem de 16 bits para os timers/contadores 0 e 1 respectivamente,

 

Registrador de Controle para o 80C51

Registradores de funções especiais lP, lE, TMOD, TCON, SCON e PCON contém os bits de status e controle para o sistema de interrupções.

 

ESTRUTURA DAS PORTS E OPERACAO

Todas as 4 ports disponíveis no 80C51 são bidirecionais, Cada qual consiste num latch (Registradores de Funções Especiais) de P0 a P3, um driver de saída e um buffer de entrada.

 

Configurações l/O

Na figura 3 temos um diagrama funcional de um latch de bit típico para o buffer I/O de cada um dos 4 ports.

 

Figura 3 – Latches e Buffer
Figura 3 – Latches e Buffer

 

Conforme mostrado nesta figura, os drivers dos ports 0 e port 2 são comutáveis internamente por um barramento ADDR e ADDR/DATA a partir de um sinal de CONTROL.

Este recurso é usado quando a memória Externa é acessada. As ports 1, 2 e 3 possuem pull-ups internos, e a port 0 é do tipo open-drain (dreno aberto).

Devido ao fato de que as ports 1, 2 e 3 possuem pull-ups internos, eles também são denominados "quase-bidirecionais".

 

Carregando os Ports e Interfaceando

Os buffers de saídas das ports 1, 2 e 3 podem excitar 4 entradas TTL LS. Tanto os pinos das versões NMOS como CMOS podem ser excitados por saídas tipo open collector ou open-drain, mas as transições de 0 para 1 não podem ser muito rápidas.

Os buffers da port 0 podem excitar 8 entradas TTL LS.

 

Acessando a Memória Externa

Os acessos às memórias externas são de dois tipos: acessos à Memória Externa de Programa e Acessos à Memória Externa de Dados.

 

Times/Contadores

O 80051 possui dois timers/contadores de 16 bits. Eles são denominados Timer 1 e Timer 0, podendo ambos ser configurados para operar como timers ou contadores de eventos.

 

Timer 0 e Timer 1

A função Timer ou Contador É selecionada pelos bits de controle CIT no Registrador de Funções Especiais.

Estes dois Times/Contadores têm quatro modos de operação, que são selecionados pelos pares de bits (M1, M0) na entrada TMOD.

Os modos 0, 1 e 2 são os mesmos tanto para timers como Conta- dores. O modo 3 é diferente.

 

Modo 0:

Colocando o timer no modo 0 ele se comporta como um 8048 (timer), que é um contador de 8 bits com um prescaler divisor por 32.

Na figura 4 temos o modo de operação 0 como aplicado ao Timer 1.

 

Figura 4 – Modo de operação 0
Figura 4 – Modo de operação 0

 

 

Modo 1:

O Modo 1 é idêntico ao Modo 0, exceto pelo fato de que o timer opera com todos os 16 bits.

 

Modo 2:

O Modo 2 configura o registrador timer como um contador de 8 bits (TL1) com reload automático, como mostrado na figura 5. O Modo e de operação é semelhante tanto para o timer/Contador 1 como para o 0.

 

Figura 5 – Timer/Contador no modo 2
Figura 5 – Timer/Contador no modo 2

 

 

Modo 3:

Nesta modalidade o Timer3 simplesmente manipula a sua contagem. O efeito é o mesmo que setar TR1=O.

 

Interface Serial Standard

A port serial é totalmente duplex, o que significa que ele pode transmitir e receber simultaneamente. Ela também é "receive-buffered', o que significa que pode começar a recepção de um segundo byte antes de um byte previamente recebido ser lido do registrador.

A port serial pode operar de 4 modos:

 

Modo 0:

Os dados serial entram e saem via RxD. A saída TxD fornece o clock deslocado. A velocidade de transmissão/recepção é fixada em 1/12 da freqüência do clock.

 

Modo 1:

10 bits são transmitidos (via TxD) ou recebidos (via FixD). A velocidade de transmissão/recepção é variável.

 

Modo 2:

11 bits são transmitidos (via TxD) ou recebidos (via RxD). A velocidade é programada tanto para 1/32 como 1/64 da freqüência do oscilador.

 

Modo 3:

Nesta modalidade de operação 11 bits são transmitidos (através de TxD) ou recebidos (através de RxD). A velocidade é variável.

 

Comunicações do microprocessador

Os modos 2 e 3 possuem provisão especial para a comunicação com o microprocessador. Neste modo, 9 bits de dados são recebidos.

Quando o processador principal (master) precisa transmitir um bloco de dados para um ou mais secundários (escravos) ele envia um byte de endereço que identifica o alvo.

 

Registrador de Controle de Port Serial

O controle de port serial e o registrador de status são constituídos por um registrador de função especial (SCON). Ele contém não só os bits do modo de seleção como também o 99 bit de dados para transmitir ou receber e os bits de interrupção do port serial.

 

Velocidade (Baud Rates)

No modo 0 é 1/12 de freqüência do oscilador.

No modo 2 depende do valor do bit SMOD. Nos modos 1 e 3 são determinados pela taxa de overflow do Timer 1.

 

Usando o Timer 1 para gerar Baud Rates

Conforme vimos, podemos usar o timer 1 para gerar o padrão de velocidade de transmissão nos modos 1 e 3.

 

INTERRUPÇÕES

O 80C51 possui 5 fontes de interrupções. Estas fontes são mostradas na figura 6.

 

Figura 6 = Portas de Interrupções do 80C51
Figura 6 = Portas de Interrupções do 80C51

 

As interrupções externas lNT1 e INT0 podem ser ativadas tanto por nível como por transição, dependendo dos bits lT0 e IT1 no Registrador TCON.

As interrupções Timer 0 e Timer 1 são geradas por TF0 e TF1.

A interrupção para Port Serial é gerada pela lógica OR ou RI e TI.

Cada uma destas fontes de interrupção pode ser habilitada individualmente ou desabilitada, através de um bit no Registrador de Funções Especiais.

 

Estrutura do Nível de Prioridade:

Cada fonte de interrupção pode também ser individualmente programada para um ou dois níveis de prioridade através de bit no Registrador de Funções Especiais lP.

 

Como as interrupções são Manuseadas:

Os flags de interrupções são amostrados em S5P2 em cada ciclo de máquina.

As amostras são então listadas no ciclo seguinte de máquina. Se algum dos flags estiver numa condição de set no S5P2 do ciclo precedente, então o ciclo de listagem termina e o sistema de interrupções vai gerar um LCALL para a rotina apropriada de serviço.

Este LCALL gerado pelo hardware não é bloqueado numa das seguintes condições:

1. Uma interrupção de igual ou maior nível de prioridade está em execução.

2. O ciclo corrente de listagem não está no ciclo final na execução da instrução em progresso.

3. A instrução em progresso é FlET1 ou qualquer que esteja nos registradores de IE ou lP.

 

Interrupções Externas:

As fontes externas de interrupção podem ser programadas para serem ativadas por nível ou transição, pela colocação ou apagamento do bit lT1 ou lT0 no registrador TCON.

Como os pinos de interrupções externas são amostrados uma vez em cada ciclo de máquina, uma entrada alta ou baixa deve durar pelo menos 12 períodos do oscilador para que a amostragem seja garantida.

 

Tempos de Resposta:

Na figura 7 temos um diagrama para os tempos de interrupção.

 

Figura 7 – Tempos de interrupção
Figura 7 – Tempos de interrupção

 

Um tempo maior de resposta pode resultar se uma requisição for bloqueada por uma das 3 condições que vimos no item anterior. Num sistema de interrupção simples o tempo de resposta é sempre maior que 3 ciclos e menor que 9 ciclos.

 

Operação de Passo Simples (Single Step):

A estrutura de interrupções do 80C51 permite que ocorra a execução por passos simples com um software muito pequeno.

 

Reset:

O pino reset é RST e dá acesso a um Schmitt Trigger. O reset deve ter uma duração que seja de pelo menos dois ciclos de máquina ou 12 ciclos do oscilador.

Na aplicação deste sinal. a CPU responde gerando um reset interno com as características de temporização mostradas na figura 8.

 

Figura 8 – Tempos de reset
Figura 8 – Tempos de reset

 

 

O sinal de reset externo é assíncrono em relação ao clock interno, conforme pode ser observado.

A RAM interna não é afetada pelo reset. Na alimentação, o conteúdo da RAM é indeterminado.

 

Reset no Power-on:

Quando a alimentação é estabelecida, ou seja, Vcc é estabelecido, um reset automático é gerado, através de um capacitor de 10 µF e um resistor de 8,2 kΩ, conforme mostra a figura 9.

 

Figura 9 – Resetno Power-On
Figura 9 – Resetno Power-On

 

Para a versão CMOS, no caso o próprio 80C51, o resistor de pull-down não é necessário.

Quando a alimentação é estabelecida, a carga do capacitor mantém o pino de reset alto pelo tempo necessário à realização desta instrução.

 

Modos de Operação de Baixo Consumo:

Nas aplicações em que um baixo consumo é importante, o 8OC51 (versão CMOS) conta com recursos especiais para esta modalidade de operação.

São disponíveis dois modos de operação em baixo consumo: idle e power-down.

Na figura 10 temos o hardware para estas duas modalidades de operação.

 

Figura 10 – Operação de baixo consumo
Figura 10 – Operação de baixo consumo

 

No modo Idle (ID=1) o oscilador continua funcionando, e as interrupções, ports serial, e blocos de timers continuam também operando, mas o sinal de clock da CPU é desligado.

Na operação Power Down (PD=1) o oscilador é congelado.

 

OSCILADORES ON-CHIP

Na figura 11 temos o circuito usado nos osciladores on-chip dos microcontroladores 80C51 (versão CMOS).

 

Figura 11 – Osciladores on-chip
Figura 11 – Osciladores on-chip

 

Conforme podemos ver, eles são formados por um inversor simples do tipo linear, de um estágio, que permite a utilização de um cristal no controle de freqüência.

Entretanto, este circuito tem recursos para que possa ocorrer a interrupção do funcionamento do oscilador por meio de software apropriado. O resistor Rf (feedback) na figura consiste em dois FETs de canal n e canal p em paralelo, controlados pelo bit PD, de tal forma que Rf está aberto quando PD=1.

Para excitar o clock a partir de fonte externa de sinal, a entrada deve ser feita pelo terminal XTAL1, e o terminal XT AL2 deve ser deixado flutuante.

 

Temporização Interna:

Existem várias modalidades de temporização interna, conforme sejam usados os sinais das ports ou strobe, Os tempos de subida e descida de cada terminal dependem da carga externa que cada pino tem de excitar. Na sua maioria está em torno de 10 ns.

Estes tempos são para uma variação entre 0,8 e 2,0 V.

Os tempos de propagação são diferentes para os diversos pinos do 80C51.

Levando-se em conta as variações de temperatura e tolerâncias dos processos de fabricação, elas podem estar entre + 200% e - 200%.

 

CONCLUSÃO

O que vimos nestes três artigos foi um resumo do que podemos encontrar nos dispositivos 80C51, microcontroladores de 8-bits da Philips Components, em sua versão CMOS. Além deste componente há de se considerar todos os seus periféricos e, com o conjunto, o projetista pode ter uma imagem melhor de onde usar esta família de microcontroladores.

 


Localizador de Datasheets


N° do componente 

(Como usar este quadro de busca)

Opinião

Mudanças realizadas (OP206)

Nas últimas semanas nosso site e mesmo nossa empresa passaram por diversas modificações, atualizações e lançamentos. Assim, muitos podem ter percebidos alguns problemas de instabilidade do site em certos momentos nas semanas passadas.

Leia mais...