Você está na página 1de 5

Utilizando os PICs 16F62x

Introdução

Atualmente tanto o livro “Desbravando o PIC” quanto o curso e a placa “Módulo I” da Mosaico
Engenharia se baseiam no PIC16F84 para a realização de todas as experiências propostas.
Entretanto, nos últimos tempos a Microchip desenvolveu novos modelos de PIC que possuem
características semelhantes ao F84 mas com uma tecnologia superior. Isto possibilita que estes
novos modelos, denominados 16F627 e 16F628, possuam mais recursos e sejam mais baratos.

A Mosaico, no seu constante trabalho de divulgação do conhecimento, e na sua plena


preocupação com os melhores benefícios para os nossos cliente, resolveu criar este documento
para que os usuários de nossos sistemas possam ter a opção de utilizarem também os novos
modelos apresentados.

Não é nossa intenção entretanto, explicar ou esclarecer os novos recursos disponíveis nos
modelos 16F62x, mas somente informar sobre as alterações necessárias para utilizá-los nos
exemplos desenvolvidos para o 16F84.

Características dos PICs 16F62x (página 13)

Para os usuários que possuem o livro “Desbravando o PIC”, as principais diferenças entre os
modelos podem ser observadas em relação as características apresentadas no Capítulo 5 – O
PIC16F84.

Por isso, vamos seguir a mesma formatação do livro para apresentarmos as características dos
modelos 16F62x:
Microcontroladores de 18 pinos, o que facilita a montagem de hardwares experimentais;
16 portas configuráveis como entrada ou saída;
Possui oscilador interno de 4MHz (pode ser usado externo, perdendo-se 2 I/O´s);
Possui Master Clear interno (pode ser usado externo, perdendo-se 1 I/O);
5 interrupções disponíveis (TMR0, Externa, Mudança de Estado, EEPROM e comparador);
Dois comparadores internos com tensão de referência externa;
Três timers internos: TMR0 (8 bits), TMR1 (16 bits) e TMR2 (8 bits);
Capture, Compare e PWM (10 bits);
USART;
Memória de programação FLASH, que permite a gravação do programa diversas vezes no mesmo
chip, sem a necessidade de apagá-lo através de luz ultra-violeta, como acontece nos
microcontroladores de janela;
Memória EEPROM (não volátil) interna;
Via de pr ogramação com 14 bits e 35 instruções.
A pinagem

RA2/AN2/Vref 1 18 RA1/AN1
RA3/AN3/CMP1 2 17 RA0/AN0
RA4/T0CKI/CMP2 3 16 RA7/OSC1/C LKIN
RA5/MCLR/THV 4 15 RA6/OSC2/C LKOUT
Vss 5 14 Vdd
RB0/INT 6 13 RB7/T1OSI
RB1/RX/DT 7 12 RB6/T1OSO/T 1CKI
RB2/TX/CK 8 11 RB5
RB3/CCP1 9 10 RB4/PGM

As nomenclaturas utilizadas (página 14)

O 16F62x possui um total de 16 I/Os separados em dois grupos denominados PORTAS. Desta
forma temos a Porta A e a Porta B. Para facilitarmos o entendimento e a comparação com os data
sheets originais, usaremos os termos provenientes do inglês: PORTA (port A) e PORTB (port B).
O PORTA possui 8 pinos que podem ser configurados como entrada ou saída, e seus nomes são
definidos como RA0, RA1, RA2, RA3, RA4, RA5, RA6 e RA7. O pino referente ao RA4 pode ser
configurado também para incrementar o contador TMR0. Nos exercícios do livro e do curso são
utilizadas somente as portas de RA0 a RA4, pois os pinos 16 e 17 são utilizados para o oscilador
externo e o pino 4 é utilizado como Master Clear externo. As demais funções destes pinos, como os
comparadores e oscilador interno não são vistas no livro ou no curso.
Já o PORTB possui 8 pinos configuráveis como entrada ou saída, sendo seu nomes RB0, RB1,
RB2, RB3, RB4, RB5, RB6 e RB7. O RB0 pode ser utilizado também para gerar a interrupção externa,
assim como os pinos de RB4 a RB7 podem gerar a interrupção por mudança de estado. Estes pinos
possuem também outras funções, como a USART, SCI, Capture, Compare, PWM, mas estes recursos
não são estudados nem no livro nem no Módulo I.
Maiores detalhes sobre os recursos disponíveis podem ser conseguidos no Data Sheet do
componente.

Características elétricas e outras (página 123)

Temperatura de trabalho ................................................................................................................................ -40ºC até +125ºC


Temperatura de armazenamento ....................................................................................................................... -65ºC até 150ºC
Tensão de trabalho................................................................................................................................................. 3.0V a 5.5V
Voltagem máxima no pino Vdd (em rel ação ao Vss) .......................................................................................... -0.3V até 6.5V
Voltagem máxima no pino MCRL (em relação ao Vss) ....................................................................................... -0.3V até 14V
Voltagem máxima nos demais pinos (em relação ao Vss) ...................................................................... -0.3V até (Vdd + 0.3V)
Dissipação máxima de energia.....................................................................................................................................800 mW
Corrente máxima de saída no pino Vss......................................................................................................................... 300 mA
Corrente máxima de entrada no pino Vdd..................................................................................................................... 250 mA
Corrente máxima de entrada de um pino (quando em Vss).............................................................................................. 25 mA
Corrente máxima de saída de um pino (quando em Vdd) ................................................................................................ 25 mA
Corrente máxima de entrada do PORTA ...................................................................................................................... 200 mA
Memória de dados (página16)

A memória de dados da família F62x é bem diferente da do F84. As principais diferenças a


serem consideradas para a migração (F84 -> F62x) são:
· Posição inicial da memória de dados de uso geral: de 0x0C para 0x20;
· Posição dos endereços dos SFR´s relacionados com a EEPROM:
· EEDATA: de 0x08 para 0x9A;
· EEADR: de 0x09 para 0x9B;
· EECON1: de 0x88 para 0x9C;
· EECON2: de 0x89 para 0x9D;
· Vale observar também que a RAM para estes modelos aumentou de 68 para 225
bytes.
· A EEPROM aumentou de 64 para 128 bytes.

000h INDF 080h INDF 100h INDF 180h INDF


001h TMR0 081h OPTION 101h OPTION 181h OPTION
002h PCL 082h PCL 102h PCL 182h PCL
003h STATUS 083h STATUS 103h STATUS 183h STATUS
004h FSR 084h FSR 104h FSR 184h FSR
005h PORTA 085h TRISA 105h 185h
006h PORTB 086h TRISB 106h PORTB 186h TRISB
007h 087h 107h 187h
008h 088h 108h 188h
009h 089h 109h 189h
00Ah PCLATH 08Ah PCLATH 10Ah PCLATH 18Ah PCLATH
00Bh INTCON 08Bh INTCON 10Bh INTCON 18Bh INTCON
00Ch PIR1 08Ch PIE1 10Ch 18Ch
00Dh 08Dh
00Eh TMR1L 08Eh PCON
00Fh TMR1H 08Fh
010h T1CON 090h
011h TMR2 091h
02Fh
012h T2CON 092h PR2
013h 093h
014h 094h
015h CCPR1L 095h Não disponí vel
016h CCPR1H 096h
017h CCP1CON 097h
018h RCSTA 098h TXSTA
019h TXREG 099h SPBRG
01Ah RXREG 09Ah EEDATA
01Bh 09Bh EEADR
01Ch 09Ch EECON1
01Dh
07Fh 09Dh EECON2
01Eh 09Eh
01Fh CMCON 09Fh VRCON 11Fh
020h 0A0h 120h
Uso geral
48 bytes
Uso geral 14Fh
80 bytes
150h
Uso geral
96 bytes 0EFh 16Fh 1EFh
0F0h Espelho d a memória 170h Espelho d a memória 1F0h Espelho d a memória
do banco 0 do banco 0 do banco 0
07Fh 0FFh 17Fh 1FFh
Banco 0 Banco 1 Banco 2 Banco 3
Memória de programa (página15)

O importante a observar é que o modelo 16F627 possui o mesmo tamanho de memória de


programa que o 16F84, isto é, 1K. Já o 16F628 possui o dobro de memória: 2K. Isto possibilita
que qualquer um dois possa ser utilizado no lugar do 16F84.

000h Vetor de reset

004h Vetor de int errupção


Tipo: 14 bits
Tamanho: 1024 (627)
2048 (628)
Vetor de reset: 000h
Uso geral Vetor de inter.: 004h

1FFh (627)
7FFh (628)

Convertendo os programas

Para que os programas desenvolvidos para 16F84 possam ser utilizados na família 16F62x é
importante observar os seguintes pontos para a conversão de qualquer programa:

1. Sempre altere o modelo de PIC no projeto em uso. Para isso, utilize a opção Edit Project,
do menu Project.
2. Reposicione a localização do bloco de variáveis. Para isso, altere a linha CBLOCK 0X0C
para CBLOCK 0X20. Esta linha está no início de todo programa e exemplo do livro, no
bloco Variáveis.
3. substituir o arquivo de include no bloco Arquivos de Definições, de <16F84.INC> para
<16F627.INC> ou <16F628.INC>.
4. Na rotina de inicialização do programa (INICIO), devem ser inseridas as seguintes linhas ao
final (após BANK0):
MOVLW B´00000111´
MOVWF CMCON ; desliga os comparadores internos
5. Tomar cuidado com as rotinas de escrita e leitura da EEPROM, pois os registradores
EEDATA e EEADR encontram-se no Banco 1 e não mais no banco 0.
6. Nunca gravar o microcontrolador com a opção de oscilador interno.
Rotinas para EEPROM corrigidas

Leitura (página 118)

ESCR_E2PROM
BANK1 ;BANCO 1
MOVWF EEDATA ;ACERTA DADO PASSADO EM W
BCF INTCON,GIE ;DESABILITA INTERRUPÇÕES
BSF EECON1,WREN ;HABILITA ESCRITA
MOVLW 0X55 ;INICIALIZAÇÃO DA ESCRITA
MOVWF EECON2 ;(PROCEDIMENTO OBRIGATÓRIO)
MOVLW 0XAA
MOVWF EECON2
BSF EECON1,WR ;INICIA ESCRITA
BCF EECON1,WREN
BTFSC EECON1,WR ;NÃO, ACABOU ESCRITA?
GOTO $-3 ;NÃO, CONTINUA AGUARDANDO
BANK0 ;SIM, BANCO 0
BSF INTCON,GIE ;HABILITA INTERRUPÇÕES NOVAMENTE
RETURN ;RETORNA

Escrita (página 119)

LE_E2PROM
BANK1 ;BANCO 1
BSF EECON1,RD ;PREPARA LEITURA
NOP
MOVF EEDATA,W ;COLOCA DADO EM W
BANK0 ;BANCO 0
RETURN ;RETORNA

Exemplo (página 123)

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* ROTINA DE LEITURA DO VALOR DO CONTADOR *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; ESTA ROTINA LÊ O VALOR DA MEMÓRIA E COLOCA O RESULTADO NA
; VARIÁVEL "CONTADOR".
LE_CONTA
MOVLW POS_MEM
BANK1 ;MUDA PARA BANCO 1
MOVWF EEADR ;ACERTA O ENDEREÇO PARA LEITURA
BANK0 ;VOLTA PARA BANCO 0
CALL LE_E2PROM ;EFETUA A LEITURA DA EEPROM
MOVWF CONTADOR ;ATUALIZA O CONTADOR
RETURN ;RETORNA

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* ROTINA DE ESCRITA DO VALOR DO CONTADOR *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; ESTA ROTINA ESCREVE O VALOR ATUAL DE CONTADOR NA MEMÓRIA EEPROM
ESCR_CONTA
MOVLW POS_MEM
BANK1 ;MUDA PARA BANCO 1
MOVWF EEADR ;ACERTA O ENDEREÇO PARA LEITURA
BANK0 ;VOLTA PARA BANCO 0
MOVF CONTADOR,W ;COLOCA CONTADOR EM W
CALL ESCR_E2PROM ;EFETUA A ESCRITA EEPROM
RETURN ;RETORNA

Você também pode gostar