Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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.
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
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.
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
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
LE_E2PROM
BANK1 ;BANCO 1
BSF EECON1,RD ;PREPARA LEITURA
NOP
MOVF EEDATA,W ;COLOCA DADO EM W
BANK0 ;BANCO 0
RETURN ;RETORNA
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* 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