Você está na página 1de 148

CAPÍTULO

1

Blocos funcionais do microcomputador

Introdução

O microcomputador

Blocos Funcionais

1 BREVE HISTORIA DOS MICROCOMPUTADORES

1.1 - Introdução

Os avanços tecnológicos conseguidos na fabricação de semicondutores permitiram o surgimento dos microprocessadores. Com isso, foi possível que os computadores se tornassem cada vez mais compactos e seus custos mais acessíveis, permitindo uma ampliação nas possibilidades de suas utilizações.

Onde não se imaginava utilizar sistemas computadorizados há poucos anos atrás, hoje já se faz um amplo uso do computador. Como a indústria tem como principal objetivo, um aumento na qualidade de seus produtos e aumentar a quantidade de produtos fabricados no mesmo tempo, é indispensável que os profissionais do ramo eletrônico tenham um bom conhecimento sobre seu funcionamento.

A seguir são apresentados alguns eventos cronologicamente, que podem ser considerados como relevantes para a história do atual microcomputador. Foram estas idéias iniciais que levaram a tecnologia ao que ela é hoje.

1642 Com 19 anos de idade Pascal inventa a primeira calculadora automática (inteiramente mecânica) para ajudar o pai que era cobrador de impostos.

1820 Charles Babbage inventa a Difference Enginepara uso na navegação naval, apenas somava e subtraía.

1834 Charles Babbage tenta criar a Analytical Engine, o primeiro computador digital

programável totalmente mecânico. Gasta 17000 libras do governo britânico e toda a sua fortuna pessoal no projeto. No entanto, problemas de natureza mecânica nunca permitiram que a máquina funcionasse com êxito.

1936 Surge o primeiro computador a relés projetado por um estudante de engenharia alemão,

nunca chegou a ser usado, pois foi destruído durante um bombardeio de Berlim pelos aliados.

1943 Colossus: Primeiro computador eletrônico encomendado pelo governo britânico para

decifrar comunicações dos submarinos alemães, cifradas com outra máquina chamada Enigma. Possuía dimensões gigantescas, cerca de 1.500 válvulas e era capaz de processar cerca de 5.000 caracteres por segundo.

1944 Mark I: Primeiro computador americano de uso genérico produzido como o apoio da

IBM (International Business Machines), projetado em Harvard. Armazenava 72 words de 23

dígitos e tinha um tempo de instrução de 6s. Media dezoito metros de comprimento, por dois metros e meio de altura.

1946 ENIAC (Electronic Numerical Integrator and Calculator): Primeiro computador a

se tornar amplamente conhecido. Construído com 18 mil válvulas, consumia 178kW de energia e ocupava uma área de 167m2 na Universidade da Pennsylvania (EUA). Sua construção demorou três anos e custou US$ 500.000,00. Em vez da lógica binária, ele trabalhava com números decimais. Incapaz de armazenar programas em memória exigia que um programador conectasse um grande número de cabos que definia os códigos a serem processados. Hoje seu poder de processamento caberia num quadrado de silício com menos de 0,5mm de lado. Foi construído para cálculo de ângulos de artilharia, mas só ficou pronto depois da guerra.

1949 EDSAC (Electronic Delay Storage Automatic Computer): Primeiro computador que armazenava programas em memória. 1951 WHIRLWIND I: Primeiro computador de tempo real desenvolvido no MIT (Massachusetts Institute of Technology).

1951 UNIVAC (Universal Automated Computer): Primeiro computador comercialmente

2

vendido.

1952 IAS: O matemático Von Neumann cria a arquitetura que ainda hoje é utilizada na maioria dos computadores.

1962 7094: Máquina criada pela IBM que dominou o mercado científico no início dos anos

60.

1964 A IBM cria a família 360, a primeira família de produtos de informática.

1971 A Intel lança o 4004, primeiro processador programável de 4 bits em um único chip.

A rápida evolução na tecnologia dos microprocessadores se deve principalmente à capacidade de se integrar cada vez mais transistores em uma única pastilha. Foi então criada uma terminologia para identificar a escala de integração dos componentes. Os primeiros chips de semicondutores possuíam um transistor cada, avanços subseqüentes adicionaram mais e mais transistores a esses chips, e como conseqüência mais funções individuais ou sistemas eram integrados ao mesmo ao longo do tempo. As terminologias utilizadas são:

SSI (Small Scale of Integration) Dezenas de transistores por chip.

MSI (Medium Scale of Integration) Centenas de transistores por chip.

LSI (Large Scale of Integration) Dezenas de milhares de transistores por chip.

VLSI (Very Large Scale of Integration) Centenas de milhares de transistores por chip.

ULSI (Ultra Large Scale of Integration) Milhões de Transistores por chip.

Tabela 1.1 Tamanho dos transistores, quantidade e freqüência de trabalho (maior) dos microprocessadores da Intel ao longo dos anos, mostrando a velocidade da evolução tecnológica da microeletrônica.

Ano

Processador

Comprimento de canal do transistor (L)

Número de

Freqüência Inicial de Operação

Transistores

1971

4004

10μm

2.300

108 kHz

1972

8008

10μm

3.500

500 - 800 kHz

1974

8080

6μm

4.500

2

MHz

1978

8086

3μm

29.000

5

MHz

1979

8088

3μm

29.000

5

MHz

1982

286

1,5μm

134.000

6

MHz

1985

386

1,5μm

275.000

16

MHz

1989

486

1μm

1.200.000

25

MHz

1993

Pentium

0,8μm

3.100.000

66

MHz

1995

Pentium Pro

0,6μm

5.500.000

200

MHz

1997

Pentium II

0,25μm

7.500.000

300

MHz

1999

Pentium III

0,18μm

9.500.000

500

MHz

2000

Pentium 4

0,18μm

42.000.000

1,5 GHz

2002

Pentium M

90

nm

55.000.000

1,7 GHz

2005

Pentium D

65

nm

291.000.000

3,2 GHz

2006

Core2 Duo

65

nm

291.000.000

2,93 GHz

2007

Quad Core 2

45

nm

820.000.000

> 3GHz

2008

Core i7

45

nm

781.000.000

2,66 GHz

3

1.2 - O microcomputador

É um equipamento cuja função é executar automaticamente uma seqüência de operações

para as quais foi anteriormente programado. Os microcomputadores são equipamentos capazes de executarem diferentes tarefas para atender às várias necessidades do usuário, os quais podem

ter finalidades gerais.

Quando utilizamos em aplicações gerais como os microcomputadores comercializados, definimos como sendo os de finalidades gerais. Para poderem atender uma aplicação determinada, são projetados os de finalidades específicas.

Os dados nos computadores são armazenados e expressos em linguagem binária que utiliza os dígitos 0 e 1. Essas condições são obtidas por meio de flip-flop, que são dispositivos de armazenamento nos sistemas de computadores. O bit pode ser definido como uma unidade básica de representação de dados em qualquer sistema de computador. Os computadores processam dados com extensão de 8 bits ou um de seus múltiplos, 16, 32, 64.

Determinados números de bits são denominados de palavra “Word”, o qual pode conter, 1, 2, 4, 8, 16, 32 e 64 bits. A palavra de 4 bits é chamada de “nibble” e a palavra de 8 bits de “byte”. Uma palavra pode representar um dado ou uma diretriz chamada de instrução. O que torna imprescindível citarmos as definições de:

Hardware: Consiste de circuitos eletrônicos responsáveis pela execução direta de instruções em linguagem de máquina: C. Is, placas de circuitos impressos, cabos, fontes de alimentação etc.

Software: O grupo ou conjunto de instruções apresentadas ao computador chama-se programa, o qual consiste de algoritmos, que é o processo pelo qual as operações lógicas são executadas pela máquina.

Firmware: Consiste de um software embutido em circuitos eletrônicos.

É comum dizer que qualquer operação feita por software pode também ser construída por

hardware e qualquer instrução executada pelo hardware pode também ser simulada por software.

1.3 - Arquitetura e Organização de Computadores

Ao se trabalhar com sistemas computadorizados, é comum a utilização dos termos arquitetura e organização. A arquitetura de um computador refere-se aos atributos de um sistema que são visíveis para o programador. Exemplos de atributos associados à arquitetura de um computador:

Conjunto de instruções.

Como é feita a representação de dados (números, caracteres).

Mecanismos de entrada e saída.

Formas de endereçamento da memória.

Registradores (número e tipos).

Já a organização de um computador, refere-se às suas unidades operacionais e suas interconexões que realizam as especificações dadas pela arquitetura. Exemplos de atributos associados à organização de um computador:

Conjuntos de sinais de controle.

 

Interfaces

entre

o

computador

e

seus periféricos.

4

Tecnologia da memória utilizada.

Um exemplo que mostra a diferença de arquitetura e organização é claramente visto quando se coloca em pauta as seguintes questões:

Vale a pena ter uma instrução no meu computador que faça multiplicação? (Este assunto está diretamente relacionado à arquitetura da máquina).

(Este assunto está diretamente

Como vou realizar a multiplicação: vários passos, pipeline relacionado à organização da máquina).

?

1.4 - Blocos funcionais

Qualquer sistema de microcomputador é formado basicamente pelos seguintes blocos funcionais:

- unidade de memória

- unidade central de processamento (UCP)

- unidade de entrada / saída

- dispositivo de interface

- DMA Abaixo um diagrama da estrutura geral de um microcomputador. CPU INTERFACE DISPOSITIVO MEMÓRIA
- DMA
Abaixo um diagrama da estrutura geral de um microcomputador.
CPU
INTERFACE
DISPOSITIVO
MEMÓRIA
DMA
DE I/0

Figura 1 Sistema de Microcomputador típico e suas interfaces

Os blocos funcionais representados no diagrama acima são construídos com circuitos integrados (C. Is). Os circuitos integrados são componentes que possuem um elevado nível de integração de componentes em uma única pastilha, esse processo é denominado de LSI “Large Scale Integration”, ou seja “Integração em larga escala”. O conjunto de C.Is. que forma os blocos funcionais de um computador é também conhecido como “hardware”.

Microprocessador

O microprocessador ou Unidade Central de Processamento (CPU) é um dispositivo digital baseado numa única pastilha (CHIP). Esta pastilha, por si só, tem a capacidade de controlar e manipular dispositivos externos como: memórias, portas de I/O (entrada/saída) e outros circuitos.

Os microprocessadores utilizam sistemas seqüenciais síncronos, ou seja, utilizando um CLOCK. A cada pulso de clock ou grupo de pulsos (pode ser de 3 em 3, por exemplo) executam- se uma função específica.

5

Hoje temos microprocessadores rodando com clock de 3GHz da INTEL, que pode executar centenas de milhões de instruções por segundo.

Um microprocessador pode ser divido segundo seus blocos funcionais:

*

registradores e contadores;

*

unidade lógica e aritmética;

*

unidade de controle e sincronização.

Os

registradores e contadores são utilizados para o armazenamento temporário dos bits

dentro do microprocessador. Este tipo de tarefa é executado pelo registrador e decodificador de

instrução, pelo contador de programa e pelo acumulador.

A Unidade Lógica Aritmética (ULA) é responsável pelas operações lógicas e

aritméticas entre os bits, gerando uma outra palavra como saída. Estas operações são executadas entre o acumulador e o registrador temporário do microprocessador com os quais a ULA se

comunica internamente e o resultado é armazenado no próprio acumulador.

A unidade de controle e sincronização coordena e controla todas os blocos funcionais

do computador em uma seqüência lógica e sincronizada. Ela recebe as instruções vindas do programa armazenado na memória de programa já decodificado pelo decodificador de instruções e emite os sinais de sincronização e controle para as diversas partes do computador.

Unidade de Memória

A unidade de memória é à parte do sistema na qual são armazenados os dados e os

programas que podem ser executados pelo computador.

A

unidade de memória possui dois tipos de memória:

*

Memória de Leitura (ROM - Read Only Memory);

*

Memória de Acesso Aleatório (RAM - Randomic Acess Memory).

Na

ROM, correspondente à parte de unidade de memória que armazena as instruções

que constituem o programa monitor. A memória RAM é à parte da memória responsável pelo armazenamento dos dados que serão usados durante a execução do programa.

Para que seja possível localizar uma entre muitos dados armazenados na memória é necessário que as posições destes dados sejam numeradas. Essas posições são chamadas de endereços. No próximo capitulo vamos estudar os diversos tipos e principais características das memórias.

Unidade de I/O

As unidades de I/O são as interfaces pelos quais o usuário comunica-se com o computador e vice-versa. As unidades de I/O possuem conexão com dispositivos chamados unidades periféricas, tais como: teclados, terminais de vídeo, impressoras, etc.

Interface

A interface é um dispositivo que auxilia na transferência de informações entre a Unidade Central de Processamento e dispositivos periféricos. Ela é usada principalmente em sistemas que possuem somente uma CPU e vários dispositivos periféricos.

DMA

“DMA” ou Direct Memory Acess (Acesso Direto à Memória) é o processo de comunicação direta entre dispositivos periféricos e memória.

Este processo se deve ao fato da necessidade de se aumentar à velocidade de transferência de dados.

6

1.4 Exercícios

1

Qual o principal objetivo da aplicação do microcontrolador na industria ?

2

Qual a função do microcomputador e qual sua finalidade ?

3

Defina:

a

Hardware

b

Software

c

firmware

4

Quais os blocos básicos que compõe o microcomputador ? Defina-os.

7

Anotações:

CAPÍTULO

RAM

ROM

Memória

9

2

2 MEMÓRIA

Memória é à parte do sistema onde são armazenados os programas e dados necessários à realização das operações efetuadas pelo computador. A memória é equivalente a milhares de registradores, cada um armazenando uma palavra binária. Os microcomputadores de 8 bits utilizam memórias de semicondutores com até 65536 posições, cada uma capaz de armazenar um byte de informação. Além das memórias de semicondutores, outros dispositivos mais comuns também podem ser citados: Cartão de papel perfurado, fita magnética, disco magnético, tambor magnético, núcleo magnético, memória de bolha. Memórias que possuem a característica de podermos acessar qualquer registrador da memória de modo aleatório sem antes percorrermos toda a estrutura da memória através de endereço dos registradores desejados, são conhecidas como memórias de acesso randômico. Diferente das memórias de acesso seqüenciais onde é muito mais rápido acessarmos a memória seqüencialmente já que para acessarmos dados em diferentes posições da memória há a necessidade de se percorrer a estrutura ate chegarmos no ponto desejado, implicando num tempo maior de leitura. Dentre os vários tipos de memória, as mais comuns são as memórias RAM e as memórias ROM.

2.1 Memórias RAM

RAM: “Random Access Memory” – Memória de Acesso Randômico também conhecida como memória de leitura e gravação, a qual é um tipo de memória que se pode ler e escrever dados binários. A RAM é utilizada para armazenar programas temporários e dados que serão alterados no decorrer da execução do programa. Os dados na memória RAM são retidos apenas enquanto a fonte permanece ligada, a RAM é uma memória volátil.

Endereço

An

.

A0

ligada, a RAM é uma memória volátil. Endereço An . A0 RAM Controle Saída / Entrada

RAM

a RAM é uma memória volátil. Endereço An . A0 RAM Controle Saída / Entrada de
a RAM é uma memória volátil. Endereço An . A0 RAM Controle Saída / Entrada de

Controle

Saída / Entrada de dados

Figura 2 Ilustração de memória RAM

As RAMs podem ser do tipo dinâmicas ou estáticas.

RAM dinâmica: (DRAM “Dynamic Random Access Memory”). É a memória que perde a informação armazenada mesmo quando a alimentação é constante. Isso acontece porque cada célula da DRAM apresenta um transistor MOSFET e um capacitor que armazena um dado (1 bit). O transistor fica em série com o capacitor de armazenamento e cumpre a função de uma

chave que permite a entrada ou saída da carga do capacitor quando o pino WE é ativado.

Devido às fugas de carga do capacitor, há necessidade de reposição dessas cargas através de um pulso de “REFRESH”, vindo do microprocessador. Esse processo requer que todas as células de armazenamento sejam endereçadas pelo menos uma vez a cada 2 milissegundos. Um circuito contador externo a memória é geralmente incorporado ao sistema para ativar o barramento de endereço, quando o microprocessador não está acessando a memória.

10

Existem vários tipos de memórias DRAM que diferem no modo que elas se comunicam com o sistema, mas cujo principio de armazenamento é o mesmo, abaixo citamos algumas delas:

EDO (Extended Data Output). Pode manter a saída de dados de um endereço enquanto seta um novo endereço. Utilizada em sistemas de fonte de informação.

VRAM (Vídeo RAM). Utilizadas em aceleradores de vídeo.

RDRAM - (Rambus DRAM). Fabricada pela Rambus Inc, por isso RDRAM, possui algumas desvantagens em alguns aspectos, em compensação tem uma taxa de transferência de dados muito alta, cerca de 1000Mbps contra 200Mbps das DRAM comuns. É utilizada principalmente em aceleradores de vídeo e em certos videogames, como o Ultra 64 da Nintendo.

PSRAM (Pseodo Static Ram). Memória RAM dinâmica que simula uma RAM estática. É uma alternativa barata para substituir as RAMs estáticas, que são mais caras. É utilizada em sistemas embutidos.

SDRAM (Synchronous DRAM). Soma um sinal de clock separado. Pode conter estados de maquinas mais complexos.

CDRAM (Cached DRAM). Combinam a memória principal e memória cachê num único chip. O controlador da memória cachê deve ser adicionado externamente.

RAM estática: (SRAM “Static Random Access Memory”). É uma memória que não necessita de circuitos adicionais em um microprocessador e as informações permanecem registradas enquanto não houver nova escrita, ou não faltar alimentação aos biestáveis utilizados na construção da célula de memória. Enquanto a alimentação for mantida constante, o biestável permanece travado e pode armazenar o bit indefinidamente. É mais rápida que a DRAM, mas por causa de sua pouca densidade de informação temos menor capacidade de armazenamento do que uma DRAM. Geralmente são mais caras que as DRAM e são utilizadas principalmente em locais onde a velocidade é extremamente importante como na memória cachê.

2.2 - Memórias RAM com dispositivos de três estados

Dispositivos três estados (ou “tri-state”) são dispositivos lógicos nos quais existem três estados de saída possíveis: O estado lógico 0, o estado lógico 1 e um estado lógico de alta impedância, no qual a saída não tem efeito, pois está desconectada do resto do circuito e não tem influência sobre ele. A condição de três estados pode ser mais bem compreendida analisando-se uma saída “totem-pole tri-state” no circuito abaixo.

Saida em tri Saída state D
Saida
em tri
Saída
state
D

Figura 3 Circuito tri-state com transistores

11

Os transistores T3 e T4 funcionam como chaves lógicas que levam a saída a nível 1 e 0 respectivamente. Todavia, quando a entrada desabilitadora está em nível 0 coloca os dois transistores em corte por meio do diodo D. Este drena o potencial de T2 para massa. Assim, a saída fica em alta impedância em relação à fonte (nível 1) e ao terra (nível 0). O símbolo do dispositivo de três estados é apresentado abaixo.

Entrada Saída D
Entrada
Saída
D

Figura 4 Símbolo

Dispositivos de três estados podem ser acrescentados às linhas de dados de uma memória para que vários chips do sistema possam usar o mesmo barramento de comunicação. Essas chaves de três estados já incorporadas ao C. I. permitem conectar ou desconectar as linhas de saída do barramento de dados.

2.3 - Tempos de acesso

Tempo de acesso da RAM é o tempo necessário para que o dado registrado em uma posição endereçada seja transferido para os terminais de saída (tempo de acesso à leitura); ou o tempo necessário para que o dado colocado nos terminais de entrada seja gravado na posição endereçada (tempo de acesso à escrita). O tempo de acesso depende do chip utilizado e é fornecido pelo manual do fabricante. A tabela abaixo mostra os tempos relacionados à tecnologia de fabricação do chip.

Tecnologia

Tempo de acesso (em ns)

TTL

60 a 200

ECL

10 a 40

PMOS estática

500 a 1000

NMOS estática

300

a 600

CMOS estática

400

a 700

PMOS dinâmica

400

a 700

NMOS dinâmica

200

a 550

2.4 RAM

Entre as milhares memórias do tipo RAMs comercializadas atualmente, a 6116 de tecnologia de fabricação MOS, será apresentada como exemplo. Essa memória é equivalente a 2128. Possui as seguintes características.

Capacidade: 2K x 8 bits

Alimentação: simples de 5v

Tempo de acesso de chip enable (CE): 400 ns (Máximo)

Nível de tensão: compatível com nível TTL

Saída / entrada de dados comum

Não requer clocks ou “strobe”

12

Descrição da pinagem

10
10

Figura 5 Pinagem da memória RAM 6116 ou 2128

A correspondência entre pinos e sinais de entrada / saída é comentada na tabela a seguir.

Pino

Sinal

Função

 

1 A7

Bit 7 de endereço

2 A6

Bit 6 de endereço

3 A5

Bit 5 de endereço

4 A4

Bit 4 de endereço

5 A3

Bit 3 de endereço

6 A2

Bit 2 de endereço

7 A1

Bit 1 de endereço

8 A0

Bit 0 de endereço

9 D0

Bit 0 de dado

10 D1

Bit 1 de dado

11 D2

Bit 2 de dado

12 Vss

Alimentação GND = referencia 0 volt

13 D3

Bit 3 de dado

14 D4

Bit 4 de dado

15 D5

Bit 5 de dado

16 D6

Bit 6 de dado

17 D7

Bit 7 de dado

18 CE

Habilita o chip quando em nível zero.

19 A10

Bit 10 de endereço

20 OE

Habilita barramento de dado quando em nível zero (tri-state).

13

21

WE

Habilita escrita quando em nível zero; habilita leitura quando em nível 1

22

A9

Bit 9 de endereço

23

A8

Bit 8 de endereço

24

VCC

Alimentação Vcc = +5v

A tabela abaixo mostra os níveis necessários para ativar os pinos CE / OE e WE.

Seleção

Leitura / Escrita

Saída

CE / OE

WE

D0 a D7

H

L

Tri-state

H

H

Tri-state

L

L

Escrita (entrada de dados)

L

H

Leitura (saída de dados)

2.5 ROM

ROM: “Ready Only Memory” – “Memória somente de leitura” – Memória não volátil, ou seja, sua informação é mantida mesmo sem alimentação. A memória ROM é equivalente a um grupo de registradores, onde cada um é capaz de armazenar permanentemente uma palavra. Os microcomputadores podem usar mais de uma ROM.

O número dessas memórias depende da extensão do programa a ser armazenado. As ROMs são usadas para armazenar não só programas principais como também sub-rotinas e microprogramas.

São também bastante úteis para o armazenamento de tabelas trigonométricas, tabelas de divisão e multiplicação, tabelas de logaritmos, tabela de raiz quadrada ou programas de partida e gerenciamento do sistema (programa monitor). Veja abaixo o esquema de uma ROM.

Endereço

An

.

A0

Veja abaixo o esquema de uma ROM. Endereço An . A0 ROM S Controle Saída de

ROM

S
S
Veja abaixo o esquema de uma ROM. Endereço An . A0 ROM S Controle Saída de

Controle

Saída de leitura de dados

Figura 6 Esquema de uma memória ROM

As entradas A0 até An formam as linhas de endereço, e a saída de leitura S corresponde ao dado gravado na posição selecionada pelo endereço. A ROM (“Read Only Memory”) é uma memória só de leitura, ou seja, uma vez gravada a informação não pode mais ser apagada. Para gravação, o processo é realizado no fabricante, que confecciona uma mascara que permite a produção das memórias. Os CD-ROM’s também possuem seu conteúdo fixo, logo são memórias ROM.

14

A PROM (“Programmable Read Only Memory”) permite que o próprio usuário armazene os

dados / programas desejados. Isso é feito com o auxílio de um programador PROM. A memória possui uma malha de linhas cruzadas em forma de grade semelhante à da ROM. Em cada interseção da grade está localizado um dispositivo (Diodo, transistor bipolar ou MOS) e em serie com cada dispositivo existe um elemento de interrupção (fusível ou diodo). Os elos fusíveis são queimados por meio da saturação de um transistor localizado na interseção linha / coluna cujo endereço foi selecionado pelo circuito de decodificação. Nas PROMs que utilizam diodos, os cruzamentos linha / coluna da grade são unidos por dois diodos ligados em serie oposta. Abaixo temos uma figura que mostra a estrutura e o esquema elétrico de uma PROM que se utiliza diodos.

e o esquema elétrico de uma PROM que se utiliza diodos. Figura 7 – Estrutura de

Figura 7 Estrutura de uma memória PROM por diodos

A

EPROM (“Erasable Programmable Read Only Memory”), isto é, uma memória programável

e

apagável apenas de leitura. É uma ROM que pode ser apagada e reprogramada um número

indeterminado de vezes. As informações são apagadas pela exposição do chip à luz ultravioleta

(UV) de alta intensidade, a qual penetra por uma abertura de cristal (quartzo) existente no centro do circuito integrado. A EPROM não pode ser apagada seletivamente, isto é, não pode ter apenas parte de seus bits apagados. Quando exposta a UV, todos os bits são apagados.

A EEPROM ou EAROM (“Eletrically Erasable Programmable Read Only Memory”) ou

(“Eletrically Alterable Programmable Read Only Memory”), não necessitam de UV para serem apagadas e sim de impulsos elétricos. Uma outra vantagem é o fato de não ser necessário retirar esta memória do circuito para ser reprogramada. Apesar de serem memórias que apresentam características não voláteis, as informações que se encontram armazenadas tendem a se deteriorar com o tempo, o que não ocorre com as outras memórias da família ROM. Tem como grande desvantagem um custo elevado e que podem ser apagada somente 10 mil vezes.

A FLASH MEMORY são memórias com características similares a EEPROM e EPROM, em

um produto que oferece as vantagens destas memórias sem o alto custo, onde temos:

- Não volátil, apagável eletricamente total ou por setor, no próprio circuito, grande densidade, alta velocidade de acesso e o já citado baixo custo.

A célula de memória Flash é semelhante à célula de uma EPROM, e é constituída por um único transistor. Na memória Flash, uma fina camada de oxido de silício forma a porta do transistor, permitindo apagar eletricamente a memória e uma maior densidade que as EEPROMs, com um custo menor.

15

2.6 - EPROM

As memórias bipolares são mais rápidas que as memórias MOSFETs. Entre as milhares memórias ROMs comercializadas atualmente, a 2732-A de tecnologia de fabricação EPROM- MOS, será apresentada como exemplo. Possui as seguintes características.

Capacidade: 4K x 8 bits

Alimentação: fonte única de 5v

Tempo de acesso: 450 ns (Máximo)

Tempo de programação total: 200s

Nível de tensão de programação: +21 v

Descrição da pinagem

de tensão de programação: +21 v Descrição da pinagem Figura 7 – Pinagem da memória ROM

Figura 7 Pinagem da memória ROM 27C32.

A correspondência entre pinos e sinais de entrada / saída é comentada na tabela a seguir.

Pino

Sinal

Função

 

1 A7

Bit 7 de endereço

2 A6

Bit 6 de endereço

3 A5

Bit 5 de endereço

4 A4

Bit 4 de endereço

5 A3

Bit 3 de endereço

6 A2

Bit 2 de endereço

7 A1

Bit 1 de endereço

8 A0

Bit 0 de endereço

9 D0

Bit 0 de dado

10 D1

Bit 1 de dado

11 D2

Bit 2 de dado

16

12

Vss

Alimentação GND = referencia 0 volt

13

D3

Bit 3 de dado

14

D4

Bit 4 de dado

15

D5

Bit 5 de dado

16

D6

Bit 6 de dado

17

D7

Bit 7 de dado

18

CE

Habilita o chip quando em nível zero.

19

A10

Bit 10 de endereço

20

OE / Vpp

Habilita barramento de dado quando em nível zero (tri-state). Passa para o modo de programação quando em +21 v

21

A11

Bit 11 de endereço

22

A9

Bit 9 de endereço

23

A8

Bit 8 de endereço

24

VCC

Alimentação Vcc = +5v

Antes de programar uma memória EPROM, é necessário verificar se esta apagada, onde deve apresentar todos os endereços em nível 1 e a leitura em qualquer posição de memória devera apresentar o dado FFh.

Para apagar esta memória o fabricante recomenda a exposição do CI à luz ultravioleta de intensidade 12mW por cm 2 , por um intervalo de tempo aproximado de 600s. A tabela abaixo mostra os níveis necessários para ativar os pinos CE / OE e WE.

Pinos

Função

leitura

Saída não-

Baixo

Programação

Inibição

habilitada

consumo

(escrita)

18

CE / PGM

VIL

Irrelevante

VIH

VIL

VIH

20

OE / Vpp

VIL

VIH

Irrelevante

21 v

21 v

24

Vcc

5 v

5 v

5 v

5 v

5 v

9 a 11

Saída de

Saída Q

HI - Z

HI - Z

Entrada de

HI Z

13 a 17

dados

dados

2.7 Memória virtual

O Windows, para poder acelerar o desempenho do microcomputador, cria uma área de memória virtual no espaço disponível do disco rígido. Assim, quando a memória RAM esta totalmente ocupada e o processador necessita de mais espaço para trabalhar, ele seleciona parte dos programas que não deve ser usado naquele momento e transfere para a área de memória virtual. Esse processo, apesar de ajudar no desempenho, é mais lento do que se o micro tivesse memória RAM suficiente para executar todas as instruções. O tempo de acesso ao disco rígido é bem maior que o tempo de acesso à memória RAM. Toda informação da memória virtual é apagada quando o micro é desligado.

17

2.8 Exercícios

1 O que é memória e qual a sua função?

2 Defina memória RAM. Comente sobre suas principais características.

3 Qual a diferença entre uma memória RAM dinâmica e uma RAM estática ?

4 Qual a aplicação em que devemos utilizar uma memória RAM estática ? E a dinâmica ?

5 – Comente sobre o dispositivo “tri-state”. Em quais componentes já temos esta implementação ?

6 Determine a capacidade de acesso das memórias abaixo relacionadas.

a Memória com pinos de endereçamento de A0 até A11 e 8 bits de dados.

b Memória com pinos de endereçamento de A0 até A13 e 8 bits de dados.

18

c Memória com pinos de endereçamento de A0 até A15 e 8 bits de dados.

7 Defina memória ROM. Comente sobre suas principais características.

8 Quais os tipos de memória ROM ? Comente sobre cada um dos tipos.

9 Antes de efetuarmos a programação em uma programação em uma memória EPROM, o que é necessário verificar.

10 Defina memória virtual e indique suas principais características.

19

Anotações:

CAPÍTULO

3

Conceito básico de microprocessador

Microprocessador

Dispositivo de entrada e saída

Sistema de barramento

Flags condição

21

3 CONCEITOS BASICO MICROPROCESSADORES

Antes de iniciarmos, é relevante citarmos a história dos microprocessadores, onde abaixo temos um breve resumo com destaques para algumas datas consideradas importantes. Na década de 40 o surgimento da válvula e o transistor (1948), na década de 50 a comercialização do transistor, na década de 60 os circuitos integrados do tipo SSI (“Small Scale Integrated” ou pequena escala de integração), na década de 70 os circuitos integrados do tipo MSI (“Medium Scale Integrated” ou media escala de integração). Em 1971 surgem os circuitos integrados do tipo LSI (“Large Scale de Integrated” ou com grande escala de integração), com o primeiro microprocessador de 4 bits o INTEL 4004, em 1972 a INTEL lança o 8008 uma CPU de 8 bits. Já em 1974 a INTEL começa a ter concorrentes, com o microprocessador 8080, dez vezes mais rápido que o anterior, a MOTOROLA lança o 6800 que durante muito tempo esteve presente nos primeiros microcomputadores. A partir daí tivemos em 1976 a TEXAS com o primeiro CPU de 16 bits, em 1977 a MOSTEK com o 6502 (Apple I, II e II plus) e a ZILOG com o Z80 (TRS80), um dos mais utilizados até hoje, em 1978 os circuitos integrados VLSI permitiram o surgimento de novos microprocessadores como o MOTOROLA 6809 a INTEL com o 8088 / 8086 e os microprocessadores BIT-SLICE (de 2 a 64 bits).

Década de 80:

1980

MOTOROLA 68.000 em 1981 MOTOROLA 68.010

1982

INTEL 80186 / 80188 e o 80286 (com 130.000 transistores integrados)

1984

MOTOROLA 68.020

1985

INTEL 80386 ( 80386DX, ou i386)

1986

MOTOROLA 68.030

1988

INTEL 80386SX e em 1989 o i486 (1.200.000 transistores)

Década de 90:

1991

INTEL i386SL, i486SX (os primeiros com tecnologia RISC)

1992

INTEL i486 DX2/50 e o i486 DX2/66

1993

INTEL Pentium

1995

INTEL Pentium Pro

1997

INTEL Pentium II

1998

INTEL Pentium II 300, 266 MHz

1999

INTEL Pentium III 600, 700 MHz

2000

INTEL Pentium III 1000 MHz

2001

/ 2002 INTEL Pentium IV de até 2,7 GHz (Aproximadamente)

2003

/ 2004 INTEL Pentium IV de ate 3,6 GHz e o Athlon 64 da AMD

3.1 Microprocessador

O microprocessador ou Unidade Central de Processamento (CPU) é um dispositivo digital baseado numa única pastilha (CHIP). Esta pastilha, por si só, tem a capacidade de controlar e manipular dispositivos externos como: memórias, portas de I/O (entrada/saída) e outros circuitos.

22

Os microprocessadores utilizam sistemas seqüenciais síncronos, ou seja, utilizando um

CLOCK. A cada pulso de clock ou grupo de pulsos (pode ser de 3 em 3, por exemplo) executam-

se uma função específica. Hoje temos microprocessadores rodando com clock de 3GHz da INTEL, que pode executar centenas de milhões de instruções por segundo.

Um microprocessador pode ser divido segundo seus blocos funcionais:

*

registradores e contadores;

*

unidade lógica e aritmética;

*

unidade de controle e sincronização.

Os

registradores e contadores são utilizadas para o armazenamento temporário dos bits

dentro do microprocessador. Este tipo de tarefa é executado pelo registrador e decodificador de instrução, pelo contador de programa e pelo acumulador.

A Unidade Lógica Aritmética (ULA) é responsável pelas operações lógicas e

aritméticas entre os bits, gerando uma outra palavra como saída. Estas operações são executadas entre o acumulador e o registrador temporário do microprocessador com os quais a ULA se comunica internamente e o resultado é armazenado no próprio acumulador.

A unidade de controle e sincronização coordena e controla todos os blocos funcionais do computador em uma seqüência lógica e sincronizada. A UCP chama as instruções da memória, decodifica-as e executa-as, além de alimentar as portas de entrada / saída a fim de operacionalizar as instruções recebidas, ou seja, ela recebe as instruções vindas do programa armazenado na memória de programa já decodificadas pelo decodificador de instruções e emite os sinais de sincronização e controle para as diversas partes do computador.

3.2 - Dispositivos de entrada / saída

É o meio pelo qual o usuário se comunica com o computador. É através desses dispositivos que o operador fornece informações ao sistema e recebe da máquina os resultados das operações executadas pelo computador. Existem componentes que viabilizam a interface com o usuário, tais como: portas seriais, portas paralelas, conversores análogo-digitais etc. Esses componentes estão interligados através de um sistema de barramento.

3.3 - Sistema de barramento

Podemos definir o barramento como um conjunto de linhas físicas que possuem funções específicas dentro do sistema. É composto de 3 barramentos independentes: o barramento de endereços, o barramento de dados e o barramento de controle.

Barramento de endereços: é apenas saída tri-states ativas em nível alto, responsável pelo caminho de comunicação dentro do sistema.

Barramento de dados: Funciona como barramento bidirecional para intercâmbio de dados entre a UCP e a memória ou entre a UCP e periféricos de entrada e saída. Na saída de dados da CPU, estes são gerados pelo microprocessador e enviados a uma unidade selecionada pelo barramento de endereços. Na entrada de dados, estes são gerados por uma unidade particular e enviados ao microprocessador.

Barramento de controle: É responsável por enviar e receber sinais de controle necessários à transferência de dados no sistema. É composto basicamente de 4 tipos de sinais, sendo os de leitura e escrita em memória e os de entrada e saída através de dispositivos externos.

Abaixo temos a arquitetura padrão de

23

um microprocessador.

Sinais de controle do Sistema Decodificador de Controle da Instruções CPU Sinais de Controle Registrador
Sinais de controle
do Sistema
Decodificador de
Controle da
Instruções
CPU
Sinais de Controle
Registrador de
Instruções
Controle do
Registrador da
Controle de
ALU
Barramento de
(Aritmetic Logic Unit)
CPU
Endereços
Dados
Barramento
Barramento
de
de Dados

de 8 bits

Endereços

de 16 bits

Figura 8 Arquitetura padrão de um microprocessador

Podemos destacar os seguintes blocos da arquitetura apresentada.

Registrador da CPU ou acumulador Registrador principal, que contem o dado a ser processado. É o responsável por armazenar os resultados de adições, subtrações e outras operações executadas pelo sistema.

Controle da CPU também responsável pelo Apontador de Pilha (“Stack Pointer – SP”) – Registrador que aponta para o endereço de retorno de sub-rotina, sendo este ultimo armazenado em uma pilha de memória. É necessário na inicialização carregar no apontador o endereço inicial da pilha.

Controle de endereços ou Contador de Programa (“Program Counter – PC”) – Registrador que armazena o endereço de memória da próxima instrução a ser executada. O conteúdo do contador de programa é incrementado após a execução da instrução ou trocado por outro valor se a instrução em curso for de desvio de seqüência.

Decodificador de instrução Circuito combinacional utilizado para determinar qual a próxima instrução a ser executada. Isto é feito a partir do código de operação armazenado previamente no registrador de instrução.

Registrador da CPU também responsável pelas Flags Conjunto de flip-flops destinados a guardar as condições resultantes da execução de instruções. Tais flags são fundamentais no sentido em que se constituem no único mecanismo que o programador Assembly dispõe para desvios de processamento e implementação de algoritmos.

Registradores

auxiliares

Conjunto

de

registradores

24

de

rascunho

que

podem

ser

usados em conjunto ou separadamente para operações intermediarias, sem que seja necessário o acesso sistemático a memória. Registrador de instrução (RI) Registrador que armazena a instrução que esta sendo executada.

Controle da CPU ou Unidade de Controle Circuito seqüencial interno ao microprocessador que é utilizado para gerar os sinais de controle, necessários à execução das instruções previamente decodificadas.

Unidade Lógica Aritmética (ULA) Circuito combinacional utilizado para operações lógicas e aritméticas envolvendo dois operando.

É importante salientar alguns aspectos referentes às condições dos Flags, que são células de 1 bit e que contem informações sobre os resultados das operações e indicam também a ocorrência de condições específicas dessas operações. As Flags são acionadas (setadas) pela ULA e a ela estão associadas. Cada microprocessador tem seus próprios bits de Flag. Abaixo temos mencionado as Flags mais comuns a serem encontradas na maioria dos microprocessadores.

3.4 - Flags condição

Um Flag é considerado “setado” quando se força o valor do bit para 1 e é “resetado”, forçando- se o bit do Flag para 0. Uma instrução que afeta Flag o modifica da seguinte forma.

Carry: Se o resultado da instrução provoca um “carry” na adição ou um “borrow” na subtração ou comparação, então a Flag de carry será setada. Se C = 1 resultado da operação com “carry ou borrow”, se não C = 0 então não ocorreu “carry ou borrow”.

Carry auxiliar: Quando a instrução causou um “carry” do bit 3 para o bit 4. Se AC = 1 significa que foi 1 na operação realizada, se AC = 0 não houve o “carry”.

Paridade: Se a soma dos bits do resultado da operação é 0. Se P = 1 significa que a paridade é par, se P = 0 significa que a paridade é impar.

Sinal: Se o bit mais significativo do resultado da operação tem valor 1 então o sinal da operação é negativo. Se S = 1 resultado negativo, se não S = 0 operação positiva.

Zero: Se o resultado da instrução tem valor zero. Se Z = 1 resultado zero da operação, se não Z = 0 resultado da operação diferente de zero.

     

Condição

Flags

Função

setado

ressetado

setado se:

C

Bit de carry soma/subtração paridade/over-flow

C

NC

vai um do bit 7

N

-

-

operação de subtração

P/V

PE

PO

paridade par/over-flow

H

half-carry

-

-

vai um do bit 3

Z

zero

Z

NZ

resultado zero

S

sinal

M

P

resultado negativo

X

não usado

-

-

-

Observação:

M = “minus” (menos) P = “plus” (mais) Os bits de flags estão posicionados

do seguinte modo dentro do registrador F:

25

Posição do bit

7

6

5

4

3

2

1

0

Flags

S

Z

X

H

X

P/V

N

C

O nível lógico de cada bit do registrador F indica a condição de cada uma das flags e forma uma palavra binária. Assim, por exemplo, se o byte do registrador F apresentar a combinação 0100 0001, ocorre a seguinte situação:

7

6

5

4

3

2

1

0

S

Z

X

H

X

P/V

N

C

0

1

0

0

0

0

0

1

ou seja:

bit 0 está em nível 1 informando que houve carry;

bit 1 está em nível 0 indicando que se trata de uma operação de soma;

os bits 2 e 4 em zero indicam condição de não-paridade e não-half-carry;

os bits 3 e 5 não são utilizados (nível 0);

bit 6 (flag de zero) em nível 1 informa que a operação lógica ou aritmética deu resultado zero;

bit 7 (flag de sinal) em nível 0 indica que o resultado da operação é positivo.

Nesse caso, a palavra armazenada no registrador F é 41H porque 0100 = 4 e 0001 = 1.

Sempre que o conteúdo do registrador F for verificado, o resultado mostrado no display de dados aparecerá em código hexadecimal. A tradução desse resultado para a linguagem binária fornece a condição das flags naquele momento.

26

3.5 Exercícios

1 Qual a função dos dispositivos de entrada e saída (I/O)?

2 O microprocessador é composto de três barramentos independentes. Quais são? Comente sobre eles.

3 Com base na arquitetura padrão de um microprocessador, explique a função de cada bloco:

Acumulador

Apontador da pilha

Contador de programa

Decodificador de instrução

Flags

Registradores auxiliares

Registrador de instrução

Unidade de controle

Unidade Lógica Aritmética (ULA)

27

4 Para as somas abaixo relacionadas indique quais os Flags setados.

a

+ D6

b

+ C3

c

+ A2

d

+

B5

7C

3D

5E

42

28

Anotações:

CAPÍTULO

O Microcontrolador

4

A arquitetura do Microcontrolador

Ciclos de máquina

Introdução às interrupções

O PIC 16F628

Registradores especiais

30

4 O MICROCONTROLADOR

O microcontrolador é um dispositivo que tem a função de controlar algum processo ou aspecto do ambiente. Componente de aplicação específica e uma vez implementado permite poucos recursos para alteração do processo em que foi utilizado. Como exemplo podemos citar o Televisor, Forno microondas, videocassete, celulares, brinquedos etc. Os microcontroladores estão revolucionando o projeto de equipamento eletrônico, não somente os sistemas convencionais estão se tornando mais sofisticados e baratos, como novas funcionalidades estão sendo possíveis de serem implementadas com um custo compatível com o mercado.

Os microprocessadores destinados ao mercado de computadores pessoais podiam e podem ser empregados como controladores, porém seu custo continua elevado para o tipo de tarefa que se deseja executar no controle dedicado. Por exemplo, utilizarmos um Pentium 4 no controle do número de lâmpadas acessas simultaneamente em uma residência.

Em virtude deste mercado, os fabricantes de circuitos lançaram então os microcontroladores, dispositivos que possuem integrados em uma única pastilha a CPU, RAM, EPROM ou EEPROM, E/S e controladores de interrupção, PWM’s etc. O surgimento destes dispositivos a um baixo custo provocou uma revolução nos métodos de projetos de sistemas de controle para o uso doméstico ou industrial. Os sistemas puramente mecânicos estão sendo alterados por circuitos eletrônicos mais confiáveis e baratos.

O microcontrolador é programável, pois toda a lógica de operação é estruturada na forma de um programa e gravada dentro do componente. Após isso, toda vez em que alimentarmos o microcontrolador o programa interno será executado.

4.1 - A arquitetura de um microcontrolador

Para podermos entender mais facilmente a estrutura do microcontrolador, podemos imaginar como um dispositivo composto de seis partes: Clock, CPU, Porta de entrada, Porta de saída, Memória de dados, Memória de programa. Os dados dentro de um microcontrolador são manipulados em unidades chamadas palavras. Os microcontroladores PIC’s apresentam estrutura de máquina interna do tipo “Havard”, enquanto grande parte dos microcontroladores tradicionais apresenta uma arquitetura do tipo “Von-Newman”.

tradicionais apresenta uma arquitetura do tipo “Von - Newman”. Figura X – Arquitetura do PIC 16F628

Figura X Arquitetura do PIC 16F628

31

A diferença está na forma como os dados e os programas são processados pelo microcontrolador, onde na arquitetura “Von-Newman” existe apenas um barramento interno, geralmente de 8 bits, por onde passam as instruções e os dados. Já na arquitetura do tipo “Havard” existem dois barramentos internos, sendo um de dados e outro de instruções.

internos, sendo um de dados e outro de instruções. Figura X+1 – Arquitetura Harvard versus Von

Figura X+1 Arquitetura Harvard versus Von Neumann

No caso do PIC, o barramento de dados é sempre de 8 bits e o de instruções de 12, 14 ou 16 bits. O PIC 16F628, que será por nos estudado, possui palavras de dados de oito bits de tamanho, e palavras de instrução de 14 bits. Esse tipo de arquitetura permite que enquanto uma instrução é executada outra seja “buscada” da memória, o que torna o processamento mais rápido. Além disso, como o barramento de instrução é maior que 8 bits, o OPCODE da instrução já inclui o dado e o local onde ela vai operar (quando necessário), o que significa que apenas uma posição de memória é utilizada por instrução, economizando assim muita memória de programa. A largura de memória de programa de 24 bits, além de implementar diversas facilidades os coloca como dispositivos intermediários aos DSP, de fato são chamados de DSC (“Digital Signal Controller” – Controlador Digital de Sinais).

Os PIC’s utilizam uma tecnologia chamada RISC (“Reduced Instruction Set Computer” - Computador com Set de Instruções Reduzidas). Desta forma, os PIC’s possuem cerca de 35 instruções, muito menos que os microcontroladores convencionais CISC que chegam a possuir mais de 100 instruções.

Os microcontroladores com a arquitetura Harvard, são também designados por "microcontroladores RISC". RISC provém de Computador com um Conjunto Reduzido de Instruções (Reduced Instruction Set Computer). Os microcontroladores com uma arquitetura von-Neumann são designados por 'microcontroladores CISC'. O nome CISC deriva de Computador com um Conjunto Complexo de Instruções (Complex Instruction Set Computer). Como o PIC16F84 é um microcontrolador RISC, disso resulta que possui um número reduzido de instruções, mais precisamente 35 (por exemplo, os microcontroladores da Intel e da Motorola têm mais de cem instruções). Todas estas instruções são executadas num único ciclo, exceto no caso de instruções de salto e de ramificação. De acordo com o que o seu fabricante refere, o PIC16F84 geralmente atinge resultados de 2 para 1 na compressão de código e 4 para 1 na velocidade, em relação aos outros microcontroladores de 8 bits da sua classe.

As linhas mais finas que partem do centro em direção à periferia do microcontrolador correspondem aos fios que interligam os blocos interiores aos pinos do invólucro do microcontrolador. O gráfico que se segue representa a parte principal de um microcontrolador.

32

Abaixo temos uma tabela com alguns exemplos da família PIC: 12 Bits 14 Bits 16

Abaixo temos uma tabela com alguns exemplos da família PIC:

12 Bits

14 Bits

16 Bits

16C56

16F62x

18F242

16C57

16C7x

18F252

16C58

16F7x

18F258

16C505

16F8x

18F442

16HV540

16F87x

18F458

Analisando a estrutura abaixo podemos definir:

33

Entrada

Entrada Saída Clock CPU Memória de Dados Memória de Programas Figura 9 – O Microcontrolador Básico
Entrada Saída Clock CPU Memória de Dados Memória de Programas Figura 9 – O Microcontrolador Básico

Saída

Clock

CPU

Entrada Saída Clock CPU Memória de Dados Memória de Programas Figura 9 – O Microcontrolador Básico
Entrada Saída Clock CPU Memória de Dados Memória de Programas Figura 9 – O Microcontrolador Básico
Entrada Saída Clock CPU Memória de Dados Memória de Programas Figura 9 – O Microcontrolador Básico
Entrada Saída Clock CPU Memória de Dados Memória de Programas Figura 9 – O Microcontrolador Básico

Memória de Dados

Memória de Programas

Figura 9 O Microcontrolador Básico

Clock é o responsável pelo sincronismo entre todas as operações de um microcontrolador. Todos eventos que ocorrem dentro de um microcontrolador obedecem a uma lógica preestabelecida pelo fabricante e são processados em tempos determinados pela freqüência do clock. Normalmente, quanto maior a freqüência de clock de um microcontrolador, mais rápida é a execução das instruções. No caso dos microcontroladores, o clock é também utilizado como referência de tempo para execução de tarefas que devem ser repetidas a determinado intervalo de tempo, como por exemplo, a leitura de interfaces RS232C.

CPU Vamos agora adicionar mais 3 locais de memória a um bloco específico para que possamos ter as capacidades de multiplicar, dividir, subtrair e mover o seus conteúdos de um local de memória para outro. A parte que vamos acrescentar é chamada "central processing unit" (CPU) ou Unidade Central de Processamento. Os locais de memória nela contidos chamam-se registros.

Os locais de memória nela contidos chamam-se registros. Os registros são, portanto, locais de memória cujo

Os registros são, portanto, locais de memória cujo papel é ajudar a executar várias operações matemáticas ou quaisquer outras operações com dados, quaisquer que sejam os locais em que estes se encontrem.

Vamos olhar para a situação atual. Nós temos duas entidades independentes (memória e

34

CPU) que estão interligadas, deste modo, qualquer troca de dados é retardada bem como a funcionalidade do sistema é diminuída. Se, por exemplo, nós desejarmos adicionar os conteúdos de dois locais de memória e tornar a guardar o resultado na memória, nós necessitamos de uma ligação entre a memória e o CPU. Dito mais simplesmente, nós precisamos de obter um "caminho" através do qual os dados possam passar de um bloco para outro.

A unidade central de processamento coordena todas as atividades dentro do microcontrolador.

Ela organiza a execução das instruções e realiza as operações lógicas e aritméticas sobre os dados e envia os resultados para os diversos registros ou portas de entrada e saída.

Portas de entrada e saída Estas localizações que acabamos de adicionar, chamam-se "portos". Existem vários tipos de portos: de entrada, de saída e de entrada/saída. Quando trabalhamos com portos primeiro de tudo é necessário escolher a porta com que queremos trabalhar e, em seguida, enviar ou receber dados para ou desse porto.

e, em seguida, enviar ou receber dados para ou desse porto. Quando se está a trabalhar

Quando se está a trabalhar com ele, a porta funciona como um local de memória. Qualquer coisa

de que se está a ler ou em que se está a escrever e que é possível identificar facilmente nos pinos

do microcontrolador. São os pontos através dos quais o microcontrolador interage com o

ambiente externo. As portas assumem valores discretos, normalmente referenciados como 0 ou

1, correspondente a 0 v ou 5 v de saída. Alguns microcontroladores possuem uma ou mais portas

de entrada especiais chamadas de “Interrupts”. Estas portas não exigem que a CPU fique vigiando a ocorrência do evento na porta, porque interrompem o programa sendo executado cada vez que ocorre um dado evento. Os “Interrupts” são uma das características mais utilizadas nos projetos em que se necessite de uma rapidez de resposta a eventos assíncronos, que podem ocorrer a qualquer instante.

Memória de dados A memória é a parte do microcontrolador cuja função é guardar dados.

A maneira mais fácil de explicar é descrevê-la como uma grande prateleira cheia de gavetas. Se

supusermos que marcamos as gavetas de modo a elas não se confundirem umas com as outras, então o seu conteúdo será facilmente acessível. Basta saber a designação da gaveta e o seu conteúdo será conhecido.

35

Os componentes de memória são exatamente a mesma coisa. Para um determinado endereço, nós obtemos

Os componentes de memória são exatamente a mesma coisa. Para um determinado endereço, nós obtemos o conteúdo desse endereço. Dois novos conceitos foram apresentados:

endereçamento e memória. A memória é o conjunto de todos os locais de memória (gavetas) e endereçamento nada mais é que selecionar um deles. Isto significa que precisamos de selecionar o endereço desejado (gaveta) e esperar que o conteúdo desse endereço nos seja apresentado (abrir a gaveta). Além de ler de um local da memória (ler o conteúdo da gaveta), também é possível escrever num endereço da memória (introduzir um conteúdo na gaveta). Isto é feito utilizando uma linha adicional chamada linha de controle. Nós iremos designar esta linha por R/W (read/write) - ler/escrever. A linha de controle é usada do seguinte modo: se r/w=1, é executada uma operação de leitura, caso contrário é executada uma operação de escrita no endereço de memória. A memória é o primeiro elemento, mas precisamos de mais alguns para que o nosso microcontrolador possa trabalhar. É normalmente implementada na forma de RAM em que podemos ler e gravar com facilidade. A capacidade de memória RAM no microcontrolador é bem pequena, ela possui um barramento de 8bits, pois somente teremos o transito de dados entre a memória e a CPU. A memória RAM é dividida em duas partes distintas, uma para abrigar os registradores de funções especiais (SFR) e outra para abrigar os registradores de propósitos gerais (GPR).

Memória de programa é onde residem as instruções que devem ser executadas pela CPU. O programa é gravado apenas uma vez e a partir daí o microcontrolador executa apenas este programa. A maior parte dos microcontroladores PIC, utiliza a memória EEPROM ou FLASH, que pode ser apagada por meios elétricos. Existem quatro tecnologias típicas de implementação:

a ROM do tipo mascara, são identificados pelo sufixo “CR”; o OTP, identificado pelo sufixo “C”; a EPROM identificada pela janela característica e que pode ser do tipo “JW” com encapsulamento DIP ou “CL” para encapsulamento do tipo PLCC. E a memória FLASH. Uma característica importante da memória do microcontrolador PIC é que ela pode ser acessada por software. Também devido a características da arquitetura RISC, a instrução de chamada e de desvio tem disponíveis somente 11 bits para os endereços usados. Por esse motivo a memória de programa é dividida em paginas. Usamos o PCLATH para direcionar os endereços.

X

X

X

4

3

2

1

0

7

6

5

4

3

2

1

0

“PC - Program Counter”

36

4.2 - Ciclos de Máquina

Nos microcontroladores PIC, o sinal do clock é internamente dividido por quatro, portanto para um clock externo de 4 MHz, temos um clock interno de 1 MHz e conseqüentemente, cada ciclo de máquina dura 1s.

A divisão do clock por quatro, forma as fases Q1, Q2, Q3 e Q4. O PC (program counter)

é incrementado automaticamente na fase Q1 do ciclo de máquina e a instrução seguinte é

buscada da memória de programa e armazenada no registrador de instruções no ciclo Q4. Ela é decodificada e executada no próximo ciclo, no intervalo de Q1 até Q4. Esta característica de buscar informações num ciclo de máquina e executá-la no próximo é conhecida como PIPELINE. Ela permite que quase todas as instruções sejam executadas em apenas um ciclo, gastando assim 1 s (para um clock de 4 Mhz) e tornando o sistema muito mais rápido. As únicas exceções referem-se às instruções que geram “saltos” no PC, como chamadas de rotinas e retorno. Ao executar essas instruções, o PIPELINE deve ser primeiramente limpo para depois poder ser carregado novamente com o endereço correto, consumindo para isso 2 ciclos de máquina. Esse PIPELINE é facilmente implementado devido à arquitetura de “Havard”.

Vetor de reset Trata-se do primeiro endereço da memória de programa que será executado quando o PIC começar a rodar, quando alimentado ou por “reset”. Na maioria dos modelos, o

“reset” aponta para o endereço 0x00, mas em alguns modelos mais antigos ele pode apontar para

o último endereço disponível.

Vetor de interrupção As rotinas de interrupção serão armazenadas na área de programação , juntamente com todo o resto do programa. No entanto, existe um endereço que é reservado para

o início do tratamento de todas as interrupções, nos modelos de PIC que possuem este recurso, esse endereço de vetor de interrupção é a posição 0x04.

Pilha A pilha é o local, totalmente separado da memória de programação, em que serão armazenados os endereços de retorno quando utilizarmos instruções de chamadas de rotinas. Quando o programa é desviado para o começo de uma rotina por meio da instrução correta, o endereço seguinte ao ponto que estava sendo rodado é armazenado na pilha para que, ao fim da rotina, o programa possa retornar. O tamanho da pilha também varia de acordo com o modelo de PIC, e esse tamanho determina a quantidade de rotinas que podem ser chamadas ao mesmo tempo. Caso se tente chamar um número de rotinas maior que o tamanho da pilha, o endereço de retorno mais antigo será perdido. A estrutura para implementação da pilha é chamada de memória LIFO (Last In First Out). Quando a CPU armazena uma nova informação na pilha o comando é PUSH (empurrar), o desempilhamento é feito através da instrução POP (Pull Operation Operação de puxar).

Registradores especiais Nessa região da memória encontram-se todos os registradores especiais, denominados SFRs (special function register), utilizados pelo microcontrolador para execução do programa e processamento da ULA. Esses registradores ocupam espaço na RAM e podem ser acessados da mesma maneira que as variáveis do sistema, com mudança somente do endereço de acesso. A quantidade de SFRs depende do modelo de PIC, mas eles sempre são armazenados na parte baixa da memória (início dos endereços) e às vezes podem estar espalhadas em mais de um banco de memória.

Registradores de uso geral Trata-se de uma área destinada ao armazenamento de variáveis definidas pelo usuário para serem escritas e lidas pelo programa. O tamanho dessa memória varia de acordo com o modelo de PIC e também pode ocupar mais de um banco.

EEPROM A maior parte dos modelos de PIC, possuem esta memória interna.

37

4.3 - Introdução às Interrupções

Como o próprio nome diz, uma interrupção serve para interromper o programa imediatamente e desta forma realizar uma outra atitude instantaneamente. As interrupções são ações tratadas diretamente pelo “Hardware”, o que as torna muito rápidas e disponíveis em qualquer ponto do sistema. Quando uma interrupção acontece, o programa é paralisado e uma

função específica é executada e depois o programa continua a ser executado no mesmo ponto em que estava. No PIC temos vários tipos de interrupções que podem ser provocadas de modo diferentes e com diferentes atuações. Nos modelos mais antigos, não possuíam nem interrupção e nos modelos mais novos da família PIC, podemos encontrar até 18 tipos diferentes de interrupções, como estamos estudando

o PIC 16F628, somente iremos estudar quatro tipos de interrupções.

Interrupção de TIMER 0 - Essa interrupção acontece sempre que um contador de tempo interno, denominado TMR0 (Timer 0), estoura, ou seja, como ele é um contador de 8 bits, sempre que ele passar de 0xFF para 0x00. Utilizado principalmente para contagem de tempo. O TMR0 pode tanto ser incrementado pelo clock da máquina, como também por um sinal externo,

o que neste caso ele passa a ser um contador de pulsos, com outra finalidade. O flag sinalizador da interrupção

E chamado de T0IF e o bit de controle é chamado de T0IE. Ambos se encontram no registrador

INTCON.

Interrupção EXTERNA Essa interrupção é gerada por um sinal externo ligado a uma porta específica do PIC, no caso a porta RB0, caso ela seja definida como entrada. Deste modo se podemos identificar e processar imediatamente um sinal externo.

Para que possa ser identificado, é necessário que se defina se a identificação será realizada na borda de subida ou descida do sinal, é necessário configurar a porta. A flag de sinalização da interrupção externa é chamada de INTF e o controle de habilitação é chamado de INTE e ambos se encontram no registrador INTCON.

Interrupção por MUDANÇA DE ESTADO A interrupção por mudança de estado ocorre se existe a mudança do sinal sem se importar se foi na borda de subida ou descida. Esta interrupção esta ligada as porta RB4, RB5, RB6 e RB7 simultaneamente. Por isso se essas portas forem configuradas como entradas, a mudança de estado em qualquer uma delas irá gerar uma interrupção. Esse tipo de interrupção pode ser utilizado, por exemplo, para criar um sincronismo com a rede, para controle de um triac ou outro sistema qualquer. O flag sinalizador desta interrupção é chamado de RBIF e o sinal de controle é chamado de RBIE. Ambos se encontram sempre no registrador INTCON.

Interrupção de FIM NA ESCRITA NA EEPROM Os PICs possuem uma memória

EEPROM interna e essa interrupção serve para detectarmos o final de uma rotina de escrita nessa memória. A utilização da interrupção não é obrigatória para que a escrita funcione, mas como a EEPROM é lenta na hora de escrever, em alguns sistemas a sua utilização pode ser necessária para evitar uma parada durante a escrita na EEPROM. O flag sinalizador da interrupção é o EEIF

e o bit de controle é chamado de EEIE.

Interrupções - Sempre que uma interrupção acontece (qualquer uma), o programa guarda o

endereço da próxima linha a ser executada na pilha, e desvia para um endereço fixo da memória de programação. Basta então, nesse endereço (0x04), escrever a rotina que irá reconhecer e tratar

a interrupção acontecida, sempre que o microcontrolador desvia para esse endereço, o bit GIE é

desligado, quando se executa uma instrução de retorno de interrupção RETFIE, faz com que o bit GIE seja habilitado permitindo uma nova ocorrência de interrupção.

38

Quando a rotina de interrupção for terminada, o programa automaticamente voltará ao ponto em que estava antes de ocorrer à interrupção. O atraso de tempo existente entre a ocorrência de um evento de interrupção e o efetivo desvio para o vetor de interrupção é chamado de latência de interrupções. Existem outros modos de interrupção, mas não será analisado.

O

microcontrolador

características:

PIC

4.4 O PIC 16F628

16F628

é

versátil,

compacto

e

possui

como

principais

Microcontrolador de 18 pinos o que facilita a compatibilidade com outros em nível de hardware e software (como o 16F84).

Baixo custo

15 pinos de I/O (Entrada ou Saída).

Memória de programação FLASH de 2048 x 14 bits.

Memória SRAM de 224 x 8 bits disponíveis.

Memória EEPROM interna de 128 x 8 bits.

1 canal PWM com captura e amostragem (CCP).

Facilidade de programação com 35 instruções.

Capacidade de corrente de 25 mA por pino de I/O

Oscilador 4 MHz.

Tensão de operação entre 3.0 a 5.5 V (2.0 a 5.5 para versão LF).

1

 

18

RA2

RA1

17

17

RA0

16

16

OSC1

15

15

MCLR

OSC2

14

14

VSS

16F628A

VDD

VSS 16F628A VDD

RB0/INT

RB7

13

13 12

12

RB1

RB6

11

11

RB2

RB5

10

10

RB3

RB4

RB3 RB4
12 RB1 RB6 11 RB2 RB5 10 RB3 RB4 2 3 RA3 4 RA4/TOCKI 5 6

2

3

RA3RB1 RB6 11 RB2 RB5 10 RB3 RB4 2 3 4 RA4/TOCKI 5 6 7 8

4

RA4/TOCKIRB1 RB6 11 RB2 RB5 10 RB3 RB4 2 3 RA3 4 5 6 7 8

5

6

7

8

PICRB6 11 RB2 RB5 10 RB3 RB4 2 3 RA3 4 RA4/TOCKI 5 6 7 8

RB6 11 RB2 RB5 10 RB3 RB4 2 3 RA3 4 RA4/TOCKI 5 6 7 8
RB6 11 RB2 RB5 10 RB3 RB4 2 3 RA3 4 RA4/TOCKI 5 6 7 8
RB6 11 RB2 RB5 10 RB3 RB4 2 3 RA3 4 RA4/TOCKI 5 6 7 8
RB6 11 RB2 RB5 10 RB3 RB4 2 3 RA3 4 RA4/TOCKI 5 6 7 8

9

RB6 11 RB2 RB5 10 RB3 RB4 2 3 RA3 4 RA4/TOCKI 5 6 7 8

Figura 10 Pinagem do PIC 16F62X

39

4.5 - Descrição dos pinos

Pino

Função

Tipo

 

Descrição

 

1

RA2/AN2/Vref

Entrada e saída

Porta A bit 2 / Entrada do comparador analógico / Saída da referencia de tensão.

2

RA3/AN3/CMP1

Entrada e saída

Porta A bit3 / Entrada comparador analógico / Saída comparador 1.

3

RA4/T0CKI/CMP2

Entrada e saída

Porta A bit 4 / Entrada clock externo do timer 0 / Saída comparador 2. Saída em dreno aberto.

4

RA5/MCLR/THV

Entrada

Porta

A

bit

5

/

Reset CPU /

tensão

de

programação.

 

5

Vss

Alimentação

Terra.

 

6

RB0/INT

Entrada e saída

Porta

B

bit

0

/

Entrada

de

interrupção

externa.

 

7

RB1/RX/DT

Entrada e saída

Porta B bit 1 / Recepção USART (modo assíncrono) / Dados (modo síncrono).

8

RB2/TX/CK

Entrada e saída

Porta B bit 2 / Transmissão USART (modo assíncrono) / Clock (modo síncrono)

9

RB3/CCP1

Entrada e saída

Porta B bit 3 / Entrada e saída do modulo CCP.

10

RB4/PGM

Entrada e saída

Porta B bit LVP.

4

/

E entrada de programação

11

RB5

Entrada e saída

Porta B bit 5.

 

12

RB6/T1OSO/T1CKI

Entrada e saída

Porta B bit 6 / Saída oscilador TMR1 / Entrada de clock TMR1.

13

RB7/T1OSI

Entrada e saída

Porta

B

bit

7

/

Entrada do oscilador de

TMR1.

 

14

Vdd

Alimentação

Alimentação Positiva.

 

15

RA6/OSC2/CLKOUT

Entrada e saída

Porta A bit 6 / Entrada para cristal oscilador / Saída de clock.

16

RA7/OSC1/CLKIN

Entrada e saída

Porta A bit 7 / Entrada para cristal oscilador / Entrada de clock externo.

17

RA0/AN0

Entrada e saída

Porta

A

bit

 

0

/

Entrada

comparador

analógico.

 

18

RA1/AN1

Entrada e saída

Porta

A

bit

 

1

/

Entrada

comparador

analógico.

 
 

40

4.6 - Considerações iniciais sobre o Hardware

Alimentação Como vimos na pinagem do 16F628, falamos sobre os pinos Vss e Vdd. Portanto, se tivermos uma fonte segura de 5 Vcc, ligando o GND ao pino 5 e o +5 V ao pino 14. É importante que essa fonte não tenha grandes variações de tensão (riplle) e ruídos. O PIC 16F628, apesar de ter sua tensão nominal em 5 Vcc, pode ser alimentado de 2.0 a 6.0 V, mas essa tensão não deve ficar variando durante sua utilização. Utilizar o capacitor com valor entre 100pF e 100nF em paralelo com os pinos de alimentação.

Osciladores O oscilador do PIC 16F628 pode ser externo ou interno e sem ele o programa não é executado e nada funciona. O oscilador interno é capaz de operar em sete modos diferentes e somente em um modo externo. 1.Como um cristal de baixa potencia (até 200KHz) 2.Cristal / Ressonador cerâmico (até 4MHz) 3.Cristal / Ressonador cerâmico de alta freqüência (até 20MHz) 4.Resistor externo sem saída de clock 5.Resistor externo com saída de clock 6.Oscilador RC interno sem saída de clock 7.Oscilador RC interno com saída de clock 8.Clock externo.

Cristal / Ressonador Quando utilizamos um ressonador ou um cristal de quartzo mais dois capacitores, é possível implementar um oscilador de clock para o PIC. Devemos configurar o microcontrolador de acordo com o modo do oscilador em função da freqüência do cristal ou ressonador utilizado. Onde quando utilizarmos uma freqüência menor que 200KHz (modo LP), uma freqüência entre 200KHz e 4MHz (modo XT) e uma freqüência maior que 4MHz (modo HS). Os capacitores entre 10 e 33 pF.

PIC16F628 C1 1 18 2 17 3 16 4 15 XTAL 5 14 C2 6
PIC16F628
C1
1
18
2
17
3
16
4
15
XTAL
5
14
C2
6
13
7
12
8
11
9
10

Figura 11 Oscilador a cristal

Oscilador / Resistor É utilizado um resistor conectado ao pino RA7 ao terra para gerar o clock para a CPU. O oscilador trabalha com uma freqüência desde 10KHz a 8MHz e o resistor deve estar entre 38K e 1M. Para definirmos esta operação o bit OSCF no registrador PCON, deve estar em 1.

R

RA7 / OSC1 / CLKIN RA6 / OSC2 / CLKOUT
RA7 / OSC1 / CLKIN RA6 / OSC2 / CLKOUT
RA7 / OSC1 / CLKIN RA6 / OSC2 / CLKOUT
RA7 / OSC1 / CLKIN RA6 / OSC2 / CLKOUT
RA7 / OSC1 / CLKIN RA6 / OSC2 / CLKOUT
RA7 / OSC1 / CLKIN RA6 / OSC2 / CLKOUT
RA7 / OSC1 / CLKIN RA6 / OSC2 / CLKOUT

RA7 / OSC1 / CLKIN

RA6 / OSC2 / CLKOUT

no registrador PCON, deve estar em 1. R RA7 / OSC1 / CLKIN RA6 / OSC2

Figura 12 Oscilador resistor

41

Oscilador Interno É um oscilador de 4MHz derivado de um clock obtido a partir de um oscilador RC interno. Esse oscilador possui razoável precisão com um valor típico de 4Mhz, com mínimo de 3,65 e máximo de 4,28Mhz. Permite uma maior disponibilidade dos pinos do PIC, pois RA6 e RA7 estão liberados. Para definirmos esta operação o bit OSCF no registrador PCON, deve estar em 0, se estiver em 1 estaremos com um clock de 37KHz. É necessário implementar no programa na etapa de configuração do microcontrolador a seguinte instrução “_INTRC_OSC_NOCLKOUT“ e retira-se a instrução _XT_OSC.

Clock Externo Quando utilizarmos um clock externo para o PIC é necessário configurar o modo do oscilador para EC.

10

é necessário configurar o modo do oscilador para EC. 10 RA7 / OSC1 / CLKIN RA6

RA7 / OSC1 / CLKIN

RA6 / OSC2 / CLKOUT

para EC. 10 RA7 / OSC1 / CLKIN RA6 / OSC2 / CLKOUT Figura 13 –

Figura 13 Clock externo

Detector baixa tensão É um detector de baixa tensão, conhecido também como detector de “Brown – out”, onde caso a tensão de alimentação diminuir abaixo do valor de Vz, um reset do MCU é implementado fazendo com que a CPU reinicialize o programa. Caso seja utilizada uma tensão baixa de alimentação é necessário desabilitar o bit BODEN = 0 para que não seja detectado.

desabilitar o bit BODEN = 0 para que não seja detectado. Figura 14 – Detector baixa

Figura 14 Detector baixa tensão

Temporizador de Power-Up O temporizador de power-up (PWRT) pode ser utilizado para fazer com que o chip permaneça em reset por aproximadamente 72ms após o chip ter sido ligado. Deve ser utilizado sempre que possível devido ao fato do tempo de demora de estabilização da fonte de alimentação para todos os componentes envolvidos no circuito. Esse temporizador pode ser habilitado ou desabilitado somente durante a programação do chip.

Módulo Comparador Analógico O modula comparador analógico consiste em um conjunto de dois comparadores analógicos internos, que podem realizar comparações entre si ou de tensões analógicas externas. O modulo possui apenas o um registrador CMCON, responsável pela configuração e controle dos comparadores internos.

42

4.7 - Registradores especiais

Como vimos o microcontrolador PIC possui uma série de registradores especiais que são denominados SFR (Special Function Registers) que servem exatamente para guardar a configuração e o estado de funcionamento atual da máquina. Para efeito de padronização, cada bit dentro desses registradores receberá um nome, sendo também especificado se esse bit pode ser lido (R-Read) e/ou escrito (W-Write). Veremos agora para que serve e como é composto cada um desses registradores.

4.8 - Registradores Gerais

Conhecendo o STATUS Esse registrador serve para mostrar o estado da ULA, a forma do último reset e também para configurar a pagina de programação atual, quando necessário.

 

Registrador: STATUS

 

Endereços: 03h, 83h, 103h e 183h

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

R/W

R/W

R/W

R

R

R/W

R/W

R/W

IRP

RP1

RP0

/TO

/PD

Z

DC

C

IRP Seletor de banco de memória usado para endereçamento indireto.

0 = Banco 0 e 1 (00h FFh).

* Manter sempre em 0 no 16F628

1 = Banco 2 e 3 (100h 1FFh)

RP1 e RP0 Seletor de banco de memória usado para endereçamento indireto.

00

= Banco 0 (00h 7Fh).

01 = Banco 1 (80h FFh).

10

= Banco 2 (100h 17Fh).

11 = Banco 3 (180h 1FFh).

* Cada banco possui 128 bits. O PIC 16F628 só possui os bancos 0 e 1. RP1 deve ser 0.

/TO Indicação de Time-out.

0 = Indica que ocorreu um estouro de WatchDog (WDT).

1 = Indica que ocorreu um power-up ou foi executada a instrução CLRWDT ou SLEEP.

/PD Indicação de Power-down.

0 = Indica que a instrução SLEEP foi executada.

1 = Indica que ocorreu um Power-up ou foi executada a instrução CLRWDT.

Z Indicação de zero.

0 = Indica que o resultado da ultima operação (lógica ou aritmética) não foi zero.

1 = Indica que a ultima operação (lógica ou aritmética) resultou em zero.

43

DC Digit Carry/borrow.

0 = A ultima operação da ULA não ocasionou um estouro de dígito.

1 = A ultima operação da ULA ocasionou um estouro (carry) entre o bit 3 e 4, isto é o resultado ultrapassou os 4 bits menos significativos.

C Carry.

0 = A ultima operação da ULA não ocasionou um estouro (carry)

1 = A ultima operação da ULA ocasionou um estouro (carry) no bit mais significativo.

Conhecendo o CMCON O modulo comparador permite implementar diversos circuitos através dos comparadores analógicos, inclusive conversores A/D, como o de rampa ou conversores. Cada implementação é realizada através do registrador CMCON. Este registrador é implementado no PIC 16F628.

Registrador: CMCON

 

Endereços: 1Fh

 

Bit

7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

R

R

R/W

R/W

R/W

R/W

R/W

R/W

C2OUT

C1OUT

C2INV

C1INV

CIS

CM2

CM1

CM0

C2OUT Bit indicativo do estado da saída do comparador 2.

0 = em “C2INV” 0 entrada Vin+ < Vin -, 1 entrada Vin+ > Vin -.

1 = em “C2INV” 0 entrada Vin+ > Vin -, 1 entrada Vin+ < Vin -.

C1OUT Bit indicativo do estado da saída do comparador 1.

0 = em “C1INV” 0 entrada Vin+ < Vin -, 1 entrada Vin+ > Vin -.

1 = em “C1INV” 0 entrada Vin+ > Vin -, 1 entrada Vin+ < Vin -.

C2INV Seleção de inversão do sinal de saída do comparador 2.

0 Saída não invertida

1 Saída invertida.

C1INV Seleção de inversão do sinal de saída do comparador 1.

0 Saída não invertida

1 Saída invertida.

CIS Seleção de entrada dos comparadores nos modos 1 e 2.

CM2, CM1 e CM0 Seleção do modo de operação dos comparadores:

44

CM2

CM1

CM0

Modo

0

0

0

0

0

0

1

1

0

1

0

2

0

1

1

3

1

0

0

4

1

0

1

5

1

1

0

6

1

1

1

7

Modo 0 Neste modo os comparadores se encontram em reset, é o modo inicial de configuração dos comparadores. Neste modo, as saídas estão desligadas, mas os pinos RA0, RA1, RA2 e RA3 estão conectados às entradas dos comparadores, ou seja, como entradas analógicas.

Modo 1 Dois comparadores com três entradas Multiplexadas onde temos 2 entradas conectadas à entrada inversora de C1 e ambos comparadores compartilham a mesma referência externa conectada à entrada inversora de RA2/AN2/Vref.

Modo 2 Dois comparadores com quatro entradas multiplexadas onde temos os comparadores configurados com a entrada não inversora conectada ao módulo de referência de tensão interna (VREF). As entradas inversoras de cada comparador são multiplexadas.

Modo 3 Dois comparadores com uma referência externa comum onde temos uma configuração na qual os dois comparadores possuem uma referência de tensão externa conectado ao pino RA2/AN2/Vref. Deste modo o pino RA3/AN3/CMP1 pode ser utilizado como I/O digital.

Modo 4 Neste modo temos os dois comparadores independentes.

Modo 5 Apenas o comparador C2 está em funcionamento e o comparador C1 permanece desligado, liberando os pinos RA0/AN0 e RA3/AN3/CMP1 para utilização como I/O digital.

Modos 6 Neste modo têm os dois comparadores compartilhando a mesma referência externa comum (RA2/AN2/Vref). As saídas C1OUT e C2OUT encontram-se disponíveis externamente nos pinos RA3/AN3/CMP1 e RA4/T0CKI/CMP2 respectivamente.

Modo 7 Neste modo os comparadores se encontram desligados e os pinos de RA0 a RA3 podem ser utilizados para I/O digital.

45

Conhecendo o OPTION Esse registrador serve para configurar uma série de opções para a operação do microcontrolador. Apesar de este registrador receber o nome OPTION, ele será referenciado em nossos programas pelo nome OPTION-REG, pois os PICs mais antigos possuíam uma instrução chamada OPTION.

 

Registrador: OPTION

   

Endereços: 81h e 181h

 

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

/RBPU

INTEDG

TOCS

TOSE

PSA

PS2

PS1

PS0

/RBPU Habilitação dos pull-ups internos para o PORTB.

0 = Pull-ups habilitado para todo pino do PORTB configurado como entrada.

1 = Pull-ups desabilitado.

INTEDG Configuração da borda que gerará a interrupção externa no RB0.

0 = A interrupção irá ocorrer na borda de descida.

1 = A interrupção irá ocorrer na borda de subida.

TOCS Configuração do incremento para o TMR0.

0 = TMR0 será incrementado internamente pelo clock da máquina.

1 = TMR0 será incrementado externamente pela mudança no pino RA4/T0CKI.

TOSE Configuração da borda que incrementará o TMR0 no pino RA4/T0CKI quando TOCS =

1.

0 = Incremento na borda de subida.

1 = Incremento na borda de descida.

PSA Configuração de aplicação do prescaler.

0 = O prescaler será aplicado ao TMR0.

* Para o TMR0 ser incrementado a cada ciclo de máquina é necessário que PSA = 1

1 = O prescaler será aplicado ao WDT.

PS2, PS1 e PS0 Configuração do valor de prescaler.

Bits 2, 1, 0

TMR0

WDT

000

1:2

1:1

001

1:4

1:2

010

1:8

1:4

011

1:16

1:8

100

1:32

1:16

46

101

1:64

1:32

110

1:128

1:64

111

1:256

1:128

Conhecendo o PCON Esse registrador serve para sinalização de dois estados de reset. O reset por queda de tensão de alimentação (Brown-out) e o reset de inicialização (Power-on reset). Além disso, o bit 3 desse registrador controla o clock do chip quando nos modos de oscilador interno ou resistor externo.

 

Registrador: PCON

   

Endereço: 8Eh

 

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

-

- -

   

- R/W

 

- R/W

R/W

-

- -

   

- OSCF

 

- /POR

/BOD

OSCF Bit de controle do modo de operação do oscilador de clock interno.

0 = Clock de 37 KHz somente nos modos de clock interno ou resistor externo.

1 = Clock de 4 MHz interno ou conforme resistor externo.

/POR Sinalizador de reset de inicialização.

0 = Houve um reset do tipo POR reset de inicialização.

1 = Não ocorreu o reset de inicialização.

/BOD Sinalizador de reset por queda de tensão de alimentação (Brown-out).

0 = Houve reset por queda da tensão alimentação.

1 = Não houve reset por queda de tensão de alimentação.

Conhecendo o INTCON Esse registrador serve para configurar e identificar as interrupções.

 

Registrador: INTCON

   

Endereços: 0Bh e 8Bh

 

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

GIE

EEIE

T0IE

INTE

RBIE

T0IF

INTF

RBIF

GIE Habilitação geral das interrupções (chave geral).

0 = Nenhuma interrupção será tratada.

1 = As interrupções habilitadas serão tratadas individualmente.

47

EEIE Habilitação da interrupção de final de escrita na EEPROM (chave individual).

0 = A interrupção não será tratada.

1 = A interrupção será tratada.

T0IE Habilitação da interrupção de estouro de TMR0 (chave individual).

0 = A interrupção não será tratada.

1 = A interrupção será tratada.

INTE Habilitação da interrupção externa no pino RB0 (chave individual).

0 = A interrupção não será tratada.

1 = A interrupção será tratada.

RBIE Habilitação da interrupção por mudança de estado nos pinos RB4 a RB7 (chave individual).

0 = A interrupção não será tratada.

1 = A interrupção será tratada.

T0IF Identificação da interrupção de estouro de TMR0.

0 = Esta interrupção não ocorreu.

1 = Esta interrupção ocorreu.

INTF Identificação da interrupção externa no pino RB0.

0 = Esta interrupção não ocorreu.

1 = Esta interrupção ocorreu.

RBIF Identificação da interrupção por mudança de estado nos pinos RB4 a RB7.

0 = Esta interrupção não ocorreu.

1 = Esta interrupção ocorreu.

Conhecendo o PIE1 Possui a função de habilitação / desabilitação das chamadas interrupções periféricas.

 

Registrador: PIE1

   

Endereços: 8Ch

 

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

R/W

R/W

R/W

R/W

-

R/W

R/W

R/W

EEIE

CMIE

RCIE

TXIE

-

CCP1IE

TMR2IE

TMR1IE

EEIE Habilitação de interrupção por término de escrita na EEPROM interna.

0 = Esta interrupção não ocorreu.

1 = Esta interrupção ocorreu.

CMIE Habilitação de interrupção de mudança de estados dos comparadores analógicos.

0 = Esta interrupção não ocorreu.

48

1 = Esta interrupção ocorreu.

RCIE Habilitação de interrupção de mudança de estado dos comparadores.

0 = Esta interrupção não ocorreu.

1 = Esta interrupção ocorreu.

TXIE Habilitação de interrupção de transmissão USART.

0 = Esta interrupção não ocorreu.

1 = Esta interrupção ocorreu.

CCP1IE Habilitação de interrupção do modulo CCP.

0 = Esta interrupção não ocorreu.

1 = Esta interrupção ocorreu.

TMR2IE Habilitação de interrupção de transbordo do timer 2.

0 = Esta interrupção não ocorreu.

1 = Esta interrupção ocorreu.

TMR1IE Habilitação de interrupção de transbordo do timer 1.

0 = Esta interrupção não ocorreu.

1 = Esta interrupção ocorreu.

O bit 3 do registrador deve ser sempre mantido em “0”. Para habilitar a CPU, utilizando uma das interrupções devemos setar o bit PEIE e o bit GIE no INTCON.

Conhecendo o PIR1 Localizado no banco “0” e abriga os flags sinalizadores de interrupções periféricas.

 

Registrador: PIR1

   

Endereços: 0Ch

 

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

R/W

R/W

R/W

R/W

-

R/W

R/W

R/W

EEIE

CMIF

RCIF

TXIF

-

CCP1IF

TMR2IF

TMR1IF

EEIF Sinalizador de término de escrita na EEPROM.

0 = A escrita ainda não terminou ou não foi iniciada.

1 = A escrita terminou.

CMIF Sinalizador de mudança de estado na saída dos comparadores analógicos.

0 = Não houve mudança de estado nos comparadores.

1 = Houve mudança na saída dos comparadores.

RCIF Sinalizador de recepção de caractere na USART.

0 = Não houve recepção de novos caracteres.

1 = Um novo caractere foi recebido.

TXIF Sinalizador de transmissão na USART.

0 = Não houve transmissão na USART ou o TSR esta ocupado.

1 = O caractere armazenado no TXREG foi repassado para o TSR.

49

CCPIF Sinalizador de comparação / captura no módulo CCP.

0 = Não houve comparação válida / captura no módulo CCP.

1 = Houve comparação / captura no módulo CCP.

TMR2IF Sinalizador de transbordo no timer 2.

0 Não houve transbordo de contagem no TMR2.

1 Houve transbordo de contagem no TMR2.

TMR1IF - Sinalizador de transbordo no timer 1.

0 Não houve transbordo de contagem no TMR1.

1 Houve transbordo de contagem no TMR1.

Conhecendo o PCL O PCL é um registrador que armazena os 8 bits menos significativos do PC (program counter), o qual indica a próxima linha do programa que será executado no momento. A cada ciclo de máquina o PC é automaticamente alterado, para que o programa possa ser executado. Esse registrador também pode ser alterado pelo programa, mas isto deve ser feito com extremo cuidado para que o sistema não se perca e/ou trave.

 

Registrador: PCL

   

Endereços: 02h e 82h

 

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

 

Parte baixa do PC

 

Conhecendo o PCLATH Como a área de memória de programação do PIC 16F628 é maior que 256 bytes, não é possível acessá-la completamente com somente os 8 bits do PCL. Por isso, o PCLATH possui os 5 bits mais altos do PC. No PIC 16F628, esse registrador é controlado diretamente pelo hardware e não precisa ser acessado pelo programa.

 

Registrador: PCLATH

   

Endereços: 0Ah e 8Ah

 

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

-

-

-

R/W

R/W

R/W

R/W

R/W

 

Parte Alta do PC

 

4.8.1 - Registradores Portas

Conhecendo os TRIS Esses registradores servem para configurar os pinos das portas como entrada ou saída. Quando é colocado “1” em um bit do TRIS, o pino relacionado a ele é configurado como entrada. Para configurar o pino como saída, deve-se colocar “0” no bit relacionado. Basta relacionar “1” a palavra “Imput” (entrada) e “0” a palavra “Output” (saída). Para configurar o PORTA, deve ser utilizado o TRISA e para configurar o PORTB, deve ser utilizado o TRISB.

50

 

Registrador: TRISA

   

Endereços: 85h

 

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

R/W

R/W

R/W

R/W