Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
4 fontes de interrupes:
o
Proteo de cdigo.
Corrente mxima que pode fornecer uma nica sada como origem ou
coletor, 25 mA.
16F84A:
Consumo tpico:
o
16LF84A:
16F84A:
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
O PIC16F84
5.3
Descrio do pino
Nome
NO. Tipo
Descrio
OSC1/CLKIN
16
(I)
OSC2/CLKOU
T
15
MCLR
EU /
P
RA0
17
I/O
QUE
18
I/O
RA2
I/O
RA3
I/O
RA4/T0CKI
I/O
RB0/INT
I/O
RB1
I/O
RB2
I/O
RB3
I/O
RB4
10
I/O
RB5
11
I/O
RB6
12
I/O
RB7
13
I/O
VSS
Terra de referncia
VDD
14
Alimentar
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.
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
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.
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:
O PIC16F84
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:
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 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 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
Ns carregamos o valor 05 no
registo FSR.
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
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:
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.
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.
1 Posta (se no teria sido) o bit de WREN de registo EECON1 para permitir a
operao de gravao.
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.
O PIC16F84
5.11
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.
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.
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:
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.
Dados chamados registo PORTA ou PORTB: pode ser ler ou gravao de acordo
com a porta correspondente usada como entrada ou sada.
O PIC16F84
5.13
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.
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.
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:
O Prescaler
O PIC16F84
5.16
500.000
250.000
125.000
16
62.500
32
31.250
64
15.625
128
7.812,5
256
3.906,25
O PIC16F84
5.17
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:
-04 = 4 MHz
-20 = 20 MHz
Eu = - 40ouc a + 85ou(c)
P = PDIP
SO = SOIC
SS = SSOP
XXX: padro:
YY: ano
WW: semana
Exemplos: