Você está na página 1de 26

Caractersticas do PIC16F84

Nesta parte vamos olhar a estrutura do PIC16F84 para entender melhor seu
funcionamento. Vamos comear com uma lista das principais caractersticas:

Repertrio de 35 instrues.

Todas as instrues so executadas em um nico ciclo exceto para o salto tm


dois.

Verses de baixo consumo (16LF84A), 4 MHz (PIC16F84-04), 20 MHz


(PIC16F84-20). Um ciclo de mquina do PIC so 4 ciclos de clock, assim se
tivermos um PIC com um cristal de 4 MHz, ser implementadas de 1 milho de
instrues por segundo.

Memria Flash de 1 K x 14 bits de programa.

Memria RAM dividido em 2 reas: 22 registros de finalidade especfica (SFR)


e 68 propsito geral (GPR) como memria de dados.

15 registros de funes especiais.

Memria de dados de 68 bytes de RAM (68 registros de finalidade geral).

Memria de dados EEPROM 64 bytes.

13 Bit de contador de programa (que em teoria permitiria abordar 4 KB de


memria, embora 16F84 s tem 1 KB de memria implementada).

Bateria com 8 nveis de profundidade.

Modos de endereamento diretos, indiretos e relativos.

ALU de 8 bits e registo de trabalho w que normalmente recebe um operando


pode ser qualquer registro, memria, portas de entrada/sada ou o cdigo de
instruo.

4 fontes de interrupes:
o

Atravs de pino RB0/INT.

O estouro do temporizador de TMR0.

Interrupo por mudana de pinos 4:7 da porta b.

Concluda a escrita da memria EEPROM.

1.000.000 de memria EEPROM apagar/gravao ciclos.

40 anos de reteno de memria EEPROM.

13 direo individual controle pinos de e/S.

PortA 5 bits <RA0:RA4>.

PortB 8 bits <RB0:RB7>.

TMR0 de contador/temporizador de 8 bits divisor programvel.

Redefinir Power-on (POR).

Power-up Timer (PWRT).

OFB arranque temporizador (OST).

Temporizador do Watchdog (WDT).

Proteo de cdigo.

Modo de suspenso de baixa energia.

Ele pode operar em quatro modos diferentes de oscilador.

Programao em srie atravs de dois pinos.

Tecnologia de baixo consumo de energia e alta velocidade CMOS


Flash/EEPROM.

Caractersticas elctricas mximas (eles no devem ser ultrapassados e ficar por


um tempo no mximo alguns pode danificar o PIC)

Temperatura ambiente de operao de - 55 C a + 125 c.

Tenso mxima de VDD a VSS - 0.3 a + 7, 5V.

Tenso de qualquer pino para VSS (exceto VDD MCLR e RA4) - 0, 3V


(VDD + 0.3V).

Tenso de MCLR ao VSS - 0.3 a + 14V.

Tenso em RA4 para VSS - 0.3 a + 8, 5V.

Dissipao de potncia total de 800 mW.

Sada mxima para VSS 150 mA atual.

Sada mxima de VDD 100 mA atual.

A porta "A" como fonte de corrente mxima de 50 mA.

Corrente mxima de porta "A" como sumidouro, 80 mA.

A porta "B" como fonte de corrente mxima de 100 mA.

Corrente mxima do Porto "B" como um coletor, 150 mA.

Corrente mxima que pode fornecer uma nica sada como origem ou
coletor, 25 mA.

Intervalo de fornecimento de energia:


o

16LF84A: 2 a 5.5 v XT, RC e LP oscilador configuraes.

16F84A:

4 a 5,5 v XT, RC e LP oscilador configuraes.

4,5 a 5,5 v nas configuraes do oscilador HS.

Consumo tpico:
o

16LF84A:

1 a 4 Ma oscilador RC e configurao XT (FOSC = 2 MHz, VDD


= 5, 5V).

de 15 a 45 A na configurao do oscilador LP (FOSC = 32 kHz,


VDD = 2V, WDT com deficincia).

16F84A:

1.8 a 4.5 Ma oscilador RC e configurao XT (FOSC = 4 MHz,


VDD = 5, 5V).

3 a 10 MA na configurao do oscilador RC e XT durante a


programao do FLASH (FOSC = 4 MHz, VDD = 5, 5V).

16F84A-20:10 a 20 MA na configurao do oscilador HS (FOSC = 20


MHz, VDD = 5, 5V).

Para manter as informaes sobre PIC atualizado necessrio obter o arquivo PDF que
pode ser encontrado em www.microchip.com. Tambm pode ser encontrado como o
anexo 3 o arquivo pic16f84a.pdf, em ingls.
DISPOSITIVOS LGICOS MICROPROGRAMABLES

Arranjo e descrio do pino


Prestao de patillas
Disponvel para encapsulado de DIL de 18 pinos:

O PIC16F84

5.3

Descrio do pino
Nome

NO. Tipo

Descrio

OSC1/CLKIN

16

(I)

Inserindo o relgio externo fonte entrada/cristal de


quartzo

OSC2/CLKOU
T

15

Partida do cristal oscilador. No modo de RC, uma


partida com freqncia de OSC1 trimestre

MCLR

EU /
P

A tenso de programao entrada/redefinir.

RA0

17

I/O

Porta um bidirecional, bit 0

QUE

18

I/O

Porta um bidirecional, bit 1

RA2

I/O

Porta um bidirecional, bit 2

RA3

I/O

Porta um bidirecional, bit 3

RA4/T0CKI

I/O

Tambm usado para ela entra relgio para o TMR0

RB0/INT

I/O

Bi-directional port B, bit 0


Voc pode selecionar para entrada de interrupo
externa

RB1

I/O

Bi-directional port B, bit 1

RB2

I/O

Bi-directional port B, bit 2

RB3

I/O

Bi-directional port B, bit 3

RB4

10

I/O

Bi-directional port B, bit 4


Interrupo por mudana de Estado

RB5

11

I/O

Bi-directional port B, bit 5


Interrupo por mudana de Estado

RB6

12

I/O

Bi-directional port B, bit 6


Interrupo por mudana de Estado

RB7

13

I/O

Bi-directional port B, bit 7


Interrupo por mudana de Estado

VSS

Terra de referncia

VDD

14

Alimentar

DISPOSITIVOS LGICOS MICROPROGRAMABLES

O PIC16F84

5.4

Arquitetura interna
O alto desempenho de microcontroladores PIC derivado as caractersticas de sua
arquitetura. Eles so baseados em um tipo de arquitetura de Harvard que tem espaos de
memria e de barramento separadamente para o programa e os dados, que faz com que
eles so mais rpidos que os microcontroladores baseados na arquitetura tradicional de
Von Neuman.
Outro recurso o seu conjunto de instrues reduzido (35 instrues) RISC, onde a
maioria executada em um ciclo de relgio nico exceto saltar instrues que leva dois.
Ele tem um ALU (unidade lgica e aritmtica) 8-bit capaz de realizar operaes lgicas
de deslocamento, adies e subtraes. Possui um registro de trabalho (W) no
enderevel usada em operaes com a ALU.

Dependendo da instruo executada, a ALU pode afetar o transportar, transportar bits de


Digital (DC) e zero (Z) do registo de Estado (STATUS).
A bateria de 8 nveis. No h nenhum sinalizador para indicar que ele est cheio, o
programador que deve controlar o que seu estouro no ocorre.
Este microcontrolador tem caractersticas especiais para reduzir os componentes
externos, reduzindo assim os custos e reduzir o consumo. Tem 4 modos de oscilador
diferentes de oscilador simples circuito RC com o que diminuem os custos at o uso de
um cristal oscilador.
No modo de sono consumo reduzido significativamente e pode 'acordando' para o
microcontrolador usando ambos sinal de reset interno e externo de quebras. Ele tambm
tem a funo de temporizador do Watchdog (co guardio) que protege o micro 'crashes'
por causa de erros de software que produzem loops infinitos.
DISPOSITIVOS LGICOS MICROPROGRAMABLES

O PIC16F84

5.5

Memria de programa
Memria de programa organizado com as palavras de 14 bits com um total de 1 K, a
taxa de Flash, durante a operao somente leitura. Ele s ser executado o cdigo
contido neste relatrio e pode armazenar uma quantidade limitada de dados como parte

da instruo RETLW nele. Em uma nica palavra unir o cdigo da instruo e o modo
de funcionamento ou seu endereo.
O tipo de memria usado neste microcontrolador pode ser registado ou apagado
eletricamente ao nosso prprio gosto do programador. Tipo de memria Flash tem a
caracterstica de ser capaz de excluir o bloco completo e posies concretas ou
especficas no possvel excluir. Este tipo de memria no voltil, ou seja, no
perder dados se a energia interrompida.
DISPOSITIVOS LGICOS MICROPROGRAMABLES

O PIC16F84

5.6

Memria para armazenar o programa ns ser perfeitos para realizar testes e


experincias, alm de programao "on board" ou "no circuito", ou seja, permite a
programao de atualizao de software ou dispositivo sem ter que remov-lo do
circuito onde ele montado.

A memria de programa comea na posio 0000h e termina na posio 03FFh. Esta


1Kbyte, ou seja, 1024 bytes (2)10).
A figura mostra tambm o PC (contador de programa ou contador de programa). Ele
aponta para o endereo de memria da instruo em curso e permitir que o programa de
Avanar quando ele aumenta.

tambm mostrada a pilha ou pilha de 8 nveis (nvel 1 bateria nvel bateria 8). Ele
usado quando executamos um thread ou uma sub-rotina, ou seja, um conjunto de
instrues que podemos ter isolado de outros para simplificar. Neste caso, o contador do
programa (PC) ir aumentar e apontar para a posio de memria de programa onde
comea a sub-rotina; no primeiro nvel da pilha que esta chamada ser armazenada at o
fim de executar as instrues contidas nela, momento em que continuar com instrues
de onde ele tinha sido chamado. Por isso, necessrio saber onde foi o programa de
armazenar o endereo na pilha. Ns podemos fazer at 8 chamadas a sub-rotinas um
dentro de outro, como se fossem bonecas russas. Isso chamado de subrotinas
aninhadas.
O vetor de reset a posio 0000h e interrupo no 0004h.
O PIC16F84 possui um programa de bit 13 contador pode endereo um 8 K x 14 espao
de memria, no entanto, apenas o primeiro 1 K x 14 (0000h a 03FFh) fisicamente
implementado.
Voc tem acesso a um local acima da vontade de direo fisicamente implementado
produzir uma sobreposio. Por exemplo, para locais 20 h, h 420 h 820, C20h, 1020h,
1420h, 1820h e 1C20h, o endereo real ser o mesmo, assim, 20 h 32 d e h 420
1056d, 1056d menos 1024d igual a 32 d, ou seja, dirige realmente o local h 20, em
binrio h 20 100000b e 420 h 10000100000b, K 1 direciona com 10 bits (210 = 1024)
para que 10000100000b se apenas 10 bits so tidos em conta 0000100000b que 20 h.
Isso deve ficar bem claro que aps 3FF, aumentar o PC e mover para 400, direccionar
novamente a posio 0 (h)
Existem vrias verses da memria de programa para o PIC16F84:

Verso Flash . uma memria no-voltil, baixo consumo de energia, que pode
gravar e apagar. Ao contrrio da memria ROM, memria FLASH
programvel no circuito. mais rpida e maior densidade do que a EEPROM.
Esta verso ideal para o ensino e design de engenharia.

Verso OTP . ("One Time Programmable") "Programvel apenas uma vez".


Apenas uma vez pelo usurio sem a possibilidade de eliminar o que gravado
pode ser gravado. muito mais barato na implementao de prottipos e
pequenas sries.

Verso QTP . o prprio fabricante que responsvel por gravar o cdigo em


todas as fichas que formam ordens de mdios e grandes.

Verso SQTP . O fabricante s gravou algumas posies do cdigo para o


trabalho de identificao, nmero de srie, palavra-chave, soma de verificao,
etc.

Memria FLASH ter substitudo o EEPROM e so muito teis para permitir


microcontroladores que incorporam podem ser reprogramado "no circuito", ou seja, sem
precisar remover o circuito integrado carto. Assim, um dispositivo com este tipo de
memria incorporada para o motor de um Controlarar de carro permite que voc tenha
alterado o programa durante a rotina de manuteno peridica, compensando o desgaste
e a outros factores, como a compactao, a instalao de novas peas, etc. O
reescalonamento do microcontrolador pode tornar-se um trabalho de rotina na
implementao beira.

DISPOSITIVOS LGICOS MICROPROGRAMABLES

O PIC16F84

5.7

Memria de dados
Ele organizado em duas pginas ou bancos de cadastro, banco 0 e banco 1. Um pouco
de registro STATUS (RP0) usado para alterar a pgina.
Cada banco , por sua vez dividido em duas reas:

SFR (registradores de funo especial)

0.02 (Registros de finalidade geral)

Na figura abaixo temos uma idia de como eles esto distribudos:

DISPOSITIVOS LGICOS MICROPROGRAMABLES

O PIC16F84

A primeira RFS (registros de atribuies especiais) que controlam a operao do


dispositivo. Estes so utilizados para controlar a operao da CPU e perifricos.

5.8

A segunda rea (68 bytes SRAM) 0,02 (registradores de propsito geral) e pode
acess-los ambos diretamente e indiretamente fazendo uso do registrador FSR.
Banco 0:

Este banco composto de 80 bytes da posio 00 at 4Fh (de 0 79).

A rea SFR consiste de 12 registros que sero usados para funes especiais do
microcontrolador. Comea no endereo 00 h e termina no 0Bh, ou seja, de 0 a
11.

A rea de 0,02 consiste em 68 registros de RAM que ser usado para armazenar
dados temporrios exigidos pelos programas. Ele comea em 0Ch direo e
termina na posio 4Fh (do dia 12 para a 79). Esta parte a memria de
registradores de propsito geral.

Banco 1:

Este banco tem as mesmas dimenses que o anterior, mas seu uso menor, j
que voc no pode banco para propsito geral registra. S tem uma seo de
registradores especiais que posicionar 80h 8Bh (de 128 para a 139)

A memria RAM, bem como alguns registradores especiais so os mesmos nas duas
margens do mapa da memria do PIC. Os bytes de largura de memria 8 bis.
Dois modos de endereamento, o direto e o indireto so usados para enderear a
memria de dados. O endereamento direto, os 7 bits menos peso do cdigo OP de
instruo fornecem a direo na posio da pgina, enquanto o STATUS RP0 RP1 bits
pgina selecionada ou banco.
No endereamento indireto que a instruo operacional refere-se ao registo IDNF, que
ocupa a posio 00h da rea de dados. Acessando a posio do registro de 0 h FSR 04
banco que aponta. Os 7 bits menos peso de FSR selecionado posio e seu bit de mais
peso, juntamente com o bit IRP no registro de status, selecione a pgina.
Para obter mais informaes, consulte registros do PIC16F84.

Endereamento
Para o PIC, existem apenas 4 modos de endereamento, entre eles, trs deles j foram
vistos intuitivamente quando vimos as instrues. Modos de endereamento so sobre
como mover os dados de uma localizao de memria para os outros.

Endereamento imediato

Direta de endereamento

Endereamento bit a bit

Endereamento indireto

Endereamento imediato

Os dados manipulados pela instruo codificados com a prpria instruo. Neste caso,
os dados em questo so chamados um literal.
MOVLW k; Coloque o k literal, que vale a pena qualquer codificado com
8 bits no registo de trabalho w

Direta de endereamento
A memria interna dirigida diretamente por meio de 8-bit "f" contido nas instrues
que operam em linhas. Desta forma, qualquer posio pode tratar de 00 para o FF.
Microcontroladores que possuem mais de um banco, antes de aceder a qualquer varivel
que na rea dos bancos de registradores, o programador deve assegurar tendo
programado os bits do banco da seleo de opo de registo.
Este o modo mais comumente utilizado, desde como vimos acima, a memria RAM
dividida em registos especficos e um conjunto de registradores de propsito geral.
Desta forma codificar o nome do ou dos registos em causa directamente no ensino.
MOVWF f; Move o contedo do registrador registro w f

Endereamento bit a bit


Um nico bit em qualquer registo tratado por este endereo. Este modo de
endereamento no usado nunca sozinho, mas ele ser sempre combinado com o
modo de endereamento direto.
BCF (f), (b); Definido para zero o nmero de bit b do registrador (f)

Endereamento indireto
a forma mais poderosa e usa os registros de SWFe INDF . No FSR registo Obtm o
endereo do registro que voc deseja ler quando voc acessar INDF.
FSR funciona como um ponteiro, ou seja, o valor que podemos observar este registo
ser o endereo de um local de memria. Se podemos aumentar ou reduzir o contedo
de SWF com qualquer operao, passamos entre as posies de memria.
DISPOSITIVOS LGICOS MICROPROGRAMABLES

O PIC16F84

5.9

O registro INDF no tem nenhuma existncia fsica, apenas implementado na posio


0 como forma de notao. A utilidade deste registro no um que acessam os dados
apontados pelo registrador FSR, modific-los, etc.
Isso muito mais claro nos dois exemplos a seguintes. A primeira delas um
pseudocdigo para acessar a memria RAM, e o segundo um algoritmo para limp-lo.
Exemplo 1:
05 Registo contm o valor 10 h.

Log valor 0A 06h.

Ns carregamos o valor 05 no
registo FSR.

05 Registo agora apontado.

Podemos aumentar o SWF (SWF =


SWF + 1) registro.

O objectivo agora posio 06.

Se lermos o registro INDF, isso ir


retornar o valor 0A h.

Se lermos o registro INDF, isso


ir retornar o valor 10 h.

INDF

10h

INDF

H 0A

001

001

002

002

003

003

FSR

05h

FSR

06h

005

10h

005

10h

006

H 0A

006

H 0A

007

007

008

008

009

009

HOSP

HOSP

00B

00B

Se lermos o registo INDF de indiretamente (com FSR apontando-lo), o valor de leitura


ser 00. Se ns escrevermos este registo indirectamente, obter um no-operacin,
embora o registo Estado ser afetado.
Exemplo 2:
Limpar a RAM da posio 10h a 20h
MOVLW 0X10; Podemos inicializar o ponteiro
MOVWF FSR
PRXIMA CLRF INDF; Vamos limpar o registro de ponteiro
INCF FSR; Podemos aumentar o ponteiro
BTFSS FSR, 5; Os registros so excludos?
IR PARA O PRXIMO; No, prximo de limpeza
CONTINUAR; Se contnua com o programa

H um quinto abordando modo chamado relativo endereamento vontade no tente que


no est implementado em fotos.

Memria EEPROM de dados


Este relatrio baseado na tecnologia EEPROM e tem um comprimento de 8 bits, da
mesma forma como a memria de dados. Seu tamanho de 64 bytes e est localizado
em um separado e isolado do bloco de dados.
Os 64 bytes de memria de dados EEPROM no no parte do espao enderevel
normal, e a EEDATA encontrado na posio 0008h os registros de banco de memria
RAM e para o EEADR nos endereos 0009h acessvel apenas na leitura e escrita
atravs de dois registradores de dados. Dois registradores especiais, EECON1 em 0088h

de direo e EECON2 em 0089h so usadas para definir o modo de funcionamento da


memria.
Registros que so usados com a EEPROM:

Registo EEDATA (08h): registro de 8 bits de dados de leitura/gravao

Registo EEADR (09h): endereo de registo da 0h 3Fh, 64 bytes

Registo EECON1 (88 h): registo de controle 1

Registo EECON2 (89 h): controle 2 registo (no um registro fsico)

Essa memria no empregar qualquer recurso externo de alimentos. Voc pode gravar a
partir de um programador PIC, bem como o cdigo de programa.
Leitura de uma posio de memria obtido do prximo registo de ciclo de relgio
EEDATA, embora possa demorar algo mais.
A escrita muito mais lento, tardandose da ordem de cerca de 8 Ms. Isso controlado
por um temporizador interno.
Resumo das caractersticas:

Memria de dados de 64 bytes.

Leitura rpida de um byte (em vez de um ou vrios ciclos de instruo).

Escrita de um byte em alguns 8 Ms.

Uma interrupo gerada quando concluda a escrita da memria.

1.000.000 ciclos de apagamento/escrita.

40 anos de reteno de dados.

Tecnologia CMOS de baixo consumo de energia e alta velocidade.

Quando o dispositivo est protegido pelo cdigo, a CPU pode continuar a leitura e
gravao na memria EEPROM, mas o programador de dispositivo j no pode acesse
essa memria.
DISPOSITIVOS LGICOS MICROPROGRAMABLES

O PIC16F84

5.10

Uso da EEPROM
Vamos ento ver Fundo de quais so os processos mais comuns de gravao e leitura na
EEPROM.

Memria de leitura da EEPROM


Para ler a memria EEPROM tem que seguir os seguintes passos:

Registrar por escrito a direo que deve ser lidos na EEADR.

1 Colocar o bit RD do registro EECONpara permitir a leitura.

Leitura dos dados lidos e esperanas para concluir a operao.

Os dados esto disponveis no registo EEDATA.

Vamos ver dois exemplos prticos. O primeiro (LECTURA1) assume que os dados em
EEDATA estar disponveis rapidamente, e o segundo (LECTURA2) esperado para
confirm-la:
LECTURA1 BCF STATUS, RP0; Selecione banco 0
MOVLW MEM1; Endereo para a leitura
MOVWF EEADR; a EEPROM
BSF STATUS, RP0; Selecione Banco 1
BSF EECON1, RD; Ative leitura
BCF STATUS, RP0; Selecione banco 0
MOVF EEDATA, W; W carregado com o valor
; ler eeprom
LECTURA2 BCF STATUS, RP0; Selecione banco 0
MOVLW MEM1; Endereo para a leitura
MOVWF EEADR; a EEPROM
BSF STATUS, RP0; Selecione Banco 1
BSF EECON1, RD; Ative leitura
ESPERANDO BTFSC EECON1, RD; Aguardando leitura final
IR PARA AGUARDAR; para abaixar a bandeira
BCF STATUS, RP0; Selecione banco 0
MOVF EEDATA, W; W carregado com o valor
; ler eeprom

A memria EEPROM bastante lenta, por isso importante aguardar o ciclo de leitura
concluir, embora s vezes omiti-lo. Mas ainda mais importante esta em espera no ciclo
de escrita, que o EEPROM pode demorar a ser escrito at 10 Ms.

Gravao de memria EEPROM


O processo de escrita ainda mais complexo, devemos fazer tudo o que precede e
tambm escrever um cdigo especial de proteo. Estes passos podemos v-los nas
seguintes linhas:

1 Posta (se no teria sido) o bit de WREN de registo EECON1 para permitir a
operao de gravao.

Carregado em EEADR a direo da posio para escrever.

Carregado no valor de registro EEDATA para gravar.

Execute o seguinte script que inicia a escrita de cada byte e tambm serve como
proteo contra possveis erros. Essa seqncia sempre o mesmo e sempre foi
executado.

MOVLW 55 H
MOVWF EECON2; Escrever h 55 em EECON2
AAH MOVWF
MOVWF EECON2; Escreve AAh em EECON2
BSF EECON1, WR; 1 Coloca o bit da escrita
Este ltimo comando inicia o processo de escrita.

Quando ela acaba, o bit EEIF


1, e se a interrupo da EEPROM utilizando o EEIE bit do registrador
INTCONtiver sido habilitada, essa interrupo ser gerada.

O software deve ser zero bit EEIF.

DISPOSITIVOS LGICOS MICROPROGRAMABLES

O PIC16F84

5.11

Considere um exemplo tpico de script que no usa interrupes:


POR ESCRITO; Estabelecer EEADR e EEDATA
MOVLW DIRMEN1
MOVWF EEADR; Digite o endereo na EEADR
MOVLW DATO1
MOVWF EEDATA; Grava os dados em EEDATA
BSF STATUS, RP0; Selecione o banco 1
BSF EECON1, WREN; Gravar permisso habilitado
;Incio da seqncia de escrita
MOVLW 0X55
MOVWF EECON2; Grava os dados h 55 em EECON2
0XAA MOVLW
MOVWF EECON2; Est escrito AA h em EECON2
BSF EECON1, WR; Ele comea por escrito
BCF EECON1, WREN; Permisso de gravao desabilitado
ESPERANDO BTFSC EECON1, WR; Ele esperava terminar a escrita
GOTO EM ESPERA
BCF STATUS, R0; Selecione o banco 0

A escrita de cada byte no ser iniciado se a sequncia da introduo de 55 e AA em


EECON2e ativar o bit WR no seguido exatamente.
Considerndo que acima recomendado durante o incio da seqncia de escrita
recriadas quebras, a fim de evitar erros indesejados e permitir-lhes mais tarde, se
estiverem a ser utilizados.
Alm disso, o bit de EECON1 do WREN deve ser ativado para permitir a escrita. Para
evitar erros, tambm recomendvel que o bit de WREN desativado durante todo o
programa excepto no momento da escrita. Devemos ter em conta que esse bit no obtm
a zero automaticamente atravs do hardware. Uma vez iniciado o ciclo de escrita, se ns
zero WREN, isso faz no afetam iniciado ciclo de escrita. Neste caso o bit WR vai ser
inibido e no pode ser um.
Aps o ciclo, o bit WR definido como zero por hardware e a EEIF definido como
um (se EEIE ). Se EEIEest habilitado, EEIF deve ser trazido zero por software.
Vejamos um exemplo tpico de escrita que usa interrupes:
REDAO BCF STATUS, RP0; Selecione o banco 0
; Estabelecer EEADR e EEDATA
MOVLW MEN1
MOVWF EEADR; Digite o endereo na EEADR
MOVLW DATO1
MOVWF EEDATA; Grava os dados em EEDATA
BSF STATUS, RP0; Selecione o banco 1
BSF EECON1, WREN; Gravar permisso habilitado
BCF INTCON, GIE; Desabilita interrupes.
;Incio da seqncia de escrita
MOVLW 0X55
MOVWF EECON2; Grava os dados h 55 em EECON2
0XAA MOVLW
MOVWF EECON2; Est escrito AA h em EECON2
BSF EECON1, WR; Ele comea por escrito
BSF INTCON, GIE; Habilite interrupes.

BCF EECON1, WREN; Permisso de gravao desabilitado


BCF STATUS, R0; Selecione o banco 0

Verificao da escrita
Dependendo da aplicao, a experincia de programao diz que os dados gravados na
EEPROM devem ser verificados em comparao com a gravao apenas de dados. Isso
deve ser usado em aplicaes onde um pouco do EEPROM sofre ciclos de
leitura/gravao para esfregar o limite das especificaes. O fracasso da escrita em um
pouco do EEPROM geralmente ser um pouco que escrito como um 0 lgico mas no
retorna um 1 por causa da perda de que pouco. A prxima parte do cdigo um
exemplo de verificao dos dados gravados:
BCF STATUS, RP0; Ns mesmos no banco 0
MOVF EEDATA, W; Temos de estar no banco 0
BSF STATUS, RP0; Alterar para o banco 1
BSF EECON1, RD; Ns lemos os dados salvos em
BCF STATUS, RP0; EEDATA e alterar para o banco 0
; Em seguida, verificar que os dados EEDATA, W so as mesmas
SUBWF EEDATA, W; Ns explicamos excluso ambos os valores
BTFSS STATUS, Z; Se a operao for zero, eles so os mesmos
GOTO ERR_ESCRIT; Se eles no forem iguais, podemos ir para ERR_ESCRIT
..... ; Se eles forem iguais, podemos continuar com o programa

Rotinas de EEPROM
Abaixo esto duas rotinas para gravar e ler na EEPROM:
;**************************************************************
; EEPROM_W:
; Grava um byte dos dados de EEPROM. O endereo estaro contido
; na EEADR e os dados provvel que ele anteriormente introduzidos em
EEDATA
;
EEPROM_W
BSF STATUS, RP0;Selecione Banco 1
BSF EECON1, WREN;Permisso de gravao
movlw b '01010101';Seqncia de escrita
movwf EECON2
movlw b '10101010'
movwf EECON2
BSF EECON1, WR; ordem de escrita
EECON1, WREN; BCF desconecta permisso de gravao
Aguarde
btfss EECON1, EEIF;Verificao escrita final bandeira
GoTo em espera
BCF EECON1, EEIF;Substituir a bandeira do fim da escrita
BCF STATUS, RP0;Seleo banco 0
Voltar
;
;**************************************************************
; EEPROM_R:
; L um byte do EEPROM. suposto para registrar EEADR carregado
; com o endereo para ler. Os dados lidos aparecer em EEDATA.
;
EEPROM_R
BSF STATUS, RP0;Seleo do banco 1
BSF EECON1, RD; ordem de leitura
BCF STATUS, RP0;Seleo do banco 0
Voltar
;**************************************************************

Portas e/S
O PIC16F84 possui dois digital paralelo de portas de e/S de uso geral porta a e porta b

Porta A
A porta tem 5 linhas de RA0 a RA4, que deve distinguir o A4 ou T0CKI (entrada de
Clock de Timer 0) que compartilhado com a entrada para o Timer 0 (TMR0) atravs
de um disparador Schmitt e quando configurado como sada um dreno aberto, por isso
deve ser colocada uma resistncia de polarizao.

Diagrama de bloco das RA3:RA0

Diagrama de blocos do RA4

A porta b
A porta b tem 8 linhas de e/S desde o RB0 a RB7 (linha RB0 ou INT compartilhada
com entrada de interrupo externa). Alm disso, o RB4 a RB7 linhas podem ser
programada uma interrupo por mudana de qualquer uma dessas linhas.

Diagrama de bloco das RB7:RB4

Diagrama de bloco das RB3:RB0

DISPOSITIVOS LGICOS MICROPROGRAMABLES

O PIC16F84

5.12

Quando houver uma interrupo por mudana de qualquer um do RB4 a RB7 linhas,
quais linhas devem ser programadas tambm como factores de produo (consulte
registar INTCON e interrupes) o valor de entrada de pin de modo comparado com o
valor armazenado na escala durante a ltima leitura da porta b. So detectadas
alteraes nas patilhas realizando uma operao ou para a gerao de uma interrupo
por mudana de Estado. Esta interrupo pode despertar "acordar" para o
microcontrolador da modalidade de sono sono. O usurio deve excluir a interrupo na
rotina de servio de interrupo IHR em uma das seguintes maneiras:

Excluindo o bit sinalizador 3 de INTCON (RBIE).

Ler ou escrever o PORTB e, em seguida, excluir o RBIF bit. Isso completa a


condio "mismacht" e permite excluir RBIF.

Uma condio de "mismacht" pode produzir o continuao RBIF bit "1". Lendo a porta
b pode acabar com o status de "mismacht" e permitindo o RBIF bit definido como "0".
Alm disso, todas as linhas da porta b tm resistncia interna de pull-polarizao
programvel "up" de elevado valor. Cada um dos 8 resistores pode ser ativada ou
desativado usando o bit RBPU do registro especial opo. Estas resistncias desativar
automaticamente se uma linha programada como sada, como tambm durante o
processo de Power On Reset.

Configurao das portas de entrada/sada


Qualquer linha pode funcionar como entrada ou sada. No entanto, se ele atua como
informaes de entrada que apresenta no so memorizar, por quais informaes devem
ser mantidas at que ele ser lido. Se a linha atua como sada, o bit que vem desde o
barramento de dados salva na escala, com o que as informaes fornecidas na presente
perna permanecem inalteradas at reescrever esse bit.

Os bits de cada porta so configurados atravs de bits correspondentes de dois


registradores especiais de controle:

Dados chamados registo PORTA ou PORTB: pode ser ler ou gravao de acordo
com a porta correspondente usada como entrada ou sada.

Controle de registro chamado TRISA ou TRISB: controle registra o sentido de


funcionamento de cada uma das linhas de e/S. colocar um "0" no bit
correspondente do registrador TRISA ou TRISB programada, a linha
programada como sada enquanto colocar uma "1" linha est programado como
entrada. Por exemplo, se colocarmos um 0 no bit 3 do pino de registro TRISA
RA3 ser uma maneira para fora e se podemos colocar um 1 no bit 4 do registo
TRISB ento o pino RB4 ser uma entrada.

As portas a e B (PORTA e PORTB) correspondem s posies 5 e 6 da rea de dados.


Quando ocorre um reset, todos os bits de registros TRIS passar a ter o valor 1 e todas as
linhas de e/S atuam como entrada por razes de segurana bvias evitar danos
irreparveis. Todos os pinos de i / o que no so usados devero ser realizados a + 5v,
regra das entradas CMOS, de preferncia atravs de uma resistncia para evitar que, se
por erro eles configurasen como sadas podem ser problemas se eles tm um Estado de
baixo.
Para obter mais informaes, consulte "registro TRISA e TRISB (85 e 86 h)" de
"Registros de PIC16F84" como "Instrues e portas" de "Tcnicas de
programao".
DISPOSITIVOS LGICOS MICROPROGRAMABLES

O PIC16F84

5.13

Limite atual para portas


As portas de microcontrolador PIC16F84 so os meios de comunicao com o mundo
exterior, eles podero se conectar perifricos ou circuitos necessrios como mdulos de
LCD, motores eltricos, teclados matrix, etc.; mas essas conexes no podem ser
arbitrariamente. Existem algumas regras bsicas que devem ser atendidas para que o
microcontrolador no danificar ou destruir. Para isso necessrio saber os limites de
corrente que pode lidar com o microcontrolador.
Como j mencionamos anteriormente portas a e b do microcontrolador podem ser
programadas como entradas ou sadas independentemente. Caso em que eles so
programados como sada e apresentam uma lgica de alta nvel para atuar como uma
"fonte" porque oferece atual e quando submeter um nvel lgico baixo atuar como um
"coletor" que recebem atual.

Dissipao de potncia total de 800 mW.

Sada mxima para VSS 150 mA atual.

Sada mxima de VDD 100 mA atual.

Se usarmos todas as linhas da porta "A" como uma fonte, ele no deve exceder
50 Ma entre o fluxo para fornecer esta porta.

Se usarmos todas as linhas da porta "A" como um coletor, ele no deve exceder
todos corrente para fornecer esta porta 80 Ma.

Se usarmos todas as linhas do "B" como uma porta de origem, no deve exceder
100 mA de todos os atuais para fornecer esta porta.

Se usarmos todas as linhas do Porto "B" como um coletor, no deve exceder 150
mA de todos os atuais para fornecer esta porta.

A corrente mxima que pode fornecer uma nica sada como uma origem ou
coletor de 25 mA.

De qualquer forma voc deve levar em conta no superar a dissipao de potncia


mxima, que calculada como segue:
PDIs = VDD x (IDD - IOH ) + {(VDD-VOH) IOH x} + (VOL. x IOL)
VOH geralmente VDD-0, 7 v e VOL 0.6 v.
Consumo atual (DDI) principalmente a tenso de alimentao e a funo de
freqncia. Outros fatores, tais como mudanas no i/O, tipo de oscilador, temperatura e
outros tm influncia sobre o consumo. O IDD para o PIC16F84-4 entre 1,8 a 4.5 mA
no oscilador RC e configurao XT (FOSC = 4 MHz, VDD = 5, 5V), com pinos como
entradas e Unidos para positivo.
Eles devem ser obrigados a utilizar perifricos que lidar com a maioria do fluxo
especificado, ter que implementar um adaptador como para buffers de exemplo ou
circuito de transistor.
DISPOSITIVOS LGICOS MICROPROGRAMABLES

O PIC16F84

5.14

Na figura abaixo podemos ver uma configurao tpica usando buffers do atual, que
forneceu o mesmo nvel lgico que a entrada em sua partida mas pode ser controladas
relativamente altas correntes. Neste caso uso o ULN2803, um circuito integrado,
consistindo de 8 buffers de potncia pode ser fornecido na sua sada a 1 r., muito mais
do que capaz de suportar um PIC:

Temporizador/contador TMR0
O temporizador/contador TMR0 um registrador de 8 bits, ou seja, um determinado
tipo de registro cujo contedo aumentado com uma cadncia regular e programvel
diretamente pelo hardware do PIC. 8-Bit, a conta mxima 255.
O TMR0 tem as seguintes caractersticas:

Temporizador/contador de 8 bits.

Divisor de 8 bits programvel por software.

Seleo de clock interno e externo.

Interrupo por estouro.

Seleo o flanco do clock externo.

Este registro pode ser usado para a contagem de eventos externos por meio de um pino
de entrada especial (counter mode) ou para interno pulsos de relgio de freqncia
constante (temporizador). Alm disso, em qualquer um dos dois modos, voc pode
inserir um prescaler, ou seja, um divisor de frequncia programvel que pode ser
dividido por 2, 4, 8, 16, 32, 64, 128 ou 256. Este divisor pode ser usado como
alternativa como prescaler, o tmr0 e o postscaler Watch Dog Timer, como ele agenda.
Na prtica, ao contrrio de outros registos, o TMR0 no mantm inalterado o valor
memorizado, o que aumenta-lo continuamente.
Se por exemplo ele escreveu o valor 10, depois de um perodo igual a mquina de
quatro ciclos, o contedo do registro comea a ser aumentado para 11, 12, 13 e assim
por diante com uma taxa constante e totalmente independente da execuo do restante
do programa.
DISPOSITIVOS LGICOS MICROPROGRAMABLES

O PIC16F84

5.15

Uma vez alcanado o valor 255, TMR0 registo est definido para zero automaticamente,
em seguida, comeo a contar de zero e no do valor originalmente carregado.
Freqncia de contagem diretamente proporcional a freqncia aplicada ao PIC e pode
ser modificada corretamente programao alguns bits de configurao.
O modo temporizador selecionado, colocando o bit T0CS de registo opo para 0.
Neste modo, o Timer0 aumenta com cada ciclo de instruo (com divisria com
deficincia).
Modo contador selecionado 1 colocao o bit T0CS do registo de opo. Neste modo,
o contador ir aumentar com cada flanco a montante ou a jusante pino RA4/T0CKI. O
flanco selecionado com o bit T0SE do registo de opo.
Uma interrupo ser gerada quando o registro TMR0 estouros de FF 00 h. Este estouro
deve indicar o bit T0IF do registrador INTCON.
O esquema de blocos internos do PIC que determinam o funcionamento do registrador
que tmr0 representada na figura a seguir:

FOSC/4 e T0CKI representam duas fontes potenciais do sinal de clock, o contador


TMR0.
FOSC/4 um sinal gerado internamente pelo PIC tomada do circuito de relgio e que
igual a freqncia do oscilador dividido por quatro.
T0CKI um sinal gerado por um circuito externo possvel e aplicada a T0CKI pino a
pino 3 do PIC16F84.
Blocos T0CS e PSA so dois sinais de seletores (multiplexadores) cuja produo um
dos dois sinais de entrada com base no valor dos bits T0CS e PSA registro opo.
O bloco PRESCALER ou Predivisor um divisor programvel cuja funo dividir a
freqncia de contagem, interna ou externa.
DISPOSITIVOS LGICOS MICROPROGRAMABLES

O Prescaler

O PIC16F84

5.16

O PRESCALER um divisor programvel de 8 bits para usar no caso de envio ao


contador TMR0 frequncia de contagem demasiado elevado para os nossos
propsitos. Ele configurado atravs de PS0 PS1 e PS2 registro opo bits.
A freqncia de Fosc/4 um quarto da frequncia de relgio. Usando um de 4 Mhz
Cristal tem um 4 Fosc igual a 1 MHz, com o que a cadncia da contagem obtida TMR0
causas 1 milho de incrementos por segundo (SEC. 1/1.000.000 = 1 MHz), que para
muitos aplicativos podem revelar-se demasiado elevados.
Com o uso do PRESCALER pode ser dividida a freqncia Fosc/4 em tempo
configurando bits PS0 PS1 e PS2 registro opo de acordo com a tabela a seguir:
PS2 PS1 PS0 DIVISOR FREQUNCIA de sada PREESCALER (Hz).
0

500.000

250.000

125.000

16

62.500

32

31.250

64

15.625

128

7.812,5

256

3.906,25

Exemplo:Introduzi um atraso igual a um segundo usando o registro TMR0.


Devemos definir o bit T0CS de 0 para selecionar como fonte de relgio de contagem do
PIC, o bit PSA tambm deve ser 0 para atribuir o TMR0 PRESCALER ao invs de
Watch Dog Timer inscries e configurao do PRESCALER 100 bits para obter uma
freqncia igual a 1:32 diviso. A freqncia com que podemos obter no TMR0 ser
igual a r:
FOSC = 1 Mhz / 32 = 31.250 Hz
Ns memorizamos o valor 6 em TMR0 ento registrar TMR0 atinge zero depois de 250
contas (256-6 = 250) obtendo assim uma frequncia de passo por zero r tmr0 igual:
31.250 / 250 = 125 Hz
O prximo passo ser a memorizar em um registrador de 8 bits valor 125 de tal forma
que diminuindo este registo em 1 para cada etapa por zero TMR0, obteve uma
freqncia de passos zero registo como:
125/125 = 1 Hz (1 segundo).
Em suma controle se TMR0 atingiu a zero o valor aps o reincio para 6 e diminuir o
valor contido em uma linha com o valor de 125. Quando o registro tambm atinge o
valor zero, em seguida, ela ser transmitida uma segunda.

DISPOSITIVOS LGICOS MICROPROGRAMABLES

O PIC16F84

5.17

O PIC16F84, marcao e embalagem


O PIC16F84 pode ocorrer em vrios pacotes:

Encapsulado tipo DIL PDIP ("Dual In Line" ou dupla em linha) 18-pin, o


tradicional, grandes e gerencivel.

Encapsulado 18 pin SOIC e SSOP 20 pinos para SMT SMD, uma tecnologia de
integrao maior que ocupa muito pouco espao, mas com um processo de
soldagem mais difcil.

Marcao da embalagem:

XXX-X XX XXX /XX: informaes especficas do produto:


o

XXX...: dispositivo (PIC16F84, PIC16LF84A e PIC16F84AT,


PIC16LF84AT):

F: intervalo VDD padro

LF: Estendido para 200 gama de VDD KHz

T: fornecido em carretel da fita (apenas SOIC e SSOP)

-XX: gama de frequncias

-04 = 4 MHz

-20 = 20 MHz

X: faixa de temperatura de:

Nada = 0ouc a + 70ouc

Eu = - 40ouc a + 85ou(c)

/ XX: tipo de encapsulamento:

P = PDIP

SO = SOIC

SS = SSOP

XXX: padro:

Nada = OTP e PIC sem janela

Cdigo = cdigo especfico QTP, SQTP e ROM

YY: ano

WW: semana

NNN: Cdigo alfanumrico para o rastreamento

Exemplos:

PIC16F84-04/P = Temp. comercial, PDIP, de 4 MHz, VDD normal.

PIC16LF84A-04I/SO = Temp. industriais, SOIC, 200 kHz, estendido VDD.

PIC16F84-20I/P 301 = Temp. industriais, PDIP, 20 MHz, VDD normal, QTP n


301.