Conversão 16F84 para 16F628

10
Exsto Tecnologia Conversão PIC16F84 para PIC16F628 Tutorial para conversão de programas feitos para 16F84 em programas para 16F628 Versão 1.0 04/2003

description

pic,programacao,lcd,microcontrolador

Transcript of Conversão 16F84 para 16F628

Page 1: Conversão 16F84 para 16F628

Exsto Tecnologia

Conversão PIC16F84 para PIC16F628

Tutorial para conversão de programas feitos para 16F84 em programas para 16F628

Versão 1.0

04/2003

Page 2: Conversão 16F84 para 16F628

Conversão 16F84 para 16F628 2 de 2

Exsto Tecnologia V 1.0

Versão Principais Autores Descrição da Versão Data de Término

1.0 - José Domingos Adriano Versão inicial 14/03/2003

Page 3: Conversão 16F84 para 16F628

Conversão 16F84 para 16F628 3 de 3

Exsto Tecnologia V 1.0

Índice

Página

Introdução ................................................................................................................... 5

1 Características .......................................................................................................... 6 1.1 Temporizadores e comparadores ..................................................................... 6 1.2 Comparadores analógicos................................................................................ 6 1.3 CCP, USART e tensão de referência. .............................................................. 6 1.4 Terminais. ....................................................................................................... 6 1.5 Memória.......................................................................................................... 7 1.6 Oscilador......................................................................................................... 9

2 Guia de conversão 16F84 para 16F628 .................................................................. 10

Page 4: Conversão 16F84 para 16F628

Conversão 16F84 para 16F628 4 de 4

Exsto Tecnologia V 1.0

Lista de Figuras e Tabelas

Página Tabela 1.1 – Comparação entre o 16F84 e o 16F628 ..................................................... 6 Figura 1.1 – Mapa de memória do PIC 16F84............................................................... 7 Figura 1.2 – Mapa de memória do PIC 16F628 ............................................................. 8

Page 5: Conversão 16F84 para 16F628

Conversão 16F84 para 16F628 5 de 5

Exsto Tecnologia V 1.0

Introdução No universo dos microcontroladores PIC é muito difundido o uso do PIC16F84.

Existe grande quantidade de programas, livros e cursos baseados nesse dispositivo.

Porém, se comparado como ele, os PIC16F628 e PIC16F627 apresentam várias

vantagens que tornam preferível trabalhar com esses últimos.

O 16F84 é compatível “pino a pino” com, o 16F628, de forma que pode ser

realizada sua substituição sem alterações de hardware, bastando apenas alterar o

firmware.

O presente documento visa ser um tutorial para a alteração de softwares

inicialmente desenvolvidos para 16F84 para serem gravados em 16F628. São

apresentadas de forma resumidas as características de cada microcontrolador,

ressaltando as principais diferenças entre eles. Em seguida tem-se um guia para a

alteração do firmware.

Page 6: Conversão 16F84 para 16F628

Conversão 16F84 para 16F628 6 de 6

Exsto Tecnologia V 1.0

1 Características A tabela abaixo apresenta uma comparação entre as principais características desse dos microcontroladores: Característica PIC 16F84 PIC16F628 Memória Memória de Programa FLASH (palavras de 14 bits) 1024 2048 Memória de Dados RAM (bytes) 68 224 Memória de Dados EEPROM (bytes) 64 128 Periféricos Temporizadores/Contadores 1 3 Comparadores analógicos - 2 Módulo CCP (Capture/Compare/PWM) - 1 Comunicação serial - USART Tensão de referência interna - 1 Características Gerais Número de Terminais 18 18 Número de Terminais de I/O 13 16 Detecção de Brown-out Não Sim Interrupções 4 10 Modos de oscilador LP, XT, HS Sim Sim RC externo Sim Sim RC interno Não Sim

Tabela 1.1 – Comparação entre o 16F84 e o 16F628

1.1 Temporizadores e contadores O 16F84 possui apenas um temporizador, o Timer 0. Já o 16F628 possui 3,

Timer 0, Timer 1, Timer 2. A operação do Timer 0, porém é a mesma nos dois componentes.

1.2 Comparadores analógicos O PIC 16F628 possui dois comparadores analógicos que não existem no 16F84. As entradas desses comparadores estão multiplexadas com RA0, RA1, RA2 e RA3, que são os terminais 17, 18, 1 e 2, respectivamente. Como as entradas analógicas têm prioridade sobre entradas e saída digitais, a configuração default desses terminais pe côo entrada analógica. Faz-se necessário então desabilitar esse periférico. Isso é feito atribuindo-se o valor 7 ao registro CMCON (banco 0), que é o registro de controle do módulo comparador analógico.

1.3 CCP, USART e tensão de referência Periféricos de CCP, USART e tensão de referência que existem no 16F628 estão, por padrão, no reset, desabilitados. Sua existência pode ser desconsiderada em rotinas desenvolvidas inicialmente para 16F84.

1.4 Terminais. O 16F628 pode trabalhar com até 3 terminais de I/O a mais que o 16F84. Esses terminais. Esses terminais são pertencentes ao portal A. São eles os terminais 5, 15, 16,

Page 7: Conversão 16F84 para 16F628

Conversão 16F84 para 16F628 7 de 7

Exsto Tecnologia V 1.0

respectivamente RA5, RA6 e RA7. RA7 e RA6 são terminais multiplexados com o oscilador do PIC. Se estiver sendo utilizado o modo de oscilador XT, LP, HS, RC externos, esses terminais fazem parte do circuito oscilador e não há ligação do registro PORTA com o pino do microcontrolador. Se estiver sendo utilizado o modo RC interno (opção que não existe para o 16F84), não existe circuito externo para o oscilador, e esses terminais podem ser utilizados como I/O. RA5 pode ser utilizado somente como entrada, pois não existe driver de saída. Para sua utilização como entrada deve-se configurar o MCLR ligado internamente para Vdd, o que é feito através dos fusíveis (fuses). Para utilização de rotinas desenvolvidas para 16F84 não há necessidade de nenhuma alteração no código com relação aos terminais.

1.5 Memória No que se refere à memória, o 16F628 apresenta grandes diferenças em relação ao 16F84. As figuras abaixo apresentam a organização da memória do 16F84 e do 16F628.

Endereço Banco 0 Banco 1 Endereço 00h INDF INDF 80h 01h TMR0 OPTION_REG 81h 02h PCL PCL 82h 03h STATUS STATUS 83h 04h FSR FSR 84h 05h PORTA TRISA 85h 06h PORTB TRISB 86h 07h Não implementado 87h 08h EEDATA EECON1 88h 09h EEADR EECON2 89h 0Ah PCLATH PCLATH 8Ah 0Bh INTCON INTCON 8Bh 0Ch 8Ch

GPRS 68 bytes

(acessa banco 0)

4Fh - CFh 50h D0h

Não implementado

7Fh FFh Figura 1.1 – Mapa de memória do PIC 16F84

Page 8: Conversão 16F84 para 16F628

Conversão 16F84 para 16F628 8 de 8

Exsto Tecnologia V 1.0

Banco 0 Banco 1 Banco 2 Banco 3

INDF 00h INDF 80h INDF 100h INDF 180h TMR0 01h OPTION_REG 81h TMR0 101h OPTION_REG 181h PCL 02h PCL 82h PCL 102h PCL 182h

STATUS 03h STATUS 83h STATUS 103h STATUS 183h FSR 04h FSR 84h FSR 104h FSR 184h

PORTA 05h TRISA 85h 105h 185h PORTB 06h TRISB 86h PORTB 106h TRISB 186h

07h 87h 107h 187h 08h 88h 108h 188h 09h 89h 109h 189h

PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATCH 18Ah INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh

PIR1 0Ch PIE1 8Ch 10Ch 18Ch 0Dh 8Dh 10Dh 18Dh

TMR1L 0Eh PCON 8Eh 10Eh 18Eh TMR1H 0Fh 8Fh 10Fh 18Fh T1CON 10h 90h 110h 190h TMR2 11h 91h 111h 191h

T2CON 12h PR2 92h 112h 192h 13h 93h 113h 193h 14h 94h 114h 194h

CCP1L 15h 95h 115h 195h CCP1H 16h 96h 116h 196h

CCP1CON 17h 97h 117h 197h RCSTA 18h TXSTA 98h 118h 198h TXREG 19h SPBRG 99h 119h 199h RCREG 1Ah EEDATA 9Ah 11Ah 19Ah

1Bh EEADR 9Bh 11Bh 19Bh 1Ch EECON1 9Ch 11Ch 19Ch 1Dh EECON2 9Dh 11Dh 19Dh 1Eh 9Eh 11Eh 19Eh

CMCON 1Fh VRCON 9Fh 11Fh 19Fh 20h A0h 120h 1A0h GPR GPR 80 bytes 48 bytes

GPR 14Fh 96 bytes 150h

EFh 16Fh 1EFh F0h 170h 1F0h Acessa de

70h à 7Fh Acessa de

70h à 7Fh Acessa de

70h à 7Fh

7Fh FFh 17Fh 1FFh Figura 1.2 – Mapa de memória do PIC 16F628

Como pode ser observado, existe uma grande diferença entre os dois mapas de memórias. O 16F628 possui um total de 224 bytes e o 16F84 apenas 68. Em primeiro lugar, o 16F628 possui quatro bancos de memória, enquanto o 16F84 possui dois. Contudo não existem registros nos bancos 2 e 3 três que não possam ser acessados nos bancos 0 e 1. A única região de interesse nesses bancos é a região de RAM de uso geral entre os endereços 120h e 14Fh, no banco dois. Quanto aos registros de funções especiais (SFR – Special Function Registers), o 16F628 os possui nos mesmos endereços que o 16F84, excetuando-se os registros relacionados com a memória EEPROM. No 16F628 todos esse registros se encontram no banco 1, e seus endereços podem ser observados na figura 1.2. Para programas que utilizam a EEPROM do 16F84 serem adaptados para o 16F628 as rotinas de aceso a EEPROM devem ser alteradas.

Page 9: Conversão 16F84 para 16F628

Conversão 16F84 para 16F628 9 de 9

Exsto Tecnologia V 1.0

O 16F628 possui mais registros de uso geral (GPR – General Purpose Registers) que o 16F84. Então programas desenvolvidos para 16F84 não terão problemas com falta de memória. A mudança importante que deve ser observada é que no 16F84 os GPR começam no endereço 0Ch, enquanto no 16F628 começam no 20h. Os endereços dos registros devem ser alterados para ser adequar a faixa de endereços do 16F6268. Outra observação importante é que acessando do endereço 8Ch ao CFh no banco 1 do 16F84 são acessados os registros de 0Ch a 4Fh do banco 0. No 16F628 os registros do banco 1 que acessam endereços correspondentes no banco 0 são apenas os de endereço entre F0h e FFh.

1.6 Oscilador Para a substituição do 16F84 pelo 16F628 não se faz necessária nenhuma

alteração do hardware do circuito. Porém, para reduzir componentes e conseqüentemente o custo do sistema, pode-se optar por substituir um circuito oscilador externo pelo oscilador interno do 16F628. O 16F628 apresenta a possibilidade escolher entre duas freqüências para o oscilador interno, 4MHz e 37KHz. Nesse caso deve-se considerar que o oscilador interno de 4MHz tem uma precisão inferior à de um oscilador a cristal. Esse oscilador pode variar entre 3,65MHz e 4,28MHz. Para utilizar o oscilador interno deve-se habilitar essa opção nos “fusíveis”. A seleção da freqüência é feita por software pelo bit OSCF do registro PCON. Se OSCF for “1” a freqüência é de 4MHz; se for “0”, a freqüência e 37KHz. A freqüência do oscilador pode ser alterada a qualquer momento no programa.

Page 10: Conversão 16F84 para 16F628

Conversão 16F84 para 16F628 10 de 10

Exsto Tecnologia V 1.0

2 Guia de conversão 16F84 para 16F628 Segue abaixo um tutorial de consulta rápida para a alteração de programas.

Está sendo utilizadaa diretiva CBLOCK para declaração

de variáveis?

SIM

Alterar o arquivo de definiçõessubsituir

#include<P16F84.INC>por

#include<P16F628.INC>

Desabilitar os comparadores analógicos na inicializaçãoadicionar

MOVLW 07hMOVWF CMCON

em um trecho que estiver acessando o banco 0.

subsituirCBLOCK 0Ch

porCBLOCK 20h

Realocar as variáveis declaradas nosendereços entre 0Ch e 20h paraendereços entre 20h e 0Fh

Estão sendo utilizadosendereços de 8Ch a CFh no banco 1 para

acesso ao banco 0?

Realocar as variáveis para endereços entre F0h eFFh.Realocar os respectivos endereços do banco 0para a faixa entre 70h e 7Fh.

Estão sendo utilizadas rotinasde aceso a EEPROM?

Alterar as rotinas considerando que os registrosEEDATA e EEARD estão no banco 1.

NÃO

SIM

NÃO

NÃO

SIM