Você está na página 1de 113

PIC16F627A/628A/648A

Data Sheet
Memória Flash, 8-Bit CMOS
Microcontroladores com Tecnologia nano Watt

(Tradução: Herbert Lopes)

Página 001 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


Observe os seguintes detalhes do recurso de proteção de código em dispositivos da Microchip:

• Os produtos Microchip atendem às especificações contidas em sua Ficha Técnica Microchip específica.

• A Microchip acredita que sua família de produtos é uma das mais seguras do gênero no mercado atualmente, quando utilizada no
mercado da maneira pretendida e em condições normais.

• Existem métodos desonestos e possivelmente ilegais usados para violar o recurso de proteção de código. Todos esses métodos, para o
nosso conhecimento, exigir o uso dos produtos Microchip de uma maneira fora das especificações operacionais contidas nos Dados da
Microchip Folhas. Muito provavelmente, a pessoa que está fazendo isso está envolvida em roubo de propriedade intelectual.

• A Microchip está disposta a trabalhar com o cliente que está preocupado com a integridade de seu código.

• Nem a Microchip nem qualquer outro fabricante de semicondutores pode garantir a segurança do seu código.

• A proteção de código não significa que estamos garantindo o produto como "inquebrável".

• A proteção do código está em constante evolução. Nós da Microchip estamos comprometidos em melhorar continuamente os
recursos de proteção de código de nossos Produtos. Tentativas de quebrar o recurso de proteção de código da Microchip podem ser
uma violação da Lei de Direitos Autorais do Milênio Digital. Se tais atos permitirem acesso não autorizado ao seu software ou outro
trabalho protegido por direitos autorais, você pode ter o direito de processar para obter ressarcimento sob essa Lei.

As Informações contidas nesta publicação sobre o Direitos Autorais


dispositivo aplicativos e similares são fornecidas apenas
para sua conveniência e podem ser substituídos por O nome e o logotipo da Microchip, o logotipo da Microchip, dsPIC,
atualizações. É sua responsabilidade assegurar-se de KEELOQ, logotipo KEELOQ, MPLAB, PIC, PICmicro, PICSTART,
que seu aplicativo atenda às suas especificações. A rfPIC e UNI/O são marcas registradas da Microchip Tecnologia
MICROCHIP NÃO FAZ REPRESENTAÇÕES OU incorporada nos EUA e em outros países. FilterLab, Hampshire,
GARANTIAS DE QUALQUER TIPO, SEJAM HI-TECH C, Termistor Ativo Linear, MXDEV, MXLAB, SEEVAL e o
EXPRESSAS OU IMPLÍCITAS, ESCRITAS OU ORAIS, controle incorporado Solutions Company são marcas registradas
ESTATUTÁRIAS OU NÃO, RELACIONADAS COM A da Microchip decorrentes dessas informações e de sua utilização.
INFORMAÇÃO, INCLUINDO, MAS NÃO LIMITADAS À Uso de Microchip dsPICDEM, dsPICDEM.net, dsPICworks,
SUA CONDIÇÃO, QUALIDADE, DESEMPENHO, dsSPEAK, ECAN, ECONOMONITOR, FanSense, HI-TIDE, Serial
COMERCIALIZAÇÃO OU ADEQUAÇÃO À FINALIDADE. no circuito Programação, ICSP, Mindi, MiWi, MPASM, MPLAB
A Microchip se isenta de qualquer responsabilidade a Certified logotipo, MPLIB, MPLINK, mTouch, Octopus, Código
respeito destas informações e seu uso. A utilização de Onisciente Geração, PICC, PICC-18, PICDEM, PICDEM.net,
dispositivos em aplicações de suporte de vida e/ou PICkit, PICtail, logotipo PIC32, REAL ICE, rfLAB, Select Mode,
segurança é inteiramente sob o risco do comprador, e o Total Endurance, TSHARC, UniWinDriver, WiperLock e ZENA são
comprador concorda em defender, indenizar as partes marcas comerciais da Microchip Technology Incorporated no EUA
lesadas, e ainda isentar a Microchip de todo e qualquer e outros países. SQTP é uma marca de serviço da Microchip
dano, reclamações, ações judiciais, ou despesas
resultantes de tal uso. Não há licenças transmitidas, Tecnologia Incorporada nos EUA. Todas as outras marcas
implícitas ou não, sob quaisquer direitos de propriedade comerciais aqui mencionadas são propriedade de suas respectivas
intelectual da Microchip empresas.

© 2009, Microchip Technology Incorporated, Impresso no E.U.A.,


Todos os direitos reservados

Impresso em papel reciclado.


SISTEMA DE GESTÃO DE QUALIDADE
A Microchip recebeu certificação ISO/TS-16949:2002 por suas
CERTIFICADO PELO DNV sedes ao redor do mundo, seu projeto e instalações de fabricação
de chips em Chandler e Tempe, Arizona; Gresham, Oregon e
= ISSO/TS 16949:2002 =. centros de design na Califórnia e Índia. Processos e
procedimentos do sistema da qualidade da Empresa são para
seus MCUs PIC® e DSCs dsPIC®, salto de código KEELOQ®
dispositivos, EEPROMs seriais, microperiféricos, memória não
volátil e produtos analógicos. Além disso, o sistema de qualidade
da Microchip para o design e a fabricação de sistemas de
desenvolvimento é certificada ISO 9001:2000

Página 002 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


Microcontroladores CMOS de 18 pinos, baseados em memória Flash
com Tecnologia nanoWatt
CPU RISC de Alta-Performance: Características de Baixo Consumo:
• Velocidade de Operação de DC até 20MHz • Corrente de Espera (Standby): 100nA @ 2.0Volts
• Suporte a Interrupções • Corrente de Operação:
• Pilha de hardware profunda de 8 níveis - 12uA @32KHz 2.0 Volts (típica)
• Modos de endereçamento direto, indireto e relativo - 120uA @ 1MHz 2.0 Volts (típica)
• 35 instruções de uma única palavra: • Corrente do Timer WatchDog: - 1uA @ 2.0 Volts
- Todas as instruções de ciclo único, exceto • Corrente do Oscilador Timer1: - 1.2uA @ 2.0 Volts
ramificações (branches). • Oscilador Interno de Dupla Velocidade:
- Selecionável em processamento para 4MHz ou 48KHz
Recursos Especiais do Microcontrolador: - 4us para despertar do Sleep para Wake-Up 3.0 Volts.
• Opções de osciladores internos e externos:
- Osciladores nativos internos de 4 MHz calibrado para ±1%. Características Periféricas:
- Oscilador interno de 48 kHz de baixa potência. . 16 pinos de E/S com controle de direção individual.
- Suporte a osciladores externos para cristais e osciladores. . Corrente de Saída alta, suficiente para acionar um led.
• Modo de suspensão de economia de energia. . Módulo de Comparação Analógica com:
• Pull-ups fracos programáveis na PORTB. (1) - 2 comparadores analógicos.
• Master Clear e Input-pin multiplexados. - Módulo de voltagem de referência programável.
• Temporizador watchdog com oscilador independente. (2) - Referência interna ou externa selecionável.
• Programação em baixa tensão. - Saída dos comparadores acessível externamente.
• Programação™ serial no circuito (através de 2 pinos). . Timer0: temporizador/contador de 8 bits programável.
• Proteção contra leitura do código programável. . Timer1(): temporizador/contador com recursos para cristal
• Brown-out Reset (3). ou pulso de clock externo.
• Reinicialização de Power-on. . Timer2(): temporizador/contador de 8 bits com registrador
• Temporizador de Power-up e de Partida do Oscilador. de período, agendador, pré-agendador e pós-agendador.
• Ampla faixa de tensão de operação (2.0-5.5V). . Módulo PWM, com Captura e Comparação:
• Faixa de temperatura industrial e ampliada. - Capturador e Comparador de 16 bits.
• Células Flash/EEPROM de alta durabilidade: - PWM 10 bits.
- 100.000 gravações de vida útil na memória Flash. . Porta Serial (USART) Endereçável, com receptor e
- 1.000.000 de gravações na memória EEPROM transmissor nos modos síncrono e assíncrono.
-40 anos de preservação dos dados.
(1) N.T. Pull-Ups são resistores (tipicamente de 10K) que colocamos nas entradas de circuitos para que seja assumido nível Up ou 1 quando
nada estiver chegando na entrada. Os PICs podem ser programados para agir como se tivessem estes resistores nas entradas. São chamados de
“fracos” por que causam baixa interferência, qualquer sinal de voltagem mais baixa serve para eles assumirem entrada 0.
(2) N.T. WatchDog Timer (Temporizador Cão de Guarda) é um dispositivo que reseta o sistema se o programa principal, por alguma condição
de erro, deixar de enviar resets para o watchdog. É utilizado em softwares de analisadores, onde tem a finalidade de fiscalizar o processamento,
aplicar correções e mesmo resetar o hardware do analisador se perceber que ele está travado em alguma operação.
(3) N.T. Brown-Out Reset é uma função importante para aumentar a confiabilidade de um microcontrolador após a inicialização. Consiste em
um circuito de proteção que detecta quando a tensão de alimentação fica abaixo de um nível predefinido e coloca o dispositivo em um estado de
reinicialização para garantir a inicialização adequada quando a energia retornar ao normal.

Memória Progr. Memória Dados Timers


DISPOSITIVO Flash (words) SRAM EEPROM I/O CCP USART Comparadores 8/16 bit
(PWM)
PIC16F627A 1024 224 128 16 1 Y 2 2/1
PIC16F628A 2048 224 128 16 1 Y 2 2/1
PIC16F648A 4096 256 256 16 1 Y 2 2/1

Página 003 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A

Página 004 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
ÍNDICE DE CONTEÚDOS

1.0 Descrição Geral 007


2.0 Diversidades Gerais na Família PIC 16F627A/628A/648ª 009
3.0 Visão Geral da Arquitetura 011
4.0 Organização da Memória 016
5.0 Portas de Entrada e Saída 032
6.0 Módulos Temporizadores (TIMER0) 046
7.0 Módulos Temporizadores (TIMER1) 049
8.0 Módulos Temporizadores (TIMER2) 053
9.0 Módulo de Captura, Comparação e PWM (CCP) 056
10.0 Módulo Comparador 060
11.0 Módulo de Referência de Voltagem 067
12.0 Módulode Receptor e Transmissor Síncrono e Assíncrono Universal (USART) 070
13.0 Memória de Dados EEPROM 087
14.0 Características Especiais da CPU 092
14.5 Interrupções 104
15.0 Sumário do Set de Instruções 111
16.0 Suporte ao Desenvolvimento 126
17.0 Especificações Elétricas 132
18.0 Gráficos e Tabelas com as Características AC e DC 148
19.0 Informações do Encapsulamento do Chip 158
Apêndices - Histórico de Revisões do DataSheet, Migrações do Dispositivo e Índice Remissivo 166

AOS NOSSOS ESTIMADOS CLIENTES


É nossa intenção fornecer aos nossos valiosos clientes a melhor documentação possível para garantir o uso bem-
sucedido de seus produtos Microchip. Para este fim, continuaremos a melhorar nossas publicações para melhor
atender às suas necessidades. Nossas publicações serão refinadas e aprimorado à medida que novos volumes e
atualizações são introduzidos. Se você tiver alguma dúvida ou comentário sobre esta publicação, entre em contato
com o Departamento de Comunicação de Marketing via Envie um e-mail para docerrors@microchip.com ou envie
por fax o Formulário de Resposta do Leitor no verso desta folha de dados para (480) 792-4150. Agradecemos
muito pelo seu feedback.

DataSheet mais atual


Para obter a versão mais atualizada desta ficha técnica, registre-se em nosso site mundial em:
http://www.microchip.com Você pode determinar a versão de uma folha de dados examinando seu número de
literatura encontrado no canto inferior externo de qualquer página. O último caractere do número da literatura é o
número da versão (por exemplo, DS30000A é a versão A do documento DS30000).

Errata
Uma folha de errata, descrevendo pequenas diferenças operacionais em relação ao DataSheet e soluções
alternativas recomendadas, pode existir para alguns dispositivos atuais. À medida que os problemas de
dispositivos/documentação forem conhecidos por nós, publicaremos uma folha de errata. A errata especificará a
revisão da pastilha de silício e a revisão do documento ao qual se aplica. Para determinar se existe uma folha de
errata para um dispositivo específico, verifique com uma das seguintes opções:
• Site mundial da Microchip; http://www.microchip.com
• Seu escritório de vendas local da Microchip (veja a última página)
Ao entrar em contato com um escritório de vendas, especifique qual dispositivo, revisão da pastilha de silício
e o DataSheet (inclua o número da literatura) você está Usando.

Sistema de Notificação ao Cliente


Registre-se em nosso site em www.microchip.com para receber informações atualizadas sobre os nossos produtos.

Página 005 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
ANOTAÇÕES:

Página 006 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
1.0 DESCRIÇÃO GERAL O modo HS (High Speed) é para cristais de alta velocidade. O
Os PIC16F627A/628A/648A são baseados em arquitetura modo EC é para uma fonte de relógio externa. O modo de
Flash de 18 pinos com 8 bits e são membros da versátil suspensão (desligamento) oferece economia de energia. Os
família de microcontroladores CMOS de baixo custo usuários podem acordar o chip do Sleep através de vários
PIC16F627A/628A/648A, com alto desempenho, totalmente interrupções externas, interrupções internas e resets. Um
estáticos. Todos os microcontroladores PIC® empregam um temporizador Watchdog altamente confiável vem embutido
RISC com arquitetura avançada. Os no chip. O oscilador RC fornece proteção contra travamento
PIC16F627A/628A/648A têm recursos principais de software. A Tabela 1-1 mostra as características da família
aprimorados, uma pilha profunda de oito níveis e múltiplas de microcontroladores de médio porte 648A. Um diagrama de
fontes de interrupção internas e externas. Os barramentos de blocos simplificado do PIC16F627A/628A/ 648A é mostrado
instrução e dados separados (arquitetura Harvard) permitem na Figura 3-1.
uma palavra de instrução de 14 bits com os dados separados A série PIC16F627A/628A/648A se encaixa em aplicações
de 8 bits. A segmentação de instruções em duas etapas variando de carregadores de bateria a controle remoto usando
(pipeline) permite que todas as instruções sejam executadas sensores de baixa potência. A tecnologia Flash torna simples a
em um único ciclo, exceto para ramificações do programa personalização de aplicativos (níveis de detecção, geração de
(que exigem dois ciclos). Um total de 35 instruções (set de pulso, temporizadores, etc.) extremamente rápidos e
instruções reduzido) estão disponíveis, complementados por convenientes. Os projetos de pequeno porte fazem este
um grande bloco de registradores. microcontrolador uma série ideal para todas as aplicações
Os Microcontroladores PIC16F627A / 628ª / 648A com limitações de espaço. Baixo custo, baixa potência, alto
normalmente atingem uma compactação de código 2:1 e uma desempenho, facilidade de uso e a flexibilidade de E/S tornam
velocidade 4:1 mais rápida em relação a outros o PIC16F627A/628A/648A muito versátil.
microcontroladores de 8 bits da sua categoria. Os
dispositivos PIC16F627A/628A/648A tem recursos
integrados recursos para reduzir componentes externos, 1.1 SUPORTE AO DESENVOLVIMENTO
reduzindo assim as dimensões e o custo do sistema, A família em questão é suportada por um simulador de
aumentando a confiabilidade do mesmo e ainda reduzindo software completo, usando macro-assembler e emulador de
consumo de energia. A família citada tem 8 configurações circuitos, com debugador de baixo custo disponível,
para osciladores: O oscilador RC de pino único fornece um programação simples e de baixo custo e programadores no
solução de baixo custo. O oscilador LP minimiza a potência mercado acessíveis e práticos para se usar. Um compilador C
consumo, XT é um cristal padrão, e INTOSC é um oscilador de terceiros e IDEs também estão disponíveis.
interno de duas velocidades de precisão independente.
TABELA 1-1: DISPOSITIVOS DA FAMÍLIA PIC 16F 627A / 628A / 648A
PIC16F627A PIC16F628A PIC16F648A PIC16LF627A PIC16LF628A PIC16LF648A
Relógio Clk Máx 20 20 20 20 20 20
Flash 1024 2048 4096 1024 2048 4096
Memória RAM 224 224 256 224 224 256
128 128 256 128 128 256
EPROM
Timers TMR (0 a 2) TMR (0 a 2) TMR (0 a 2) TMR (0 a 2) TMR (0 a 2) TMR (0 a 2)
Comparad. 2 2 2 2 2 2
Periféricos
Mód PWM 1 1 1 1 1 1
Com.Serial USART USART USART USART USART USART
Ref.Voltag. Sim Sim Sim Sim Sim Sim
Característ. Interrupç. 10 10 10 10 10 10
Pinos E/S 16 16 16 16 16 16
Faixa Volt. 3.0-5.5 3.0-5.5 3.0-5.5 2.0-5.5 2.0-5.5 2.0-5.5
BrownOut Sim Sim Sim Sim Sim Sim
Encapsul. DIP 18 pinos DIP 18 pinos DIP 18 pinos DIP 18 pinos DIP 18 pinos DIP 18 pinos
SOIC 20 SOIC 20 SOIC 20 pinos, SOIC 20 pinos, SOIC 20 pinos, SOIC 20 pinos,
pinos, QFN pinos, QFN QFN (SMD) 28 QFN (SMD) 28 QFN (SMD) 28 QFN (SMD) 28
(SMD) 28 (SMD) 28 pinos pinos pinos pinos
pinos pinos

Todos os dispositivos da família PIC® têm Power-on Reset, Watchdog Timer selecionável, proteção de código selecionável e alta capacidade de
corrente nos pinos de E/S. Todos os dispositivos da família PIC16F627A/628A/648A tem recurso para utilização de programação serial com
pino de clock RB6 e pino de dados RB7.

Página 007 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
ANOTAÇÕES:

Página 008 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
2.0 DIVERSIDADES GERAIS
NO PIC 16F627A/628A/648A
Uma boa variedade de faixas de freqüência e opções de
encapsulamento estão disponíveis. Dependendo da aplicação e
produção requisitos, a opção de dispositivo adequado pode ser
selecionada usando as informações do PIC16F627A / 628A /
648A Sistema de Identificação do Produto, ao final desses dados
lençol. Ao fazer pedidos, use esta página de a folha de dados
para especificar o número de peça correto.

2.1 Dispositivos Flash


Os dispositivos Flash podem ser apagados e reprogramados
eletricamente. Isso permite que o mesmo dispositivo seja usado
para desenvolvimento de protótipos, programas piloto e
produção. Outra vantagem do Flash eletricamente apagável é
que ele pode ser apagado e reprogramado no circuito, ou por
programadores de dispositivos, como o PICSTART® da
Microchip Programadores Plus ou PRO MATE® II.

2.2 Dispositivos de Produção com Retorno Rápido


(QTP)
A Microchip oferece um Serviço de Programação QTP para
ordens de produção de fábrica. Este serviço é feito disponível
para usuários que optaram por não programar uma mídia a alta
quantidade de unidades e cujos padrões de código estejam
estáveis. Os dispositivos são dispositivos Flash padrão, mas com
todos os locais do programa e opções de configuração já
programado pela fábrica. Determinado código e os
procedimentos de verificação de protótipos aplicam-se antes
remessas de produção estão disponíveis. Entre em contato seu
escritório de vendas da Microchip Technology para mais
Detalhes.

2.3 Dispositivos SQTPSM (Quick–Turnaround


Production) serializados
A Microchip oferece um serviço de programação exclusivo onde
alguns locais definidos pelo usuário em cada dispositivo são
programados com diferentes números de série. Os números de
série podem ser aleatórios, pseudo-aleatórios ou sequenciais. A
programação serial permite que cada dispositivo tenha um
número único, que pode servir como um código de entrada,
senha ou número de identificação.

Página 009 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
ANOTAÇÕES:

Página 010 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
3.0 VISÃO GERAL DA ARQUITETURA O PIC16F627A/628A/648A pode endereçar seus arquivos
de registro ou memória de dados direta ou indiretamente.
O alto desempenho da família PIC16F627A/628A/648A Todos os Registradores de Funções Especiais (SFR) –
pode ser atribuída a uma série de características Special Functions Registers - incluindo o contador de
comumente encontradas em microprocessadores RISC. programa (PC) Program Counter, são mapeados na
Em primeiro lugar, o PIC16F627A/628A/648A usa um memória de dados.
Arquitetura de Harvard em que programa e dados são
acessados a partir de memórias separadas usando O PIC16F627A/628A/648A têm um conjunto de instruções
barramentos de dados e endereços distintos. Isso melhora a ortogonais (simétrico) que torna possível realizar qualquer
largura de banda em relação à tradicional Arquitetura Von operação, em qualquer registro, usando qualquer endereço
Neumann onde programa e dados são buscado na mesma modo. Esta natureza simétrica e falta de "especial situações
memória. A separação entre programa e a memória de ótimas' faz a programação com o PIC16F627A/628A/648A
dados permite ainda que as instruções sejam dimensionadas simples, mas eficiente. Em Além disso, a curva de
diferente da palavra de dados de 8 bits de largura. As aprendizado é reduzida significativamente.
instruções opcodes tem 14-bits de largura, tornando
possível ter todos os instruções de uma única palavra. Um Os dispositivos PIC16F627A/628A/648A contêm uma
barramento de acesso à memória de programa de 14 bits Unidade Lógica e Aritmética de 8 bits (ALU) e
busca uma instrução de 14 bits em um único ciclo. Um registradores de trabalho. A ALU é uma unidade aritmética
pipeline de dois estágios se sobrepõe à busca e à execução de finalidade geral. Realiza operações aritméticas e funções
de instruções. Consequentemente, todas as instruções (35) lógicas (booleanas) entre dados no registrador de trabalho e
são executadas em um único ciclo de máquina (200 ns @ qualquer outro registrador de armazenamento. A ALU tem
20 MHz), exceto nos casos de ramificações de programa. 8 bits de largura e é capaz de adição, operações de
subtração, deslocamento e lógica. A menos que haja
A tabela 3.1 mostra os diversos tamanhos de memória alguma exceção em contrário, as operações aritméticas são
(Flash, Dados/RAM e EEPROM): de complemento-2 na natureza. Em instruções de dois
operandos, Normalmente, um operando é o registrador de
Dispositivo Memória trabalho (Registrador W). O outro operando é um
Flash RAM EEPROM registrador para armazenamento ou uma constante
PIC16F627A 1024x14 224x8 128 x 8 imediata. Em instruções de operando único, o operando é o
PIC16F628A 2048x14 224x8 128 x 8 registrador W ou um registrador de armazenamento. O
registro W é um registro de trabalho de 8 bits usado para
PIC16F648A 4096x14 256x8 256 x 8
ALU Operações. Não é um registrador endereçável
PIC16LF627A 1024x14 224x8 128 x 8
diretamente.
PIC16LF628A 2048x14 224x8 128 x 8
Dependendo da instrução executada, a ALU pode afetar os
PIC16LF648A 4096x14 256x8 256 x 8 valores do Carry (C), Digit Carry (DC) e Zero (Z) bits no
Registrador de Status. Os bits C e DC operam como bits de
empréstimo e de empréstimo de dígitos, respectivamente,
em subtração. Veja as instruções SUBLW e o SUBWF
como exemplos. Um diagrama de blocos simplificado é
mostrado na Figura 3-1, e uma descrição dos pinos do
dispositivo na Tabela 3-2. Dois tipos de memória de dados
são fornecidos nos dispositivos PIC16F627A/628A/648A.
A memória de dados EEPROM (não-volátil) é fornecida
para armazenamento de dados de longo prazo, como
valores de calibração, tabelas de dados de pesquisa e
quaisquer outros dados que possam requerer atualização
periódica em campo. Esses tipos de dados não são perdidos
quando a energia é desligada. A outra memória de dados
fornecida é memória de dados RAM normal. A memória de
dados é fornecida para armazenamento temporário de
dados durante a operação normal. Os dados são perdidos
quando a energia é cortada.

Página 011 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A

Página 012 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A

TABELA 3-2: DESCRIÇÃO DA PINAGEM DO PIC 16F627A / 628A / 648A


Nome Função Tipo Tipo Descrição
Entrada Saída
RA0/AN0 RA0 ST CMOS Porta E/S Bidirecional
AN0 AN — Entrada de Comparador Analógico
RA1/AN1 RA1 ST CMOS Porta E/S Bidirecional
AN1 NA — Entrada de Comparador Analógico
RA2 ST CMOS Porta E/S Bidirecional
RA2/AN2/VRef AN2 NA — Entrada de Comparador Analógico
VRef — AN Saída de Voltagem de Referência
RA3 ST CMOS Porta E/S Bidirecional
RA3/AN3/CMP1 AN3 AN — Entrada de Comparador Analógico
CMP1 — CMOS Saída do Comparador 1
RA4 ST OD Porta E/S Bidirecional
RA4/T0CKI/CMP2
TOCKI ST — Entrada do Relógio Timer0
CMP2 — OD Saída do Comparador 2
RA5 ST OD Porta Apenas de Entrada
RA5/MCLR/Vpp MCLR ST — Master Clear. Quando este pino for configurado
como Máster Clear,será um Reset ativo em nível
zero. A voltagem no pino não pode exceder o Vdd
Vpp — — Entrada para voltagem de Programação do Chip.
RA6 ST CMOS Porta E/S Bidirecional
RA6/OSC2/CLKOUT OSC2 — XTAL Saída de cristal ou oscilador. Conectável a um
cristal/oscilador quando no modo Cristal/Oscilador.
CMP2 — OD Quando no modo RC/INTOSC, o pino OSC2 pode
gerar saída de clock com ¼ da freqüência do OSC1.
RA7 ST CMOS Porta E/S Bidirecional
RA7/OSC1/CLKIN OSC1 XTAL — Entrada do Cristal ou Pulso de Oscilador.
CLKIN ST — Entrada fonte de clock externa. Pino RC de ajuste.
RB0/INT RB0 TTL CMOS Porta E/S Bidirecional, programável com pull-up.
INT ST — Interrupção Externa.
RB1 TTL CMOS Porta E/S Bidirecional, programável com pull-up.
RB1/RX/DT RX ST — Pino de Recepção Serial (USART)
DT ST CMOS Sincronismo de Dados E/S.
RB2 TTL CMOS Porta E/S Bidirecional, programável com pull-up.
RB2/TX/CK TX — CMOS Pino de Transmissão Serial (USART).
CK ST CMOS Sincronismo de Clock E/S.
RB3/CCP1 RB3 TTL CMOS Porta E/S Bidirecional, programável com pull-up.
CCP1 ST CMOS Captura e Comparação de PWM E/S.
RB4/PGM RB4 TTL CMOS Porta E/S Bidirecional, programável com pull-up.
PGM ST — Pino Entrada Programação em Baixa Voltagem.
RB5 RB5 TTL CMOS Porta E/S Bidirecional, programável com pull-up.
RB6 TTL CMOS Porta E/S Bidirecional, programável com pull-up.
RB6/T1OSO/ T1OSO — XTAL Saída do Oscilador Timer1.
T1CKI/PGC T1CKI ST — Entrada do Clock Timer1.
PGC ST — Clock para programação ICSP.
RB7 TTL CMOS Porta E/S Bidirecional, programável com pull-up.
RB7/T1OSI/PGD T1OSI XTAL — Entrada do Oscilador Timer1.
PGD ST CMOS Dados E/S para o modo de programação ICSP.
VSS VSS Power — Referência de Terra para lógica e pinos E/S.
VDD VDD Power — Referência de Alimentação para lógica e pinos E/S.

Página 013 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
3.1 Esquema de Clock e Ciclo de Instrução 3.2 Fluxo e Segmentação de Instruções
A entrada do relógio (pino RA7/OSC1/CLKIN) é interna Um ciclo de instrução consiste em quatro ciclos Q (Q1, Q2,
dividido por quatro para gerar quatro não sobrepostas Q3 e Q4). As instruções de busca e execução são
Relógios de quadratura ou seja, Q1, Q2, Q3 e Q4. segmentadas de tal forma que a busca gasta um ciclo de
Internamente, o contador de programas (PC) é instrução, ao passo que decodificar e executar toma outro
incrementado a cada Q1, a instrução é obtida do programa ciclo de instrução. No entanto, devido ao pipelining
memória e travado no registro de instruções no Q4. A (segmentação), cada instrução executa efetivamente em um
instrução é decodificada e executada durante o seguindo ciclo. Se uma instrução faz com que o contador de
Q1 até Q4. Os relógios e a instrução o fluxo de execução é programa seja alterado (por exemplo, GOTO) em seguida,
mostrado na Figura 3-2 dois ciclos são necessários para completar a instrução
(Exemplo 3-1). Um ciclo de busca começa com o contador
de programas incrementando no Q1. No ciclo de execução,
a instrução obtida é travada no Registrador de Instruções
(RI) no ciclo Q1. Esta instrução é então decodificada e
executada durante os Ciclos Q2, Q3 e Q4. A memória de
dados é lida durante o Q2 (leitura do operando) e escrita
durante o Q4 (destino no qual escrever).
FIGURA 3-2: CLOCK E CICLO DE INSTRUÇÃO

EXEMPLO 3-1: FLUXO SEGMENTADO DE INSTRUÇÃO

Página 014 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
ANOTAÇÕES:

Página 015 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
4.0 ORGANIZAÇÃO DA MEMÓRIA 4.2 Organização da Memória de Dados
A memória de dados (Figura 4-2 e Figura 4-3) é dividida em
4.1 Organização da Memória de Programas quatro bancos, que contêm os Registradores de Finalidade
(GPRs) e os Registradores de Função Especial (SFRs). Os SFRs
O PIC16F627A/628A/648A tem um contador de programa de 13 bits
estão localizados nos primeiros 32 locais de cada banco. Há
capaz de endereçar programas que ocupem até 8K x 14bits de espaço
Registradores de Propósito Geral implementados como RAM
na memória. No caso de cada chip, apenas o primeiro 1K x 14 (0000h-
estática em cada banco. A Tabela 4-1 lista o Registrador de Uso
03FFh) para o PIC16F627A, 2K x 14 (0000h-07FFh) para o
Geral disponível em cada um dos quatro bancos.
PIC16F628A e 4K x 14 (0000h-0FFFh) para o PIC16F648A estão
implementados fisicamente. Acessando um endereço de memória
acima desses limites causará uma sobreposição dentro do primeiro
espaço de 1K x 14 (PIC16F627A), Espaço 2K x 14 (PIC16F628A) ou TABELA 4-1: REGISTRADORES DE USO GERAL
4K x 14 espaço (PIC16F648A). O vetor Reset está em 0000h e o vetor
de interrupção está em 0004h (Figura 4-1).

FIG. 4-1: MAPA DE MEMÓRIA E PILHA

Os endereços F0h-FFh, 170h-17Fh e 1F0h-1FFh são


implementados como RAM comum e mapeados de volta para
endereços 70h-7Fh. A Tabela 4-2 lista como acessar os quatro
bancos de cadastros através dos bits de registro de status RP1 e
RP0.

4.2.1 REGISTRADOR DE USO GERAL ARQUIVO

O arquivo de registro está organizado como 224 x 8 no


PIC16F627A/628A e 256 x 8 no PIC16F648A. Cada um é
acessado direta ou indiretamente através do comando File
Select Register (FSR), consulte a Seção 4.4 "Endereçamento
Indireto, Registros INDF e FSR".

Página 016 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
FIGURA 4-2: MAPA DA MEMÓRIA DE DADOS DO PIC 16F627A e PIC 16F628A
End. Indireto (1) 00h End. Indireto (1) 80h End. Indireto (1) 100h End. Indireto (1) 180h
TMR0 01h OPTION 81h TMR0 101h OPTION 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 PCLATH 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
TMR2 11h 91h
T2CON 12h PR2 92h
13h 93h
14h 94h
CCPR1L 15h 95h
CCPR1H 16h 96h
CCP1CON 17h 97h
RCSTA 18h TXSTA 98h
TXREG 19h SPBRG 99h
RCREG 1Ah EEDATA 9Ah
1Bh EEADR 9Bh
1Ch EECON1 9Ch
1Dh EECON2(1) 9Dh
1Eh 9Eh
CMCON 1Fh VRCON 9Fh 11Fh
Registradores 20h Registradores A0h Registradores 120h
Propósito Propósito Propósito
Geral 80 bytes 6Fh Geral 80 bytes EFh Geral 48 bytes 14Fh
150h

16Fh 1EFh
16 bytes 70h Acessos F0h Acessos 170h Acessos 1F0h
70h – 7Fh 70h – 7Fh 70h – 7Fh
7Fh 17Fh 1FFh
Banco 0 Banco 1 Banco 2 Banco 3

(1) Não são registradores físicos.

Localizações de memória de dados não implementadas, serão sempre lidas como ‘0’.

Página 017 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
FIGURA 4-3: MAPA DA MEMÓRIA DE DADOS DO PIC 16F648A

End. Indireto (1) 00h End. Indireto (1) 80h End. Indireto (1) 100h End. Indireto (1) 180h
TMR0 01h OPTION 81h TMR0 101h OPTION 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 PCLATH 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
TMR2 11h 91h
T2CON 12h PR2 92h
13h 93h
14h 94h
CCPR1L 15h 95h
CCPR1H 16h 96h
CCP1CON 17h 97h
RCSTA 18h TXSTA 98h
TXREG 19h SPBRG 99h
RCREG 1Ah EEDATA 9Ah
1Bh EEADR 9Bh
1Ch EECON1 9Ch
1Dh EECON2(1) 9Dh
1Eh 9Eh
CMCON 1Fh VRCON 9Fh 11Fh
20h A0h Registradores 120h
Registradores Registradores Propósito
Propósito 6Fh Propósito EFh Geral 80 bytes 14Fh
Geral 80 bytes Geral 80 bytes 150h

16Fh 1EFh
70h Acessos F0h Acessos 170h Acessos 1F0h
16 bytes 70h – 7Fh 70h – 7Fh 70h – 7Fh
7Fh 17Fh 1FFh
Banco 0 Banco 1 Banco 2 Banco 3

(1) Não são registradores físicos.

Localizações de memória de dados não implementadas, serão sempre lidas como ‘0’.

Página 018 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F627A/628A/648A
4.2.2. REGISTRADORES DE FUNÇÕES ESPECIAIS

Os SFRs são registradores utilizados pela CPU e pelas funções


periféricas para controlar as diversas operações do dispositivo da forma
desejada (Tabela 4-3). Esses registradores são construídos na RAM
estática. Os registradores especiais podem ser classificados em dois
conjuntos (núcleo e periférico). Os SFR associados com as funções de
núcleo são descritos nesta seção. Aqueles relacionados à operação dos
recursos periféricos são descritos na seção de recursos periféricos.

TABELA 4-3 RESUMO DOS REGISTRADORES ESPECIAIS – BANCO 0

Legenda: - = Locais da memória não construídos no CHIP, lidos como ‘0’, ‘u’ = não-mudado, x = desconhecido, q = valor que depende
das condições, sombreado = não construído. Nota: Para a condição de inicialização dos registradores, ver Tabela 14-6 e 7.

Página 019 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
TABELA 4-4: RESUMO DE REGISTRADORES ESPECIAIS - BANCO 1

Legenda: : - = Locais da memória não construídos no CHIP, lidos como ‘0’, ‘u’ = não-mudado, x = desconhecido, q = valor que
depende das condições, sombreado = não construído. Nota: Para condição de inicialização dos registradores, ver Tabela 14-6 e 7.

Página 020 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F627A/628A/648A
TABELA 4-5: RESUMO DE REGISTRADORES ESPECIAIS - BANCO 2

Legenda: : - = Locais da memória não construídos no CHIP, lidos como ‘0’, ‘u’ = não-mudado, x = desconhecido, q = valor que
depende das condições, sombreado = não construído. Nota: Para condição de inicialização dos registradores, ver Tabela 14-6 e 7.

Página 021 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
TABELA 4-6: RESUMO DE REGISTRADORES ESPECIAIS - BANCO 3

Legenda: : - = Locais da memória não construídos no CHIP, lidos como ‘0’, ‘u’ = não-mudado, x = desconhecido, q = valor que
depende das condições, sombreado = não construído. Nota: Para condição de inicialização dos registradores, ver Tabela 14-6 e 7.

Página 022 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F627A/628A/648A
4.2.2.1 Registrador STATUS
O registrador Status, mostrado no Registrador 4-1, contém o Por exemplo, CLRF STATUS limpará os três bits mais
status aritmético da ULA; o status de reset e os bits de seleção significativos e definirá o bit Z. Isso deixa o registro de status
de banco para memória de dados (SRAM). como “000uu1uu” (onde u = inalterado).
O registrador Status pode ser o destino de qualquer instrução, Recomenda-se, portanto, que apenas as instruções BCF, BSF,
como qualquer outro registro. Se o registro de status é o SWAPF e MOVWF sejam usadas para alterar o Registrador
destino de uma instrução que afeta o bit Z, o bit DC ou C, de status porque essas instruções não afetam qualquer bit de
então a gravação nesses três bits é desabilitada. Esses bits são status. Para outras instruções que não afetem quaisquer Bits
definidos ou apagados de acordo com o lógica do dispositivo. de status, consulte o “Resumo do conjunto de instruções”.
Além disso, os bits TO e PD não são graváveis. Portanto, o Nota: Os bits C e DC operam como bit de dígito emprestado
resultado de uma instrução com o registrador de status como e dígito recebido em empréstimo respectivamente, nas
destino pode ser diferente do esperado. operações de subtração. Veja as instruções Assembly
SUBLW e SUBWF para entender melhor.

Registrador 4-1: STATUS – REGISTRADOR DE STATUS (End. 03h, 83h, 103h,183h)

bit 7 IRP: Bit de seleção do banco de registros (usado para endereçamento indireto)
1 = Banco 2, 3 (100h-1FFh); 0 = Banco 0, 1 (00h-FFh)

bit 6-5 RP<1:0>: Bits de seleção do banco de registros (usados para endereçamento direto)
00 = Banco 0 (00h-7Fh); 01 = Banco 1 (80h-FFh); 10 = Banco 2 (100h-17Fh); 11 = Banco 3 (180h-1FFh)

bit 4 TO: bit de tempo limite


1 = Após inicialização, instrução CLRWDT ou instrução SLEEP
0 = Ocorreu um tempo limite do WDT

bit 3 PD: bit de desligamento


1 = Após energização ou pela instrução CLRWDT; 0 = Por execução da instrução SLEEP

bit 2 Z: bit zero


1 = O resultado de uma operação aritmética ou lógica é zero
0 = O resultado de uma operação aritmética ou lógica não é zero

bit 1 DC: Bit Carry/Borrow de dígito (instruções ADDWF, ADDLW, SUBLW, SUBWF) (para emprestar a polaridade está
invertido)
1 = Ocorreu um carry-out do 4º bit de ordem inferior do resultado
0 = Nenhum carry-out do 4º bit de ordem inferior do resultado

bit 0 C: Bit de transporte/emprestar (instruções ADDWF, ADDLW, SUBLW, SUBWF)


1 = Ocorreu um carry-out do bit mais significativo do resultado
0 = Não ocorreu nenhum carry-out do bit mais significativo do resultado
Nota: Para receber dígito emprestado, a polaridade é invertida. Uma subtração é executada somando os dois
complemento do segundo operando. Para instruções de rotação (RRF, RLF), este bit é
carregado com o bit de ordem superior ou inferior do registro de origem.

Página 023 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A

4.2.2.2 Registrador OPTION


O registro de opções é um registrador passível de leitura e Nota: Para conseguir uma atribuição de pré-escalador 1:1
gravação, que contém vários bits de controle para configurar para o timer TMR0, atribua o prescaler ao WDT (PSA = 1).
o pré-escalador TMR0/WDT, a interrupção RB0/INT externa, Consulte a Seção 6.3.1 “Comutação e Atribuição do pré-
TMR0 e o conjunto de pull-ups fracos em PORTB. escalador”.

Registrador 4-2: OPTION_REG (Registrador OPTION (Endereço 81h, 181h)

bit 7 RBPU: bit de habilitação de pull-up de PORTB


1 = pull-ups de PORTB estão desabilitados
0 = pull-ups de PORTB são habilitados para valores iniciais em nível 1 das portas individuais

bit 6 INTEDG: bit de seleção de borda de interrupção


1 = Interrupção na borda ascendente do pino RB0/INT; 0 = Interrupção na borda descendente do pino RB0/INT

bit 5 T0CS: Bit de seleção da fonte do relógio TMR0


1 = Transição no pino RA4/T0CKI/CMP2; 0 = Relógio do ciclo de instrução interno (CLKOUT)

bit 4 T0SE: bit de seleção da borda da fonte TMR0


1 = Incremento na transição de alto para baixo no pino RA4/T0CKI/CMP2
0 = Incremento na transição de baixo para alto no pino RA4/T0CKI/CMP2

bit 3 PSA: bit de atribuição do prescaler


1 = O pré-escalador está atribuído ao WDT; 0 = O pré-escalador está atribuído ao módulo Timer0

bit 2-0 PS<2:0>: Bits de seleção da taxa do pré-escala

Página 024 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F627A/628A/648A
4.2.2.3 Registrador INTCON

O registrador INTCON é também passive de leitura e Nota: Os bits do sinalizador de interrupção são definidos
gravação, contendo vários bits de ativação e sinalização para quando uma condição de interrupção ocorre, e isto
todas as fontes de interrupção, exceto o módulo comparador. independentemente do estado de seu bit de habilitação
Consulte a Seção 4.2.2.4 “Registro PIE1” e Seção 4.2.2.5 correspondente ou do bit de habilitação global, GIE
“Registro PIR1” para uma descrição de os bits de habilitação (INTCON<7>).
e sinalização do comparador.

Registrador 4-3: INTCON – Registrador Controle DE INTERRUPÇÕES (Ends: 0Bh,8Bh,10Bh,18Bh)

bit 7 GIE: bit de habilitação de interrupção global


1 = Habilita todas as interrupções não mascaradas; 0 = Desativa todas as interrupções

bit 6 PEIE: bit de habilitação de interrupção periférica


1 = Habilita todas as interrupções periféricas não mascaradas; 0 = Desativa todas as interrupções periféricas

bit 5 T0IE: bit de habilitação de interrupção de estouro TMR0


1 = Habilita a interrupção TMR0; 0 = Desabilita a interrupção TMR0

bit 4 INTE: bit de habilitação de interrupção externa RB0/INT


1 = Habilita interrupção externa RB0/INT; 0 = Desabilita a interrupção externa RB0/INT

bit 3 RBIE: bit de habilitação de interrupção de alteração da porta RB


1 = Habilita a interrupção de mudança da porta RB; 0 = Desabilita a interrupção de mudança da porta RB

bit 2 T0IF: bit de sinalizador de interrupção de estouro TMR0


1 = O registro TMR0 estourou (deve ser limpo no software); 0 = registro TMR0 não estourou

bit 1 INTF: bit de sinalização de interrupção externa RB0/INT


1 = Ocorreu interrupção externa RB0/INT (deve ser apagada no software); 0 = A interrupção externa RB0/INT não ocorreu

bit 0 RBIF: bit de sinalizador de interrupção de mudança de porta RB


1 = Quando pelo menos um dos pinos RB<7:4> muda de estado (deve ser limpo no software)
0 = Nenhum dos pinos RB<7:4> mudou de estado

Página 025 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
4.2.2.4 Registrador PIE1

Este registrador contem os bits de habilitação das interrupções.

Registrador 4-4: PIE1 – Registrador Habilitação Interrupções Periféricos 1 (Ends: 0Bh,8Bh,10Bh,18Bh)

bit 7 EEIE: Bit de habilitação de interrupção completa de gravação de EE


1 = Habilita interrupção completa de escrita do EE; 0=Desativa interrupção completa de gravação do EE

bit 6 CMIE: bit de habilitação de interrupção do comparador


1 = Habilita a interrupção do comparador; 0 = Desabilita a interrupção do comparador

bit 5 RCIE: bit de habilitação de interrupção de recepção USART


1 = Habilita interrupção de recebimento USART; 0 = Desativa a interrupção de recebimento USART

bit 4 TXIE: bit de habilitação de interrupção de transmissão USART


1 = Habilita a interrupção de transmissão USART; 0 = Desativa a interrupção de transmissão USART

bit 3 Não implementado: lido como ‘0’

bit 2 CCP1IE: bit de habilitação de interrupção CCP1


1 = Habilita a interrupção CCP1; 0 = Desabilita a interrupção CCP1

bit 1 TMR2IE: bit de habilitação de interrupção de correspondência TMR2 para PR2


1 = Habilita a interrupção de correspondência TMR2 para PR2
0 = Desativa a interrupção da correspondência TMR2 para PR2

bit 0 TMR1IE: bit de habilitação de interrupção de estouro TMR1


1 = Habilita a interrupção de overflow TMR1; 0 = Desabilita a interrupção de overflow do TMR1

Página 026 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F627A/628A/648A
4.2.2.5 Registrador PIR1 Nota: Os bits do sinalizador de interrupção são definidos
quando uma condição de interrupção ocorre de forma
independente do estado de seu bit de habilitação
Este registrador contem os bits das flags de interrupções
correspondente ou do bit global de habilitação, GIE
(INTCON<7>). O usuário do software deve garantir que os
bits de sinalização (flags) de interrupção estejam limpos antes
de habilitar uma interrupção.
Registrador 4-5: PIR1 – Registrador de Interrupções de Periféricos 1 (Endereço: 0Ch)

bit 7 EEIF: bit do sinalizador de interrupção da operação de gravação da EEPROM


1 = A operação de gravação foi concluída (deve ser apagada no software)
0 = A operação de gravação não foi concluída ou não foi iniciada

bit 6 CMIF: bit do sinalizador de interrupção do comparador


1 = A saída do comparador foi alterada; 0 = A saída do comparador não mudou

bit 5 RCIF: bit de sinalização de interrupção de recepção USART


1 = O buffer de recepção USART está cheio; 0 = O buffer de recebimento USART está vazio

bit 4 TXIF: bit de sinalizador de interrupção de transmissão USART


1 = O buffer de transmissão USART está vazio; 0 = O buffer de transmissão USART está cheio

bit 3 Não implementado: lido como ‘0’

bit 2 CCP1IF: bit de sinalização de interrupção CCP1


Modo de captura:
1 = Ocorreu uma captura de registro TMR1 (deve ser apagada no software)
0 = Nenhuma captura de registro TMR1 ocorreu
Modo de comparação
1 = Ocorreu uma correspondência de comparação de registro TMR1 (deve ser apagada no software)
0 = Nenhuma correspondência de comparação de registro TMR1 ocorreu
Modo PWM
Não utilizado neste modo

bit 1 TMR2IF: Bit de sinalizador de interrupção de correspondência TMR2 para PR2


1 = Ocorreu correspondência de TMR2 com PR2 (deve ser apagado no software)
0 = Nenhuma correspondência de TMR2 para PR2 ocorreu

bit 0 TMR1IF: bit de sinalizador de interrupção de estouro TMR1


1 = Registro TMR1 estourado (deve ser limpo no software)
0 = registro TMR1 não estourou

Página 027 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
4.2.2.6 Registrador PCON Nota: BOR é desconhecido na reinicialização ao ligar. Isto
deve então ser definido pelo usuário e verificado em
O registrador PCON contém bits de sinalização (flags) para reinicializações subsequentes se o BOR está apagado,
diferenciar entre um reset de Power-On, um reset externo indicando que uma queda de energia ocorreu. O bit de status
MCLR, um reset WDT ou um reset Brown-Out. BOR é um “não cuidado” e não é necessariamente previsível
se o circuito de queda de energia é desativado (limpando o bit
BOREN na Palavra de configuração).
Registrador 4-6: PCON – Registrador de Monitoramento de Carga (Endereço: 8Eh)

bit 7-4 Não implementado: lido como ‘0’

bit 3 OSCF: bit de frequência do oscilador INTOSC


1 = 4 MHz típico
0 = 48 kHz típico

bit 2 Não implementado: lido como ‘0’

bit 1 POR: bit de status de redefinição de inicialização


1 = Nenhuma reinicialização de inicialização ocorreu
0 = Ocorreu uma reinicialização na inicialização (deve ser definida no software após ocorrer uma reinicialização na inicialização)

bit 0 BOR: bit de status de redefinição de brown-out


1 = Não ocorreu reinicialização de queda de energia
0 = Ocorreu uma reinicialização de queda de energia (deve ser definido no software após ocorrer uma reinicialização de queda de
energia)

Página 028 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F627A/628A/648A
4.3 PCL e PCLATH A pilha funciona como um buffer circular. Isso significa que
O Contador de Programa (PC) é um registrador com 13 bits de depois que a pilha foi empurrada oito vezes, o nono PUSH substitui
largura. O menor byte vem do registrador PCL, que é um valor o valor que foi armazenado na primeira empurrada. O décimo PUSH
passível de leitura e gravação. O byte alto (PC<12:8>) não é substitui a segunda empurrada (e assim por diante). Leia sobre o
diretamente legível ou gravável e vem do registrador PCLATH. Em conceito de FIFO.
qualquer reinicialização, o PC é zerado. A Figura 4-4 mostra as duas Notas
situações para carregar o PC. O exemplo superior na Figura 4-4 1: Não há bits de status para indicar condições de overflow ou
mostra como o PC é carregado em uma gravação PCL underflow da pilha.
(PCLATH<4:0> → PCH). O exemplo inferior na Figura 4-4 mostra 2: Não existem no Assembly as instruções cujos mnemônicos se
como o PC é carregado durante uma CALL ou instrução GOTO chamem PUSH ou POP. Estas são ações que ocorrem a partir da
execução das instruções CALL, RETURN, RETLW e RETFIE, ou a
(PCLATH<4:3> → PCH).
vetorização para um endereço de interrupção.
FIGURA 4-4:Carga do PC (diferentes situações) 4.4 Endereçamento Indireto, INDF e Registradores
FSR
O registrador INDF não é um registrador físico.
Fazendo o endereçamento do registrador INDF ocorrerá um
endereçamento indireto.
O endereçamento indireto é possível usando o registrador INDF.
Qualquer instrução usando o registrador INDF na verdade acessará
dados apontados pelo FSR. Ler o próprio INDF indiretamente irá
produzir 00h. Escrevendo indiretamente no registro INDF resultará
em não-operação (embora os bits de status possam ser afetados). Um
endereço efetivo de 9 bits é obtido pela concatenação entre o
registrador FSR de 8 bits e o bit IRP (STATUS<7>), conforme
mostrado na Figura 4-5.
Um programa simples para limpar a localização da RAM 20h-2Fh
usando o endereçamento indireto é mostrado no Exemplo 4-1.
EXEMPLO 4-1 ENDEREÇAMENTO INDIRETO

4.3.1 GOTO CALCULADO


Um GOTO calculado é realizado adicionando um deslocamento
ao contador do programa (ADDWF PCL). Ao fazer uma leitura de
tabela usando um método GOTO calculado, cuidado
deve se ter cuidado para a localização da tabela não cruzar limite de
memória (PCL - cada bloco de 256 bytes). Consulte a Nota de
aplicação AN556 “Implementando leitura de tabela” (DS00556).

4.3.2 PILHA
A família PIC16F627A/628A/648A possui 8 níveis de pilha de
hardware (largura de 13 bits) (Figura 4-1). O espaço de pilha não faz
parte do programa ou do espaço de dados e o Stack Pointer (SP) ou
Ponteiro da Pilha não é legível ou gravável. O PC é empurrado para
a pilha quando uma instrução CALL é executada ou uma
interrupção causa uma ramificação. A pilha é POPed no caso da
execução de um RETURN, RETLW, RETFIE. PCLATH não é
afetado por nenhuma operação PUSH ou POP.

Página 029 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
FIGURA 4-5: ENDEREÇAMENTO DIRETO E INDIRETO NO PIC16F627A/628A/648A

Página 030 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
ANOTAÇÕES:

Página 031 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
5.0 PORTAS DE ENTRADA E SAÍDA Em um dos modos de comparação definidos pelo Registro
A família PIC16F627A/628A/648A possui duas portas, CMCON, os pinos RA3 e RA4 tornam-se saídas dos
PORTA e PORTB. Alguns pinos para essas portas de E/S comparadores. Os bits TRISA devem ser liberados para
funcionam multiplexados com funções alternativas de permitir que as saídas usem essa função.
recursos periféricos do dispositivo. Em geral, quando um EXEMPLO 5-1: INICIALIZANDO PORTA
periférico é habilitado, esse pino não pode mais ser usado
como um pino de E/S de uso geral.

5.1 Registradores PORTA e TRISA


A PORTA é um LATCH (trava) de 8 bits. RA4 é uma entrada
com Schmitt-Trigger e saída em dreno aberto. A porta RA4 é
multiplexada com a entrada de CLOCK (relógio) T0CKI.
RA5(1) é somente uma entrada com Schmitt-Trigger e não
possui drivers de saída. Todas as demais portas RA possuem
funções como entrada Schmitt-Trigger e saídas CMOS
completas. Todos os pinos possuem bits de direção de dados
(registradores TRIS) que podem configurar esses pinos como
entradas ou saídas.
Um ‘1’ em um bit do registrador TRISA coloca o pino
correspondente ao bit como entrada em modo de alta
impedância. Um ‘0’ no mesmo registro TRISA colocará o FIGURA 5-1: DIAGRAMA DE BLOCOS
conteúdo do LATCH de saída no(s) pino(s) selecionado(s). DOS PINOS RA0/AN0:RA1/AN1
Ao fazer a leitura do registrador PORTA o chip lê o status do
pino enquanto escreve nele escreverá na trava da porta. Todas
as operações de gravação são operações de leitura-
modificação-gravação. Então escrever em uma porta implica
que os pinos da porta sejam lidos primeiro, então este valor é
modificado e gravado o resultado final nos dados da porta.
Os pinos da PORTA são multiplexados com comparadores e
funções de referência de tensão. O funcionamento destes
pinos é feito pela seleção via bits de controle no registrador
CMCON (Comparator Control Register) e pelo Registrador
VRCON (Registrador de Controle de Referência de Tensão).
Quando Selecionado como uma entrada de comparador, esses
pinos serão lidos como '0's.
Notas
1: RA5 compartilha função com VPP (voltagem de
programação do chip). Quando os níveis de tensão VPP
são aplicados ao RA5, o chip entrará no modo de
programação.
2: Durante um Reset, o registrador TRISA é definido
como todos os pinos sendo Entradas. As entradas digitais
(RA) são desabilitadas e as entradas do comparador são
forçadas para terra afim de reduzir a corrente de consumo.
3: O registrador TRISA é substituído pelo oscilador da
configuração. Quando PORTA é substituído, os dados
lêem '0' e os bits do registrador TRISA são ignorados.

O registrador TRISA controla a direção dos pinos RA, mesmo


quando eles estão sendo usados como valores de entrada para
os comparadores. Para tanto, o usuário deve certificar-se de
manter os pinos configurados como entradas. O pino RA2
também funcionará como saída para referência de tensão.
Quando neste modo, o pino VREF se torna uma saída de
altíssima impedância. O usuário deve configurar o bit certo
para entrada e usar apenas cargas de alta impedância.
Página 032 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G
PIC16F 627A / 628A / 648A
FIGURA 5-2: DIAGRAMA DE BLOCOS DO PINO RA2/AN2

FIGURA 5-3: DIAGRAMA DE BLOCOS DO PINO RA3/AN3/CMP1

Página 033 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A

Página 034 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A

Página 035 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
TABELA 5-1: FUNÇÕES DA PORTA
NOME Função TIPO TIPO DESCRIÇÃO
ENTR. SAÍDA
RA0/AN0 RA0 ST CMOS Porta Bidirecional E/S
AN0 AN — Entrada Analógica de Comparador
RA1/AN1 RA1 ST CMOS Porta Bidirecional E/S
AN1 AN — Entrada Analógica de Comparador
RA2/AN2/Vref RA2 ST CMOS Porta Bidirecional E/S
AN2 AN — Entrada Analógica de Comparador
Vref — AN Saída Vref
RA3/AN3/CMP1 RA3 ST CMOS Porta Bidirecional E/S
AN3 AN — Entrada Analógica de Comparador
CMP1 — CMOS Saída do Comparador 1
RA4/TOCKI/CMP2 RA4 ST OD Porta Bidirecional E/S, com saída em Dreno Aberto.
TOCKI AN — Entrada para Clock Externo ou Saída de Comparador
CMP2 — OD Saída do Comparador 2
RA5/MCLR/Vpp RA5 ST — Porta Somente de Entrada
MCLR ST — Master Clear. Quando configurado como MCLR, este pino é
um Reset com disparo em 0. A voltagem nele não deve exceder
a Vdd durante operação normal do dispositivo.
Vpp HV — Entrada de Voltagem para Programação do Chip.
RA6/OSC2/CLKOUT RA6 ST CMOS Porta Bidirecional E/S
OSC2 — XTAL Saída de Cristal Oscilador. Conectar-se ao cristal para usar com
modo oscilador de cristal.
CLKOUT — CMOS No modo RD ou INTOSC. O pino OSC2 pode gerar a saída
CLKOUT com freqüência de ¼ da freqüência de OSC1.
RA7/OSC1/CLKIN RA7 ST CMOS Porta Bidirecional E/S
OSC1 XTAL — Entrada de Cristal Oscilador. Conectar-se ao cristal para usar
com modo oscilador de cristal.
CLKIN ST — Entrada para fonte de clock externo. Pino de ajuste RC.

TABELA 5-2: RESUMO DOS REGISTRADORES ASSOCIADOS COM PORTA

Legenda: - = Locais não implementados lidos como ‘0’ u = inalterado x = desconhecido


q = valor depende da condição. As células sombreadas não são usadas para PORTA.

Nota 1: A configuração do bit MCLRE determina a forma de RA5 funcionar.

Página 036 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
5.2 REGISTRADORES PORTB e TRISB
O PORTB é uma porta bidirecional de 8 bits de largura. O O recurso de interrupção na mudança (interrupt-on-change) é
registrador de direção de dados correspondente a ele é o recomendado para acionamento quando for pressionado um botão
TRISB. Um '1' em o registro TRISB coloca o driver de ou chave de forma que o PORTB seja usado apenas para acionar
saída correspondente em modo ENTRADA de alta a interrupção na mudança ocorrida. A sondagem do PORTB não é
impedância. Um '0' no bit do registrador TRISB coloca o recomendada enquanto estivermos usando o recurso Interrupt-on-
conteúdo da trava de saída no(s) pino(s) selecionado(s), Change.
tornando o pino uma SAÍDA. O PORTB é multiplexado
com a as funções de interrupção externa, USART, módulo FIGURA 5-8: DIAGRAMA DE BLOCOS - PINO RB0/INT
CCP e o relógio TMR1 de Entrada e Saída. As funções de
porta padrão e também as funções alternativas são
mostradas na Tabela 5-3.
As funções alternativas podem substituir a configuração
TRIS quando forem ativadas. A leitura do registrador
PORTB lê o status dos pinos, enquanto que as operações
de escrita colocarão o conteúdo de saída na trava
(LATCH) da porta. Todos as operações são do tipo
leitura-modificação-gravação. Então, uma escrita para
uma porta implica que os pinos da porta são lidos
primeiro e, em seguida, esse valor é modificado e gravado
na trava de dados da porta em questão.
Cada um dos pinos do PORTB tem um pull-up interno
fraco ( ≈ 200 μ A t í pico) passivo de ativação por
software. Um único bit de controle pode ativar todos os
pull-ups. Isso é feito por meio da limpeza do bit RBPU
(registrador OPTION<7>). O pull-up fraco é
automaticamente desativado quando o pino da porta é
configurado como saída. Os pull-ups também são
desativados no Power-on Reset. Quatro dos pinos do
PORTB, RB<7:4>, têm um recurso de disparo de
interrupção quando ocorrer uma mudança, sendo que
somente os pinos configurados como entradas podem
fazer com que essa interrupção ocorra (ou seja, qualquer
pino RB configurado como uma saída é excluído da
comparação interrupt on-change). Os pinos de entrada (de
RB) são comparados com o valor antigo travado na última
leitura de PORTB. As saídas "desencontradas" de RB são
filtradas por um filtro lógico OR juntas para gerar a
interrupção RBIF (sinalizador travado em INTCON).

Essa interrupção pode despertar o dispositivo do modo de


suspensão. O usuário, na rotina de interrupção de serviço,
pode limpar o interrompa da seguinte maneira: a)
Qualquer leitura ou escrita do PORTB. Isso encerrará o
condição de incompatibilidade. b) Limpar bit de
sinalizador RBIF. Uma condição de incompatibilidade
continuará a definir o bit de sinalizador RBIF. A leitura
do PORTB encerrará a condição de incompatibilidade e
permitir que o bit de sinalizador RBIF seja limpo. Este NOTA: 1 - Se ocorrer uma alteração no pino de E/S quando
recurso de interrupção na incompatibilidade, juntamente uma operação de leitura estiver sendo executada (início do
com pull-ups configuráveis por software nesses quatro ciclo Q2), então flag de interrupção RBIF poderá não ser
pinos permitem interface fácil para um teclado e torná-lo acionada.
possível para despertar sobre a depressão de chave (Ver
Nota de Aplicação AN552 "Implementando o despertar
em pressionamentos de teclas" (DS00552).

Página 037 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
FIG. 5-9: DIAGRAMA BLOCOS PINO RB1/RX/DT FIG. 5-10: DIAGRAMA BLOCOS PINO RB2/TX/CK

Página 038 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
FIGURA 5-11 DIAGRAMA BLOCOS DO PINO RB3/CCP1

Página 039 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
FIGURA 5-12: DIAGRAMA DE BLOCOS DO PINO RB4/PGM

Página 040 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
FIGURA 5-13 DIAGRAMA DE BLOCOS DO PINO RB5

Página 041 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
FIGURA 5-14 DIAGRAMA DE BLOCOS DO PINO RB6/T1OSO/Y1CKI/PGC

Página 042 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
FIGURA 5-15 DIAGRAMA DE BLOCOS DO PINO RB7/T1OSI/PGD

Página 043 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
TABELA 5-3: FUNÇÕES DO PORTB

NOME Função TIPO TIPO DESCRIÇÃO


ENTR. SAÍDA
RB0/INT RA0 TTL CMOS Porta Bidirecional E/S, programável para Pull-Up Fraco.
INT ST — Interrupção Externa
RB1/RX/DT RB1 TTL CMOS Porta Bidirecional E/S, programável para Pull-Up Fraco.
RX ST — Pino de Recepção da USART
DT ST CMOS Dados de E/S Síncronos.
RB2/TX/CK RB2 TTL CMOS Porta Bidirecional E/S, programável para Pull-Up Fraco
TX — CMOS Pino de Transmissão da USART
CK — CMOS Clock de E/S Síncrono.
RB3/ CCP1 RB3 ST CMOS Porta Bidirecional E/S, programável para Pull-Up Fraco
CCP1 ST CMOS Capturador / Comparador / PWM / Entrada e Saída
RB4/PGM RB4 ST OD Porta Bidirecional E/S, programável para Pull-Up Fraco.
Função de Interrupt-On-Change.
PGM ST — Entrada de programação de baixa voltagem. Quando está
habilitada, a interrupção e resistor pull-up fraco são desativados
RB5 RB5 TTL CMOS Porta Bidirecional E/S, programável para Pull-Up Fraco.
Função de Interrupt-On-Change
RB6/T1OSO/T1CKI / RB6 TTL CMOS Porta Bidirecional E/S, programável para Pull-Up Fraco.
PGC Função de Interrupt-On-Change
T1OSO — XTAL Saída do Oscilador Timer1.
T1CKI ST — Entrada de Clock do Timer1.
PGC ST — Clock para Programação em modo ICSP.
RB7/T1OSI/PGD RB7 TTL CMOS Porta Bidirecional E/S, programável para Pull-Up Fraco.
Função de Interrupt-On-Change
T1OSI XTAL — Entrada do Oscilador Timer1.
PGD ST CMOS Entrada e Saída de Dados ICSP

TABELA 5-4 RESUMO DE REGISTRADORES ASSOCIADOS COM A PORTB

Legenda: u = inalterado x = desconhecido As células sombreadas não são usadas para PORTB.

Nota 1: A configuração do bit LVP determina a forma de RB4 funcionar.

Página 044 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
5.3 CONSIDERAÇÕES PARA PROGRAMAÇÂO DE ENTRADAS E SAÍDAS
5.3.1 PORTAS DE E/S BIDIRECIONAIS EXEMPLO 5-2: INSTRUÇÕES EM PORTAS E/S
Qualquer instrução de Escrita opera internamente como
uma leitura seguida por uma operação de gravação. As
instruções BCF e BSF, por exemplo, lêem o registrador
na CPU, executam a operação de bits e escrevem o
resultado de volta no registrador. Deve-se ter cuidado
quando estes as instruções são aplicadas a uma porta com
entradas e saídas definidas. Por exemplo, uma operação
BSF no bit 5 de PORTB fará com que todos os oito bits de
PORTB sejam lidos na CPU. Em seguida, a operação BSF
ocorre no bit 5 e PORTB é gravado nas travas de saída. Se
outro bit de PORTB é usado como um pino de E/S
bidirecional (por exemplo, bit 0) e é definido como uma
entrada neste momento, o sinal de entrada presente no
próprio pino seria lido pela CPU e reescrito para a trava
de dados deste particular pin, substituindo o conteúdo
anterior. Desde que o pino permanece no modo de
entrada, nenhum problema ocorre. Contudo se o bit 0 for
alternado para o modo de saída mais tarde, o conteúdo da
trava de dados pode agora ser um dado desconhecido. 5.3.2 OPERAÇÕES SUCESSIVAS NAS PORTs E/S
A leitura de um registrador de porta lê os pinos com A gravação real em uma porta de E/S acontece no final do um
valores da porta. Gravar no registro de porta grava o valor ciclo de instrução, enquanto para a leitura, os dados deve ser
na trava (saída) da porta. Ao usar instruções de leitura- válidos já no início do ciclo de instrução (Figura 5-16). Portanto,
modificação-gravação (ex. BCF, BSF, etc.) Em uma porta, deve-se ter cuidado se uma gravação seguida de uma operação de
o valor dos pinos da porta é lido, a operação desejada é leitura é executada no mesma porta de E/S. A sequência de
feita para este valor, e esse valor é então gravado na trava instruções deve ser tal para permitir que a tensão do pino se
(Saída) da porta. O exemplo 5-2 mostra o efeito de duas estabilize (carga dependente) antes da próxima instrução, o que faz
instruções sequenciais de leitura-gravação (ex., BCF, com que esse arquivo a ser lido na CPU, é executado. Caso
BSF, etc.) em um Porta de E/S. Um pino emitindo contrário, o estado anterior desse pino pode ser lido em a CPU em
ativamente um Baixo ou Alto não deve ser acionado a vez do novo estado. Na dúvida, é melhor separar essas instruções
partir de dispositivos externos ao mesmo tempo para com um NOP ou outra instrução não acessando essa porta de E/S.
alterar o nível neste pino ("wired-OR", "wired-AND").
Tal conflito provocaria um curto na saída do chip, e as
altas correntes de saída poderiam danificar o mesmo.
FIGURA 5-16 OPERAÇÕES DE E/S SUCESSIVAS

Página 045 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
6.0 MÓDULO TIMER0 6.2 Uso do Timer0 com relógio externo
O temporizador/contador do módulo Timer0 tem as seguintes Quando uma entrada de relógio externo é usada para o
características: Timer0, ela deve atender a determinados requisitos. O
• Temporizador/contador de 8 bits requisito de relógio externo se deve à sincronização do
• Capacidades de leitura/gravação relógio de fase interno (TOSC). Além disso, há um atraso no
• Prescaler programável por software de 8 bits incremento real do Timer0 após a sincronização.
• Seleção de relógio interno ou externo
• Interrupção em overflow de FFh a 00h 6.2.1 SINCRONIZAÇÃO RELÓGIO EXTERNO
• Seleção de borda para relógio externo Quando nenhum pré-calibrador é usado, a entrada do relógio
A Figura 6-1 é um diagrama de blocos simplificado do externo é a mesma da saída do pré-calibrador. A
módulo Timer0. Informações adicionais estão disponíveis no sincronização do T0CKI com os relógios de fase internos é
“PIC® Manual de referência da família MCU de médio realizada pela amostragem da saída do prescaler nos ciclos
porte” (DS33023)”. Q2 e Q4 dos relógios de fase internos (Figura 6-1). Portanto,
O modo temporizador é selecionado zerando o bit T0CS é necessário que T0CKI seja alto por pelo menos 2TOSC (e
(OPTION<5>). No modo Timer, o valor do registrador TMR0 um pequeno atraso RC de 20 ns) e baixo por pelo menos
incrementará cada ciclo de instrução (sem prescaler). Se o 2TOSC (e um pequeno atraso RC de 20 ns). Consulte a
registrador TMR0 for gravado, o incremento é inibido nos especificação elétrica do dispositivo desejado.
dois ciclos seguintes. O usuário pode contornar isso
escrevendo um valor ajustado para o registrador TMR0. Quando um pré-calibrador é usado, a entrada do clock externo
O modo contador é selecionado definindo o bit T0CS. Neste é dividida pelo pré-calibrador do tipo contador de ondulação
modo, o valor do registro TMR0 aumentará em cada borda assíncrono, de modo que a saída do pré-calibrador seja
ascendente ou descendente do pino RA4/T0CKI/CMP2. simétrica. Portanto, é necessário que T0CKI tenha um período
A borda de incremento é determinada pela fonte bit de de pelo menos 4TOSC (e um pequeno atraso RC de 40 ns)
controle de borda (T0SE) (OPTION<4>). Limpando o bit dividido pelo valor do pré-calibrador. O único requisito para
T0SE seleciona a borda ascendente. Restrições ao entrada de os tempos alto e baixo de T0CKI é que eles não violem o
relógio externo são discutidas em detalhes em Seção 6.2 requisito de largura de pulso mínima de 10 ns. Consulte os
“Usando Timer0 com Relógio Externo”. O prescaler é parâmetros 40, 41 e 42 na especificação elétrica do
compartilhado entre o módulo Timer0 e o temporizador dispositivo desejado. Consulte a Tabela 17-8
Watchdog. A atribuição do prescaler é controlado em
software pelo bit de controle PSA (OPÇÃO<3>). Limpar o bit (*) N.T. Usamos Interrupções com freqüência em nossos
PSA atribuirá o pré-escalador para Timer0. O prescaler não é projetos, ao invés das técnicas de Pooling (Loop infinito que
legível ou gravável. Quando o prescaler é atribuído ao Timer0 fica varrendo as entradas para ver se alguma mudou de status)
módulo, valor de pré-escala de 1:2, 1:4,..., 1:256 são pois o Pooling pode ter sua utilidade mas é uma técnica que
selecionável. Seção 6.3 Detalhes do “Timer0 Prescaler” a deixa o processamento lento, por conta do Loop Infinito e a
operação do prescaler. necessidade de colocar Delays para retardar o processamento
segundo seja conveniente. Setamos em 1 um bit chamado GIE
6.1 Interrupção do Timer0 para que seja habilitada o módulo Global de Interrupções. O
A interrupção do Timer0 é gerada quando o registro TMR0 GIE será estudado mais a fundo quando dissecarmos o
o temporizador/contador transborda de FFh para 00h. Este registrador INTCON mais adiante.
estouro define o bit T0IF. A interrupção pode ser mascarada
zerando o bit T0IE (INTCON<5>). O bit T0IF (INTCON<2>)
deve ser apagado no software pelo O módulo Timer0
interrompe a rotina de serviço antes de reativar esta
interrupção. A interrupção Timer0 não pode despertar o
processador do modo de suspensão, pois o cronômetro está
desligado desligado durante o sono.
(*) N.T. Prescaler - Um prescaler (traduzido às vezes como pré-escalador ou pré-calibrador) é um circuito
eletrônico de contagem usado para reduzir um sinal elétrico de alta frequência para uma frequência mais baixa por
meio de divisão inteira (por 2, 4, 8, 16, etc...) O prescaler pega a frequência básica do clock do temporizador (que
pode ser a frequência de clock da CPU ou não) e a divide por algum valor inteiro antes de alimentá-la no
temporizador, de acordo com a configuração do(s) registrador(es) do prescaler. Os valores do prescaler, chamados
de pré-escalas, podem ser configurados e limitados a valores fixos (potências de 2) ou podem ser qualquer valor
inteiro de 1 a 2^P, em que P é o número de bits do prescaler). O prescaler é útil quando precisamos medir ou
comparar freqüências muito altas mas temos contadores muito mais lentos. Se eu tenho uma entrada com 10MHz e
uso um prescaler para dividir essa freqüência por 10.000, precisarei para essa medida de um circuito a 1 KHz.

Página 046 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A

6.3 Prescaler (ver conceito Pág.045) do Timer0


Um contador de 8 bits está disponível como um prescaler para o módulo Timer0 ou como um postescaler para o
WatchdogTimer. Uma atribuição de prescaler do módulo Timer0 significa que não há postscaler para o WatchdogTimer e vice-
versa.
Os bits PSA e PS<2:0> (OPTION<3:0>) determinam a atribuição do prescaler e a taxa de pré-escala.
Quando atribuído ao módulo Timer0, todas as instruções que são escritas no registrador TMR0 (por exemplo, CLRF 1,
MOVWF 1,BSF 1, x....etc.) zerarão o prescaler. Quando atribuída ao WDT, uma instrução CLRWDT limpará o prescaler
junto com o Watchdog Timer. O prescaler não pode ser lido nem gravado.

(*) N.T. Postscaler – É exatamente o oposto de um Prescaler. O Prescaler é um pré-divisor de freqüência. O Postscaler age
como se multiplicasse a frequência fundamental, pois desacelera a freqüência com que as interrupções são geradas. Trata-se de
um circuito que reduz a taxa de geração de interrupção (ou reinicialização do WatchDog Timer - WDT) de um
contador/temporizador dividindo-o.

FIGURA 6-1: DIAGRAMA DE BLOCOS DO TIMER0/WDT

Página 047 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
6.3.1 ATRIBUIÇÃO DO PRESCALER
A atribuição do prescaler está totalmente sob controle de Para mudar o Prescaler a partir do WDT para o Timer0, use a
software (ou seja, pode ser alterado “em pleno vôo” - on-the- seqüência mostrada no exemplo 6-2. Esta precaução deverá
fly - durante a execução do programa). Use as sequências de ser tomada mesmo se o WDT estiver desabilitado.
instruções mostradas no Exemplo 6-1 ao alterar a
configuração do prescaler do Timer0 para WDT, a fim de EXEMPLO 6-2: TROCA PRESCALER (WDT > TIMER0)
evitar uma redefinição de dispositivo não intencional.

EXEMPLO 6:1 TROCA DE PRESCALER (TIMER0>WDT)

TABELA 6-1: REGISTRADORES ASSOCIADOS COM O TIMER0

Página 048 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
7.0 MÓDULO TIMER1 No modo Timer, o valor do par de registradores TMR1
O módulo Timer1 é um temporizador/contador de 16 bits que incrementa cada ciclo de instrução.
consiste em 2 registradores de 8 bits (TMR1H e TMR1L) que No modo Contador, ele incrementa em cada borda ascendente
são legíveis e graváveis. O par de registradores TMR1 do clock externo de entrada. O Timer1 pode ser
(TMR1H:TMR1L) incrementa de 0000h a FFFFh e ao chegar ativado/desativado configurando o bit de controle TMR1ON
no final, reinicia em 0000h. A interrupção do Timer1, se (T1CON<0>) em 1 ou 0.
habilitado, é gerada a partir do estouro do par de registradores O Timer1 também tem uma entrada interna de Reset. Este
TMR1 (H e L) o qual trava o bit com a flag (sinalizadora) de Reset pode ser gerado pelo módulo CCP (“Ver Seção 9.0
interrupção TMR1IF (PIR1<0>). Essa interrupção pode ser Módulo Capturar/Comparar/PWM (CCP)").
habilitada/desabilitada colocando-se 1/0 no bit de habilitação A figura REGISTRADOR 7-1 mostra o registrador de
do Timer1, o bit TMR1IE (PIE1<0>). controle do Timer1. Para o PIC16F627A/628A/648A, quando
O Timer1 pode operar em um dos dois modos: o oscilador Timer1 estiver ativado (T1OSCEN está em 1), os
• Como temporizador. pinos RB7/T1OSI/PGD e RB6/T1OSO/T1CKI/PGC
• Como contador. funcionarão como entradas. Ou seja, o valor TRISB será
O modo de operação é determinado pela seleção do bit de ignorado e não aparecerá como saída nestes 2 pinos
seleção do clock, TMR1CS (T1CON<1>). RB6/RB7.

REGISTRADOR 7-1: REGISTRADOR T1CON DE CONTROLE DO TIMER1 (Endereço: 10h)

bits 7-6 – Não implementados – lidos como ‘0’.


bits 5-4 – T1CKPS<1:0> Bit de seleção do Prescaler para o Clock de Entrada do Timer1
11 = 1:8 valor do Prescaler
10 = 1:4 valor do Prescaler
01 = 1:2 valor do Prescaler
00 = 1:1 valor do Prescaler

bit 3 - Bit de Controle para Habilitação do Timer 1


1 = Oscilador está habilitado
0 = Oscilador está desabilitado

bit 2 - Bit de Controle (T1SYNC) para Sincronização da Entrada Externa de Clock para o Timer1
Se TMR1CS = 1
T1SYNC = 1 Não sincroniza entrada externa de clock.
T1SYNC = 0 Sincroniza entrada externa de clock.
Se TMR1CS = 0
T1SYNC será ignorado. O Timer1 usará seu clock interno quando TMR1CS for zero.

bit 1 - TMR1CS Bit de seleção da fonte de clock para o Timer1


1 = Clock externo a partir do pino RB6/T1OSO/T1CKI/PGC, na subida do pulso.
0 = Clock interno (FOSC/4).

bit 0 - TMR1ON – Habilitação do Timer1


1 = Habilita Timer1.
0 = Desabilita Timer1.

NOTA: O inversor do oscilador e o resistor de retorno são desligados para eliminar consumo do dreno.

Legenda:
R = Bit Legível W = Bit Gravável U = Bit não implementado nesse Chip, ler como ‘0’
-n = Valor no POR ‘1’ Bit Ligado ‘0’ Bit Desligado x = Bit é desconhecido

Página 049 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
7.1 Operação Timer1 no Modo Temporizador 7.2.1 ENTRADA EXTERNA DE CLOCK PARA
O modo de temporizador é selecionado setando o bit MODO DE CONTADOR SINCRONIZADO
TMR1CS (T1CON<1>) para 0. Neste modo, o relógio de Quando uma entrada de clock externo é usada para o Timer1
entrada para o temporizador é FOSC/4. O bit de controle de no modo contador sincronizado, ela deverá atender a alguns
sincronização T1SYNC (T1CON) não fará efeito uma vez requisitos. O requisito de relógio externo é devido a
que o relógio interno já está o tempo todo sincronizado. sincronização do relógio de fase interno (TOSC). Também há
um atraso no incremento real do TMR1 registrar o valor do
7.2 Modo Contador Sincronizado par após a sincronização. Quando o pré-dimensionador é 1:1,
a entrada de relógio externo é o mesmo que a saída do pré-
O modo contador é selecionado colocando o bit TMR1CS
escalonador. A sincronização de T1CKI com os relógios de
em 1. Neste modo, o valor do par de registradores TMR1 é
fase internos é realizada por amostragem da saída do pré-
incrementado em cada borda ascendente do sinal na entrada
escalonador no Q2 e Ciclos Q4 dos relógios de fase internos.
do clock (pino RB7/T1OSI/PGD) quando o bit T1OSCEN
Portanto, é necessário para que o T1CKI seja alto por pelo
está em 1 ou o pino RB6/T1OSO/T1CKI/ PGC quando o bit
menos 2 TOSC (e um pequeno atraso do CR de 20 ns) e baixo
T1OSCEN está em 0. Se T1SYNC estiver em 0, a entrada
para pelo menos 2 TOSC (e um pequeno atraso do CR de 20
de clock externo será sincronizado com relógios internos. A
sincronização é feita após o estágio de pré-escalonador. O O ns). Consulte a Tabela 17-8 em a Seção de Especificações
Elétricas, parâmetros de temporização 45, 46 e 47.
estágio pré-escalonador é um contador de ondulação
Quando um pré-escalonador diferente de 1:1 é usado, o A
assíncrono. Nessa configuração, durante o modo de
entrada do relógio é dividida pelo contador de ondulação
suspensão, o TMR1 O valor do par de registro não será
assíncrono Digite Prescaler para que a saída do Prescaler seja
incrementado mesmo se o relógio externo está presente,
simétrica. Para que o relógio externo atenda à amostragem O
desde a sincronização O circuito está desligado. O prescaler,
contador de ondulação deve ser levado em conta. Portanto, é
no entanto, continuará para incrementar.
necessário que o T1CKI tenha um período de pelo menos 4
TOSC (e um pequeno atraso de CR de 40 ns) dividido pelo
valor do pré-escalonador. O único requisito em T1CKI tempo
alto e baixo é que eles não violam o requisitos mínimos de
largura de pulso de 10 ns). Referir-se a as especificações
eléctricas adequadas do quadro 17-8, parâmetros 45, 46 e 47.

FIGURA 7-1: DIAGRAM DE BLOCOS DO TIMER1

Página 050 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
7.3 Operação em Modo Contador Assíncrono EXEMPLO 7-1: LEITURA DO TIMER1 16-BIT
Se o bit de controle T1SYNC (T1CON) estiver definido em RODANDO LIVREMENTE
1, a entrada do clock não estará sincronizada. O ; Todas as Interrupções estão desabilitadas
temporizador continuará a incrementar assíncrono para os MOVF TMR1H, W ;Ler o byte superior
relógios de fase internos. O temporizador continuará a MOVWF TMPH ;
funcionar durante o repouso e pode gerar uma interrupção MOVF TMR1L, L ;Ler o byte inferior
no estouro, que despertará o processador. No entanto, MOVWF TMPL ;
precauções especiais no software são necessário para MOVF TMR1H, W ;Ler o byte superior
ler/escrever o temporizador (Seção 7.3.2 "Leitura e SUBWF TMPH, W ;Sub primeiro lido com segundo lido
Gravação no Timer1 usando Modo Contador Assíncrono "). BTFSC STATUS, Z ;Se resultado = 0
GOTO CONTINUE ;Boa leitura 16-bits
Nota: No modo Contador Assíncrono, Timer1 não pode ;
ser usado como uma base de tempo para captura ou ; TMR1L poderá causar uma sobreposição (rollover) (1)
comparar operações. MOVF TMR1H, W ;Ler o byte superior
MOVWF TMPH ;
7.3.1 TEMPORIZAÇÃO ENTRADA DO CLOCK MOVF TMR1L, W ;Ler byte inferior
EXTERNO (RELÓGIO NÃO SINCRONIZADO). MOVWF TMPL, ;
Se o bit de controle T1SYNC estiver definido, o ; Re-habilita as interrupções (se requerido)
temporizador será incrementado de forma completamente CONTINUE ;Continue seu programa
assíncrona. O relógio de entrada deve atender certos Este DataSheet diz que o bit RTCSYNC indica uma janela de
requisitos mínimos de tempo alto e baixo. Referir ao quadro tempo durante a qual os registradores de controle do clock
17-8 da secção de especificações eléctricas, parâmetros de RTCC podem ser lidos e gravados com segurança sem
temporização 45, 46 e 47. problemas de “rollover”. Quando RTCSYNC = 0, os
registradores podem ser acessados com segurança pela ULA.
7.3.2 TEMPORIZADOR DE LEITURA E ESCRITA EM Se RTCSYNC = 1 ou 0, o usuário deve programar uma solução
CONTADOR NO MODO ASSÍNCRONO onde os dados lidos não caiam em um limite de sobreposição,
A leitura do registrador TMR1H ou TMR1L, enquanto o resultando em uma leitura inválida ou parcial. Esta solução
temporizador estiver sendo executado a partir de um clock consistiria em ler cada registro duas vezes e, em seguida,
assíncrono externo, produzirá uma leitura válida (cuidada no comparar os dois Valores. Se os dois valores correspondessem
hardware). No entanto, o usuário deve ter em mente que a então, não ocorreria uma sobreposição. Se eu esperar que o
leitura do temporizador de 16 bits em dois valores de 8 bits RTCSYNC seja 0 como diz a folha de dados, isso realmente
em si apresenta certos problemas desde que o temporizador retarda a leitura do registro. Acima está explicado melhor o que
pode transbordar entre o Lê. Para gravações, recomenda-se é rollover (ou sobreposição) e possíveis problemas.
que o usuário simplesmente pare o temporizador e escrever Um contador rápido de um registrador de 16 ou mais bits sendo
os valores desejados. Uma escrita A contenção pode ocorrer lido 8 bits por vez. Os 8 bits baixos estão em 255 com os bits
por escrito nos registradores de temporizador enquanto o superiores são 0 no momento em que os bits inferiores são
registro está aumentando. Isso pode produzir um valor lidos. Entre o momento em que você lê os 8 bits superiores, os
imprevisível no registro de timer. Ler o valor de 16 bits 8 inferiores rolam para 0 e enviam 1 bit para os 8 superiores.
requer alguns cuidados. O exemplo 7-1 é um exemplo de Então agora você acha que tem 0x01ff no contador em vez de
rotina para ler o 16 bits valor do temporizador. Isso é útil se 0x0100 (o valor correto) quando você lê os 8 bits superiores. A
o temporizador não puder ser parado. maioria dos temporizadores PIC de 16bits usa armazenamento
em buffer para guardar ambos os valores de 8 bits em uma
trava (ou latch) quando o byte inferior é lido – o que em geral é
suficiente para corrigir esse problema.
(1) N.T. A sobreposição é um problema perpétuo quando vários registradores são usados na contagem – especialmente de tempo.
Isso não se limita a ocorrer apenas à meia-noite, quando acontece a virada de PM para AM. Aqui está um exemplo. Suponha
que você tenha dois registros, um para segundos e outro para minutos. Vamos supor que o tempo em minutos:segundos seja
03:59. Se você ler 3 minutos primeiro, há uma chance de que quando você ler os segundos você vai ler 00, resultando em 3:00
sendo lido. Se você ler 59 segundos primeiro, há uma chance de você ler 4 minutos, resultando em 4:59 sendo lido. Sabemos
que tanto 3:00 quanto 4:59 estão incorretos porque o horário correto seria 4:00. Este é um problema com todos os sistemas de
contagem de múltiplos bytes ou registros, incluindo 8, 16, 32 bits, etc, vários temporizadores/contadores quando eles funcionam
em cascata. Existem apenas duas soluções e nenhuma é perfeita:
a) O hardware deve ter capacidades de travamento através das quais todos os registradores são travados simultaneamente na
extremidade oposta do clock de contagem.
b) Parar o relógio durante a leitura.
Em algumas ocasiões, melhor optar por um relógio EXTERNO ao microcontrolador, para maior segurança.

Página 051 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
7.4 O Oscilador Timer1 7.5 Redefinindo o Timer1 usando um CCP
Um circuito oscilador para cristal é construído entre os pinos Se o módulo CCP1 estiver configurado no modo Comparar
T1OSI (entrada) e T1OSO (saída do amplificador). Ele é com gerar um "gatilho de evento especial" (CCP1M = 1011),
habilitado por configuração de bit de controle T1OSCEN este sinal irá redefinir o Timer1.
(T1CON). Vai continuar a ser executado durante o modo de Nota: Os gatilhos de eventos especiais a partir do módulo
suspensão. Destina-se principalmente a um cristal de relógio CCP1 não mudarão para 1 o bit sinalizador de interrupção
de 32.768 kHz. A Tabela 7-1 mostra o seleção de capacitores TMR1IF (PIR1).
para o oscilador Timer1. O usuário deve fornecer um atraso O Timer1 deverá ser configurado para cada temporizador ou
de tempo de software para garantir partida adequada do dispositivo no modo Contador Sincronizado para que se possa
oscilador. tirar proveito dessa característica. Se o Timer1 estiver sendo
executado no modo Contador Assíncrono, esta operação de
TABELA 7-1: SELEÇÃO DE CAPACITOR PARA redefinição poderá não funcionar. No caso de uma gravação
O OSCILADOR DO TIMER1 no Timer1 coincidir com disparo de evento especial do CCP1,
Frequência C1 C2 a gravação terá prioridade, precedendo o disparo. Neste modo
32.768 KHz 15pF 15pF de operação, o par de registradores CCPRxH:CCPRxL torna-
se efetivamente o registrador de período para o Timer1.

Nota: Esses valores são apenas para orientação de design. 7.6 Redefinindo o par de registradores do Timer1
Consulte a Nota de Aplicação AN826 "Noções básicas de (TMR1H, TMR1L)
Oscilador e seleção de cristal para dispositivos rfPIC® e Os registradores TMR1H e TMR1L não são redefinidos para
PIC® (DS00826)"para mais informações sobre a escolha de 00h em um POR ou qualquer outro Reset, exceto pelo disparo
Cristais e Capacitores para Clock. para evento especial CCP1 (ver Seção 9.2.4 "Disparos de
Eventos Especiais"). O registro T1CON é redefinido para 00h
em um Power-on Reset ou um Brown-out Reset, que
desligará o Timer e deixará um prescaler configurado em 1:1.
Em todos os outros tipos de Resets, o registrador não será
afetado.

7.7 Prescaler do Timer1


O contador de prescaler é zerado nas gravações feitas nos
registradores TMR1H ou TMR1L.

TABELA 7-2: REGISTRADORES ASSOCIADOS COM TEMPORIZAÇÃO/CONTAGEM NO TIMER1

Legenda: x = desconhecido, u = sem mudanças, - = Não implementado, lido como ‘0’,


As células sombreadas não são utilizadas no módulo Timer1.

Página 052 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
8.0 MÓDULO TIMER2 8.1 Timer2 Pré-escalonador e Postscaler
O Timer2 é um temporizador de 8 bits com um prescaler e Os contadores prescaler e postscaler são zerados quando
um postscaler. Ele pode ser usado como a base de tempo ocorrer qualquer uma das seguintes situações:
PWM quando usado no modo PWM do módulo CCP. • uma gravação no registro TMR2
O registrador TMR2 é legível e gravável, e é zerado em • uma gravação no registro T2CON
qualquer modalidade de RESET. • qualquer dispositivo Reset (Power-on Reset, MCLR Reset,
Redefinição do Timer2, do WDT ou redefinição do Brown-
O clock de entrada (FOSC/4) tem uma opção de prescaler de Out). Registrador TMR2 não zera quando T2CON é escrito.
1:1, 1:4 ou 1:16, selecionados pelos bits de controle
T2CKPS (T2CON). 8.2 Saída TMR2
A saída TMR2 (antes do pós-escalonador) é alimentada para o
O módulo Timer2 tem um registrador de período de 8 bits Módulo de porta serial síncrona que usa opcionalmente ele para
PR2. O valor do registrador TMR2 aumenta de 00h até que gerar relógio de turno.
corresponda ao valor do registrador PR2 e, em seguida,
redefine seu valor para 00h no próximo ciclo de incremento. FIGURA 8-1:DIAGRAMA BLOCOS DO TIMER2
O registro PR2 é um registro legível e gravável. O registro
PR2 é inicializado para FFh após a reinicialização.

A saída de correspondência do Timer2 passa por um 4-bit


Postscaler (que dá um dimensionamento de 1:1 a 1:16
inclusive) para gerar uma interrupção Timer2 (travada no bit
do sinalizador TMR2IF, (PIR1)). OTimer2 pode ser
desligado zerando o bit de controle TMR2ON (T2CON)
para minimizar o consumo de energia. O registro 8-1 mostra
o registro de controle Timer2.

REGISTRADOR 8-1: T2CON – REGISTRADOR DE CONTROLE DO TIMER2 (ENDEREÇO: 12h)

Bit 7 – Não implementado. Lido como ‘0’.


Bit 6-3 – TOUTOPS<3:0> Seleção Bits do PostScaler de Saída do Timer2.
0000 – Valor de Postscaler 1:1
0001 – Valor de Postscaler 1:2
...
1111 – Valor de Postscaler 1:65535

Bit 2 - TMR2ON – Liga/Desliga Timer2. 1 – Liga; 0 – Desliga.

Bit 1 - T2CKPS<1:0> Seleciona Bits para Prescaler do Clock do Timer2


00 = Valor do Prescaler = 1:1 01 = Valor do Prescaler = 1:4 10 ou 11 = Valor do Prescaler = 1:16;

Legenda: R–Bit Legível W–Bit Gravável U–Bit Não Implementado -n Valor no POR ‘1’ Ligado ‘0’ Desligado x = Desconhecido

TABELA 8:1 – REGISTRADORES ASSOCIADOS COM O TIMER2 COMO TEMPORIZADOR/CONTADOR

Página 053 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
ANOTAÇÕES:

Página 054 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
9.0 MÓDULO CAPTURA/COMPARAÇÃO/PWM TABELA 9-1: RECURSOS MODO CCP
O módulo CCP (Captura/Comparação/PWM) contém um
Registrador de 16 bits que pode operar como um capturador de 16
bits, como um registrador de Comparação de 16 bits ou como um
registrador de Ciclo PWM mestre/escravo. A Tabela 9-1 mostra os
recursos de temporizador do módulo CCP.
O Módulo CCP1 possui um registrador de 16bits (CCPR1),
composto por dois registradores de 8 bits: CCPR1L (byte baixo) e
CCPR1H (byte alto).
O registro CCP1CON controla o funcionamento da CCP1. Todos
são legíveis e graváveis. Informações adicionais sobre o módulo
CCP estão disponíveis no "PIC® Mid-Range MCU Family
Reference Manual" (DS33023).

REGISTRADOR 9-1: CCP1CON – REGISTRADOR DE OPERAÇÕES CCP (End. 17h)

Bit 7-6 Não implementado. Será lido como ‘0’.

Bit 5-4 CCP1X:CCP1Y: PWM dos bits menos significativos.


Não é usado nos modos Captura ou Comparação. No modo PWM, estes bits são os 2 bits menos significativos
(também chamados de LSBs) no Ciclo de Serviço (Duty Cycle) do PWM. Já os 8 mais significativos (MSBs) são
encontrados no registrador CCPRxL.

Bit 3-0 CCP1M<3:0> CCPx - Bits da Seleção do Modo:


0000 = Desliga tudo, Captura, Comparação e PWM (reseta o módulo CCP1)
0100 = Modo Captura, em toda descida do pulso
0101 = Modo Captura, em toda subida do pulso
0110 = Modo Captura, em cada 4ª subida do pulso
0111 = Modo Captura, em cada 16ª subida do pulso.
1000 = Modo Comparação, seleciona saída se coincidir valor (bit CCP1/F vai para ‘1’)
1010 = Modo Comparação, dispara evento especial (bit CCP1/F vai para ‘1’ e CCP1 reseta TMR1)
11xx = Modo PWM.

Legenda:
R = Bit Legível W = Bit Gravável U = Bit não implementado nesse Chip, ler como ‘0’
-n = Valor no POR ‘1’ Bit Ligado ‘0’ Bit Desligado x = Bit é desconhecido

Página 055 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
9.1 MODO CAPTURA 9.1.4 PCC PRESCALER
No modo de captura, CCPR1H:CCPR1L capturam o Valor de Há 4 configurações para o prescaler, especificadas
16 bits do registro TMR1 quando ocorre um evento no pino pelos bits CCP1M. Sempre que o módulo CCP é ligado
RB3/CCP1. Um evento é definido como: ou desligado, ou o módulo CCP não estiver no modo de
• Cada aresta do sinal em queda captura, o contador de prescalers estará em ‘0’.
• Cada aresta do sinal subindo
• Cada 4ª aresta subindo
Isso significa que qualquer reset limpará o contador do
• Cada 16ª borda subindo.
Um evento é selecionado pelos bits de controle CCP1M prescaler. Mudar de um prescaler de captura para outro
(CCP1CON). Quando uma captura é feita, o bit de sinalizador pode gerar uma interrupção. Além disso, o contador de
de solicitação de interrupção CCP1IF (PIR1) vai para ‘1’. prescaler não será zerado, portanto, a primeira captura
Ele precisará ser zerado por software. Se ocorrer outra captura pode vir de um prescaler não-zerado. O exemplo 9-1
antes que o valor no registro CCPR1 seja lido, o valor anterior mostra o Método recomendado para alternar entre
capturado será perdido. prescalers de captura. Este exemplo também zera o
contador do prescaler e não gerará uma interrupção
9.1.1 CONFIGURAÇÃO DO PINO CCP "falsa" (ou indevida, se preferirem).
No modo de captura, o pino RB3/CCP1 deve ser configurado
como uma entrada definindo o bit TRISB<3>.
EXEMPLO 9-1: TROCANDO PRESCALERS DE
CAPTURA.
Nota: Se o RB3/CCP1 estiver configurado como saída,
uma escrita na porta poderá causar uma condição de
CLRF CCP1CON ; Desliga Módulo CCP
Captura. MOVLW NEWPCAPT_PS ; Carrega registrador W
; com novo valor de modo
FIGURA 9-1: DIAGRAMA BLOCOS NUMA CAPTURA ; Prescaler e liga CCP
MOVWF CCP1CON ; Carrega CCP1CON com
; este valor

9.2 Modo COMPARAÇÃO


No Modo Comparação, o registrador de 16 bits CCPR1
é constantemente comparado com o valor do par de
registradores TMR1. Quando uma coincidência ocorrer,
o pino RB3/CCP1 fará:
• Subir para ‘1’.
• Descer para ‘0’.
9.1.2 SELEÇÃO DO MODO TIMER1 • Permanecer Inaltarado.
O Timer1 deve estar em execução no modo Timer ou no Esta ação sobre o pino está baseada no valor de
modo Contador Sincronizado para que o módulo CCP use o
recurso de captura. No modo Contador Assíncrono, o A
controle dos bits CCP1M<3:0>, do registrador
operação de captura pode não funcionar. (CCP1CON<3:0>). Ao mesmo tempo, o bit sinalizador
de interrupção CCP1IF irá para ‘1’.
9.1.3 INTERRUPÇÃO DE SOFTWARE
Quando o modo de captura é alterado, uma falsa interrupção
de captura pode ser gerada. O usuário deve manter o bit
CCP1IE (PIE1) em ‘0’ para evitar falsas interrupções e deve
zerar o bit de sinalizador CCP1IF após qualquer alteração que
venha a ocorrer no modo de operação.

Página 056 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
9.2.1 CONFIGURAÇÃO DO PINO CCP 9.2.4 GATILHO DE EVENTO ESPECIAL
O usuário deve configurar o pino RB3/CCP1 como saída Nesse modo (CCP1M<3:0> =1011), um disparo de hardware
zerando o bit TRISB. interno é gerado, que pode ser usado para iniciar uma ação.
Ver Registrador 9-1. A saída de disparo de evento especial do
Nota: Limpar o registrador CCP1CON forçará o PCC ocorre imediatamente após uma partida entre os
RB3/CCP1 a comparar a informação travada (latched) na TMR1H, Par de registro TMR1L e registro CCPR1H,
saída com o nível baixo padrão (‘0’). Estes não são os CCPR1L par. O par de registros TMR1H, TMR1L não é
dados travados (latched). redefinido até que a próxima borda ascendente do relógio
TMR1. Isso permite que o Par de registro CCPR1 para ser
9.2.2 SELEÇÃO DE MODO DO TIMER1 efetivamente um registro de período programável de 16 bits
O Timer1 deve estar em execução no modo Timer ou no para Timer1. O evento especial A saída do gatilho também
modo Contador Sincronizado se o módulo CCP estiver inicia uma conversão A/D fornecida que o módulo A/D está
usando o recurso de comparação. No modo Contador habilitado.
Assíncrono, a operação de comparação pode não funcionar. Nota: Removendo a condição de correspondência
alterando o conteúdo do CCPR1H, CCPR1L registrar par
9.2.3 MODO DE INTERRUPÇÃO DO SOFTWARE entre a borda do relógio que gera o gatilho de evento
Quando gerar interrupção de software é escolhido o pino especial e a borda do relógio que gera o TMR1 A
CCP1 não é afetado. Somente uma interrupção CCP é gerada redefinição impedirá que a redefinição de ocorrendo.
(se estiver habilitada).

TABELA 9-2: REGISTRADORES ASSOCIADOS COM CAPTURA, COMPARAÇÃO E TIMER1

Legenda: x = desconhecido, u = não alterado, -=Não implementado Células com sombra, não usadas.

Página 057 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
9.3 Modo PWM Uma saída PWM (Figura 9-4) tem uma base de tempo
No modo Modulação por Largura de Pulso (PWM), o pino (período) e um tempo em que a voltagem do pulso permanece
CCP1 produz uma saída PWM com resolução de até 10 bits. alta (ciclo de trabalho). A freqüência do PWM é o inverso do
Uma vez que o pino CCP1 seja multiplexado com a trava período (freqüência = 1/período).
(latch) de dados PORTB, o bit TRISB<3> deve ser zerado
para configurar o CCP1 como saída. FIGURA 9-4: SAÍDA PWM

Nota: Se o registrador CCP1CON for setado em ‘0’, isso


forçará CCP1 como saída. Estes não são os dados de E/S
da trava (latch) PORTB.

A Figura 9-3 mostra um diagrama de blocos simplificado do


Módulo CCP em modo PWM. Para obter um procedimento
passo a passo sobre como configurar o CCP módulo para
operação PWM, consulte a Seção 9.3.3 “Configuração para
operação PWM”.

FIGURA 9-3:DIAGRAMA BLOCOS PWM SIMPLES

9.3.1 – PERÍODO PWM


O período PWM é especificado gravando no PR2
Registro. O período PWM pode ser calculado usando a
seguinte fórmula:

A frequência PWM é definida como 1/[período PWM].


Quando TMR2 é igual a PR2, os três eventos a seguir
Ocorrem no próximo ciclo de incremento: • TMR2 é
liberado • O pino CCP1 é definido (exceção: se o dever
PWM ciclo = 0%, o pino CCP1 não será definido) • O
ciclo de trabalho PWM é travado de CCPR1L em
CCPR1H.

Nota: O timer2 postscaler (ver Secção 8.0 "Timer2


Module") não é usado no determinação da
frequência PWM. O Postscaler poderia ser usado
para ter um servo taxa de atualização em uma
frequência diferente de a saída PWM.

Página 058 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
9.3.2 CICLO DE TRABALHO PWM Máxima Resolução PWM (em bits) para uma dada
O ciclo de trabalho do PWM é especificado gravando freqüência:
no Registro CCPR1L e nos bits do CCP1CON<5:4>.
Temos até uma resolução de 10 bits disponível: o
CCPR1L contém os oito MSBs e o CCP1CON contém
o dois LSBs. Esse valor de 10 bits é representado por
CCPR1L: CCP1CON<5:4>. A seguinte equação é
usada para calcular o ciclo de trabalho do PWM: Nota: Se o valor do ciclo de trabalho do PWM for
maior que o período PWM o pino CCP1 não será
zerado.
CCPR1L e CCP1CON podem ser gravados em Para estudar um exemplo de período PWM e ciclo de
qualquer momento, mas o valor do ciclo de trabalho trabalho, consulte o PIC® Mid-Range Reference
não estará travado no CCPR1H até depois de um Manual (DS33023).
casamento entre PR2 e TMR2 ocorrer (ou seja, quando
o período estiver completo). No modo PWM, CCPR1H 9.3.3 CONFIGURAÇÃO PARA OPERAÇÃO PWM
é um registrador somente de leitura. O registrador As seguintes etapas devem ser executadas ao configurar
CCPR1H e uma trava interna de 2 bits são usados para o módulo CCP para operação PWM:
bufferização (1) dupla do ciclo de trabalho do PWM. 1. Defina o período PWM escrevendo no PR2 Registro.
Esta dupla O bufferização é essencial para a operação 2. Defina o ciclo de trabalho do PWM gravando no
do PWM sem falhas. Quando o CCPR1H e a trava de 2 Registrador CCPR1L e bits CCP1CON<5:4>.
bits correspondem ao TMR2 concatenado com um 3. Faça do pino CCP1 uma saída, zerando o bit o
relógio Q interno de 2 bits ou 2 bits do prescaler TRISB<3>.
TMR2, o pino CCP1 é zerado. 4. Defina o valor do prescaler TMR2 e ative Timer2
escrevendo no T2CON.
TABELA 9-3: EXEMPLO DE FREQÜÊNCIAS PWM E RESOLUÇÕES ATÉ 20 MHz

TABELA 9-4: REGISTRADORES ASSOCIADOS COM PWM E TIMER2

Legenda: x =desconhecido, u = não alterado, -=Não implementado Células com sombra, não usadas por PWM ou Timer2.
Página 059 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G
PIC16F 627A / 628A / 648A
ANOTAÇÕES:

Página 060 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
10.0 MÓDULO COMPARADOR O registrador CMCON, mostrado no Registro 10-1,
O módulo comparador contém dois analógicos controla os multiplexadores de entrada e saída do
Comparadores. As entradas para os comparadores são comparador. Um bloco diagrama do comparador é
multiplexado com os pinos RA0 através de RA3. mostrado na Figura 10-1. O on-chip Referência de
tensão (Secção 11.0 "Referência de tensão Módulo")
também pode ser uma entrada para os comparadores.

REGISTRADOR 10-1: CMCON – REGISTRADOR DE CONFIGURAÇÃO DOS COMPARADORES (END. 01Fh)

bit 7 C2OUT: Comparador 2 bit de saída


Quando C2INV = 0: Quando C2INV = 1:
1 = C2 VIN+ > C2 VIN- 1 = C2 VIN+ < C2VIN-
0 = C2 VIN+ C2 VIN 0 = C2 VIN+ > C2 VIN-

bit 6 C1OUT: Comparador 1 bit de saída


Quando C1INV = 0: Quando CINV = 1:
1 = C1 VIN+ > C1 VIN- 1 = C1 VIN+ < C1VIN-
0 = C1 VIN+ C1 VIN 0 = C2 VIN+ > C1VIN-

bit 5 C2INV: Comparador 2 bit de inversão de saída


1 = Saída C2 invertida
0 = Saída C2 não invertida

bit 4 C1INV: Comparador 1 bit de inversão de saída


1 = Saída C1 invertida
0 = Saída C1 não invertida

bit 3 CIS: Bit do interruptor de entrada do comparador


Quando CM<2:0> : = 001
Então: 1 = C1 VIN- conecta-se ao RA3
0 = C1 VIN- conecta-se a RA0
Quando CM<2:0> : = 010
Então: 1 = C1 VIN- conecta-se ao RA3
C2 VIN- conecta-se ao RA2
0 = C1 VIN- conecta-se a RA0
C2 VIN- conecta-se ao RA1 bit 2-0 CM :
bits do modo comparador.

bit 2-0 CM<2:0> Bits do Modo Comparador


A figura 10-1 mostrará os modos com que o Comparador trabalha.

Legenda:
R = Bit Legível W = Bit Gravável U = Bit não implementado nesse Chip, ler como ‘0’
-n = Valor no POR ‘1’ Bit Ligado ‘0’ Bit Desligado x = Bit é desconhecido

Página 061 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
10.1 Configuração do Comparador Se o modo do Comparador for alterado, o nível de saída
do comparador pode não ser válido imediatamente, e
Há oito modos de operação para os comparadores. O
haver um retardo no resultado desejado.
registrador CMCON é usado para selecionar o modo
POR – Power-On Reset é o fenômeno comum de haver
desejado. O registrador TRISA controla a direção dos
uma reinicialização no Chip quando desligamos a
dados nos pinos do comparador para cada modo.
energia e a religamos.
FIGURA 10-1: MODOS DE OPERAÇÃO E/S DO COMPARADOR

Página 062 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
O exemplo de código 10-1 descreve as etapas necessárias para FIGURA 10-2: COMPARADOR SIMPLES
configurar o módulo Comparador. RA3 e RA4 são
configurados como saídas digitais. RA0 e RA1 são
configurados como as entradas V- e RA2 como a entrada V+
para ambos os comparadores.

EXEMPLO 10-1: INICIALIZAÇÃO DO MÓDULO


COMPARADOR

10.3.1 SINAL REFERÊNCIA EXTERNO Quando


referências de tensão externas são usadas, o módulo
comparador pode ser configurado para ter os comparadores
operando a partir da mesma ou de diferentes fontes de
referência. No entanto, as aplicações do detetor de limiar
(1) podem exigir a mesma referência. O sinal de referência
deve estar entre VSS e VDD, e pode ser aplicado a qualquer
pino do(s) comparador(es).

10.3.2 SINAL DE REFERÊNCIA INTERNO


O módulo Comparador também permite a seleção de um
referência de tensão gerada internamente para os
Comparadores. A Seção 11.0 "Referência de tensão
10.2 Operação do Comparador Módulo",contém uma descrição detalhada do módulo de
Um único comparador é mostrado na Figura 10-2 juntamente Tensão de Referência que fornece esse sinal. O sinal de
com a relação entre os níveis de entrada analógica e a saída referência interno é usado quando os comparadores estão no
digital. Quando a entrada analógica no VIN+ é menor do que a modo CM = 010 (Figura 10-1). Neste modo, a referência de
entrada analógica VIN-, a saída do comparador é um nível tensão interna é aplicada ao Pino VIN+ de ambos os
baixo (‘0). Quando a entrada analógica no VIN+ é maior que a comparadores.
entrada analógica VIN-, a saída do comparador é ‘1’. As áreas
sombreadas da saída do comparador na Figura 10-2
representam a incerteza devido a compensações de entrada e 10.4 Tempo de resposta do comparador
tempo de resposta. Consulte a Tabela 17-2 para tensão do O tempo de resposta é o tempo mínimo, depois de
Modo Comum. selecionar um nova tensão de referência ou fonte de
entrada, antes da saída do comparador disponibilizar um
10.3 Referência do comparador nível válido. Se a referência interna for alterada, deve se
Pode ser utilizado um sinal de referência externo ou interno levar em conta o atraso máximo que o fabricante coloca
dependendo do modo de operação do comparador. O sinal como deve ocorrer quando se utilizar o comparador de
analógico que está presente no VIN- é comparado ao sinal em saídas. Caso contrário, o atraso máximo dos comparadores
VIN+, e a saída digital do comparador ajustada em deve ser considerado (Tabela 17-2, página 142).
conformidade (Figura 10-2)
Detetor de Limiar (threshold detector) Um comparador é um componente eletrônico que
compara 2 tensões de entrada. Os comparadores são muito ligados aos amplificadores
operacionais, mas o comparador é projetado para operar com feedback positivo e com saída
definindo 1 ou 0 como resultado. O detector de limiar no caso é um amplificador operacional e
uma série de resistores proporcionando histerese. Falamos mais sobre histerese depois.

Página 063 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
10.5 Saídas dos Comparadores
As saídas do comparador são lidas através do CMCON
Registro. Esses bits são somente leitura. O comparador as
saídas também podem ser diretamente saídas para o RA3 e
RA4 Pinos de E/S. Quando o CM = 110 ou 001,
multiplexadores no caminho de saída do RA3 e
RA4/T0CK1/CMP2 os pinos serão alternados e a saída de
cada pino será o saída não sincronizada do comparador. O A
incerteza de cada um dos comparadores está relacionada com
o tensão de deslocamento de entrada e o tempo de resposta
dado no Especificações. A Figura 10-3 mostra a saída do
comparador diagrama de blocos. Os bits TRISA ainda
funcionarão como um habilitador de saída/ desativar para o
RA3/AN3/CMP1 e RA4/T0CK1/ Pinos CMP2 enquanto
estiver neste modo.

Nota 1: Ao ler o registro PORT, todos os pinos


configurado como entradas analógicas será lido como um
'0'. Pinos configurados como entradas digitais converter
uma entrada analógica, de acordo com o Especificação de
entrada Schmitt Trigger.
2: Níveis analógicos em qualquer pino definido
como uma entrada digital poderão causar um consumo
maior de corrente que o permitido nas especificações.
FIGURA 10-3: DIAGRAMA DE BLOCOS DA SAÍDA DE COMPARADOR MODIFICADA

Página 064 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
10.6 Interrupções dos Comparadores 10.7 Operação do comparador durante função Sleep
O sinalizador de interrupção do comparador é definido (Dormir)
sempre que houver uma alteração no valor de saída de Quando um comparador está ativo e o dispositivo é colocado
qualquer um dos comparadores. O software precisará manter no modo de suspensão, o comparador permanece ativo e o A
informações sobre o status dos bits de saída, conforme lido de interrupção é funcional se ativada. Essa interrupção será
CMCON, para Determine a alteração real que ocorreu. O O desative o dispositivo do modo de suspensão quando ativado.
bit CMIF, PIR1, é o sinalizador de interrupção do Enquanto o comparador está ligado, maior Sleep correntes do
comparador. O bit CMIF deve ser redefinido limpando '0'. que as mostradas na corrente de desligamento A especificação
Uma vez que é Também é possível escrever um '1' neste ocorrerá. Cada comparador que é operacional consumirá
registro, um simulado A interrupção pode ser iniciada. O bit corrente adicional, conforme mostrado em as especificações
CMIE (PIE1) e o bit PEIE (INTCON) deve ser definido para do comparador. Para minimizar a energia consumo enquanto
habilitar a interrupção. Em além disso, o bit GIE também estiver no modo de suspensão, desative os comparadores, CM
deve ser definido. Se qualquer um destes bits são claros, a = 111, antes de entrar no sono. Se o dispositivo desperta do
interrupção não está habilitada, embora o O bit CMIF ainda modo de suspensão, o conteúdo do O registro CMCON não é
será definido se ocorrer uma condição de interrupção. afetado.

Nota: Se houver alteração no cadastro do CMCON 10.8 Efeitos de uma redefinição


(C1OUT ou C2OUT) deve ocorrer quando um A operação Uma redefinição de dispositivo força o registro CMCON para
de leitura está sendo executada (início de o ciclo Q2), sua redefinição estado. Isso força o módulo Comparador a
depois o CMIF (PIR1) O sinalizador de interrupção pode estar no modo de reinicialização do comparador, CM = 000.
não ser definido. Isso garante que todas as entradas potenciais são entradas
analógicas. Dispositivo atual é minimizado quando as
O usuário, na rotina de interrupção do serviço, pode limpar o entradas analógicas estão presentes em Redefinir Hora. Os
interrompa da seguinte maneira: a) Qualquer escrita ou leitura comparadores serão desligados durante o Intervalo de
do CMCON. Isso encerrará o condição de incompatibilidade. redefinição.
b) Limpar bit de sinalizador CMIF. Uma condição de
incompatibilidade continuará a definir o bit de sinalizador 10.9 Conexão de entrada analógica
CMIF. A leitura do CMCON encerrará a condição de Considerações Um circuito simplificado para uma entrada
incompatibilidade e permitir que o bit de sinalizador CMIF analógica é mostrado em Figura 10-4. Uma vez que os pinos
seja limpo. analógicos são conectados a um saída digital, eles têm diodos
enviesados reversos para VDD e VSS. A entrada analógica,
portanto, deve estar entre VSS e VDD. Se a tensão de entrada
se desviar disso alcance por mais de 0.6V em qualquer
direção, um dos Os diodos são enviesados para a frente e
pode ocorrer uma trava. Um a impedância máxima da fonte
de 10 kΩ é recomendado para as fontes analógicas. Qualquer
externo componente conectado a um pino de entrada
analógica, como um capacitor ou um diodo Zener, deve ter
muito pouco corrente de fuga.

Página 065 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
FIGURA 10-4: MODO DE ENTRADA ANALÓGICA

TABELA 10-1: REGISTRADORES ASSOCIADOS COM MÓDULO COMPARADOR

Legenda: x = Desconhecido, u = Não Modificdo, - = Não Implementado, Lido como “0”.

Página 066 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
11.0 MÓDULO VOLTAGEM As equações usadas para calcular a saída do módulo de referência de tensão
REFERÊNCIA são os seguintes:
Se VRR = 1:
O módulo de Referência de Tensão consiste em
uma rede de 16 resistores em divisor de tensão
que fornece uma referência de tensão
selecionável. A rede de resistores é segmentada
para fornecer duas faixas de valores VREF e tem
uma função power-down para conservar energia
quando a referência não estiver sendo usada. O
registro VRCON controla a operação da Se VRR = 0:
referência, conforme mostrado na Figura 11-1. O
diagrama de blocos é apresentado na Figura 11-
1.

11.1 Configuração de Referência de


Tensão O tempo de ajuste do módulo de Referência de Tensão deve ser considerado
O módulo de referência de tensão pode produzir
ao alterar a saída do VREF (Tabela 17-3). O exemplo 11-1 demonstra como
16 níveis de tensão distintos para cada faixa.
a tensão referência é configurada para uma tensão de saída de 1,25V com
VDD = 5,0V.

REGISTRADOR 11-1: VRCON – REGISTRADOR DE CONTROLE DE VOLTAGEM DE REFERÊNCIA

Bit 7 VREN: Bit que habilita VREF


1 = Circuito VREF ligado
0 = Circuito VREF desligado.

Bit 6 VROE: Bit que habilita Saída VREF


1 = Saída VREF disponível no Pino RA2,
0 = Saída VREF desconectada do Pino RA2

Bit 5 VRR: Seleção da Faixa de VREF


1 = Faixa Baixa
0 = Faixa Alta

Bit 4 NÃO IMPLEMENTADO Lido como ‘0’

Bit 3-0 VR<3:0>: Bits de Seleção dos Valores de VREF, variando de 0 a 15. Trabalham conjugados com VRR.
Exemplos:
Quando VRR = 1: VREF = (VR<3:0> / 24) x VDD
Quando VRR = 0: VREF = 1/4 x VDD + (VR<3:0> / 32) x VDD

Legenda:
R = Bit Legível W = Bit Gravável U = Bit não implementado nesse Chip, ler como ‘0’
-n = Valor no POR ‘1’ Bit Ligado ‘0’ Bit Desligado x = Bit é desconhecido

Página 067 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
FIGURA 11-1: DIAGRAMA DE BLOCOS DA VOLTAGEM DE REFERÊNCIA

EXEMPLO 11-1: CONFIGURAÇÃO DE VOLTAGEM


DE REFERÊNCIA 11.5 Considerações sobre conexão
O módulo de Referência de Tensão opera de forma independente do
módulo Comparador. A saída do gerador de referência pode ser
conectada ao pino RA2 se o bit TRISA<2> for definido como ‘1’ e
o bit VROE, VRCON<6>, estiver em ‘1’ também.
Ativando a saída do módulo de referência de tensão no pino RA2
com um sinal na entrada aumentará o consumo. Conectando RA2
como uma saída digital com o VREF habilitado também aumentará
o consumo. O pino RA2 pode ser usado como saída D/A simples
com capacidade de acionamento limitada (baixa corrente de saída).
Devido à corrente limitada, um buffer deve ser usado em conjunto
com a saída do módulo de referência de tensão para conexões
externas ao VREF. Veja Figura 11-2.
11.2 Precisão/Erro da Voltagem de Referência
A gama completa de VSS a VDD não pode ser realizada devido à FIGURA 11-2: Amplificação de Saída (Buffering) da VREF
construção do módulo. Os transistores nas partes superior e inferior
da rede divisora de tensão com resistores (Figura 11-1) impedem que
o VREF se aproxime do VSS ou do VDD. O módulo de Referência
de Tensão é derivado de VDD e portanto, a saída do VREF muda
com as flutuações no VDD. A precisão absoluta testada do módulo de
Referência de Tensão pode ser encontrada na Tabela 17-3.

11.3 Operação durante o sono (Sleep)


Quando o dispositivo acorda do modo de suspensão através de uma
interrupção ou tempo limite do Timer do Watchdog, o conteúdo do
registro VRCON não é afetado. Para minimizar consumo de corrente
no modo de suspensão, o módulo de referência de tensão deverá ser
desativado.

11.4 Efeitos de uma redefinição


Um Reset no dispositivo desativa o módulo de referência de tensão
zerando o bit VREN (VRCON) e também desconecta a referência do
pino RA2 zerando o bit VROE (VRCON) e seleciona alta tensão
zerando os bits VRR (VRCON). Os bits de seleção de valor,
VRCON<3:0>, também são zerados.
TABELA 11-1 REGISTRADORES ASSOCIADOS COM A VOLTAGEM DE REFERÊNCIA - = Não implementado.

Página 068 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
ANOTAÇÕES

Página 069 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
12.0 MÓDULO TRANSMISSOR E A USART pode ser configurada nos seguintes modos:
RECEPTOR UNIVERSAL SÍNCRONO E • Assíncrono (full-duplex)
• Síncrono – Master (half-duplex)
ASSÍNCRONO (USART) • Síncrono – Escravo (half-duplex)
O Receptor e Transmissor Assíncrono Síncrono Universal O bit SPEN (RCSTA<7>) e os bits TRISB<2:1> precisam ser
(USART) também é conhecido como Interface Serial de configurados para que sejam ativados os pinos RB2/TX/CK e
Comunicação (SCI). A USART pode ser configurada como RB1/RX/DT como Receptor e Transmissor Assíncrono
um sistema assíncrono full-duplex que pode se comunicar Síncrono Universal. O registrador 12-1 mostra o status e o
com dispositivos periféricos, como terminais CRT e LCD e controle de transmissão pelo Registrador (TXSTA) e o
computadores pessoais, ou pode ser configurado como um Registrador 12-2 mostra o Registrador de Status e Controle de
sistema síncrono half-duplex que pode se comunicar com Recebimento (RCSTA).
dispositivos periféricos, como A/D ou circuitos integrados
D/A, EEPROMs I²C, etc.
REGISTRADOR 12-1: TXSTA CONTROLE E STATUS DE TRANSMISSÃO (End. 98h)

Bit 7 CSRC: Bit de Seleção da Fonte de Clock


Modo Assíncrono – Não se preocupar
Modo Síncrono
1 = Modo Mestre (Clock gerado internamente pelo BRG – Gerador de Baud Rate – ver próximo capítulo)
0 = Modo Escravo (Clock a partir de fonte externa de sinal)

Bit 6 TX9: Bit de habilitação da transmissão de 9 bits.


1 = Seleciona transmissão em 9 bits
0 = Seleciona transmissão em 8 bits

Bit 5 TXEN: Bit de Habilitação da Transmissão(1)


1 = Transmissão habilitada
0 = Transmissão desabilitada

Bit 4 SYNC: Bit de Seleção do Modo USART


1 = Modo Síncrono
0 = Modo Assíncrono

Bit 3 Não Implementado. Será lido como ‘0’.

Bit 2 BRGH: Bit de Seleção do Baud Rate Alto


Modo Assíncrono
1 = Alta velocidade
0 = Baixa velocidade

Bit 1 TRMT: Bit de Status do Registrador de Deslocamento da Transmissão


1 = TSR Vazio
0 = TSR Cheio

Bit 0 TX9D: 9º Bit de Transmissão de Dados. Pode ser o bit de paridade.

Legenda:
R = Bit Legível W = Bit Gravável U = Bit não implementado nesse Chip, ler como ‘0’
-n = Valor no POR ‘1’ Bit Ligado ‘0’ Bit Desligado x = Bit é desconhecido

Página 070 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
12.1 Gerador de Taxa de Transmissão (BRG) EQUAÇÃO 12-1: CÁLCULO ERRO NA TAXA
O BRG suporta tanto o modo Assíncrono quanto o DE TRANSMISSÂO
Síncrono da USART. É um Gerador de taxa de
transmissão de 8 bits. O registrador SPBRG Controla
o período de um temporizador de 8 bits em execução
livre. Em Modo assíncrono, o bit BRGH
(TXSTA<2>) também controla a taxa de
transmissão. No modo síncrono, o bit BRGH é
ignorado. A Tabela 12-1 mostra a fórmula para
cálculo da taxa de transmissão para diferentes modos
de USART, que só se aplicam no modo Mestre
(clock interno).
Dada a taxa de transmissão desejada e o clock do
microcontrolador FOSC, o valor inteiro mais
próximo para o registrador SPBRG pode ser
calculado utilizando a fórmula da Tabela 12-1. A
partir disso, o erro na taxa de transmissão pode ser
determinado. Pode ser vantajoso usar alta taxa de transmissão
O exemplo 12-1 mostra o cálculo do erro da taxa de (BRGH=1) mesmo para clocks com taxas mais lentas. Isso
transmissão para as seguintes condições: porque a equação FOSC/(16(X + 1)) pode reduzir o erro na
FOSC = 16 MHz taxa de transmissão em alguns casos.
Taxa de transmissão desejada = 9600 Gravar um novo valor no registrador SPBRG faz com que
BRGH = 0 o Temporizador BRG a ser redefinido (zerado) e garante o
SINCRONIZAÇÃO (SYNC) = 0 BRG não vai receber um estouro de temporizador antes que
estabilize a saída com a nova taxa de transmissão.
Os dados no pino RB1/RX/DT são amostrados três vezes
por uma maioria detectar circuito para determinar se um
nível alto ou baixo está presente no pino RX.

TABELA 12-1: FÓRMULA DE TAXA DE TRANSMISSÃO

TABELA 12-2: REGISTRADORES ASSOCIADOS AO GERADOR DE TAXA DE TRANSMISSÃO

Legenda: x = desconhecido, - = Não implementado, lido como ‘0’, Células sombreadas não são usadas para o BRG.

Página 071 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
TABELA 12-3: TAXAS DE TRANSMISSÃO NO MODO SÍNCRONO

Página 072 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
TABEÇA 12-4: TAXAS DE TRANSMISSÃO NO MODO ASSÍNCRONO (BRGH = 0)

Página 073 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
TABELA 12-5: TAXAS DE TRANSMISSÃO NO MODO ASSÍNCRONO (BRGH = 1)

Página 074 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
A transmissão é ativada através da definição para ‘1’ do bit de
12.2 Mode Assíncrono da USART ativação TXEN (TXSTA<5>). A transmissão efetiva não
Nesse modo, o USART usa o formato NRZ (não-retorna-a- ocorrerá até que o registo TXREG tenha sido carregado com
zero) padrão (um bit inicial, oito ou nove bits de dados e um dados e o gerador de taxa de transmissão (BRG) tenha
bit de parada - Stop Bit). O formato de dados mais comum é 8 produzido um clock de deslocamento (Figura 12-1). A
bits. Um gerador de taxa de transmissão dedicado de 8 bits é transmissão também pode ser iniciada carregando primeiro o
usado para coletar frequências de taxa de transmissão do registo TXREG e depois e depois definindo o bit de ativação
oscilador. O USART transmite e recebe o LSb primeiro. O TXEN em ‘1’. Normalmente, quando a transmissão é iniciada
transmissor e o receptor da USART são funcionais de forma pela primeira vez, o registrador TSR estará vazio, pelo que
independente, mas usam o mesmo formato de dados e baud uma transferência para o registrador TXREG resultará numa
taxa. O gerador de taxa de transmissão produz um relógio x16 transferência imediata para o TSR, resultando num TXREG
ou x64 da taxa de deslocamento de bits, dependendo do bit vazio. Assim, é possível uma transferência consecutiva
BRGH (TXSTA<2>). A paridade não é suportada pelo (Figura 12-3). Zerar o bit de ativação o bit de ativação TXEN
hardware, mas pode ser implementado em software (e durante uma transmissão fará com que a transmissão seja
armazenado como o nono bit de dados). abortada e reiniciará o transmissor. Como resultado, o pino
O modo assíncrono é interrompido durante o modo Sleep RB2/TX/CK reverterá para alta impedância.
(Dormir). O modo assíncrono é selecionado zerando o bit Para selecionar a transmissão de 9 bits, o bit de transmissão
SYNC (TXSTA<4>). O módulo assíncrono USART consiste TX9 (TXSTA<6>) devef ser colocado em ‘1’ e o nono bit
nos quatro seguintes elementos importantes: deverá ser escrito em TX9D (TXSTA<0>). O nono bit deve
• Gerador de Baud Rate ser escrito antes de escrever os dados de 8 bits no registrador
• Circuito de Amostragem TXREG . Isto deve-se ao fato de uma escrita de dados no
• Transmissor Assíncrono registrador TXREG poder resultar numa transferência
• Receptor Assíncrono imediata dos dados para o registrador TSR (se o TSR estiver
vazio). Nesse caso, um nono bit de dados incorreto pode ser
12.2.1 TRANSMISSOR ASSÍNCRONO DA USART carregado no registrador TSR.
O diagrama de blocos do transmissor USART é mostrado na
Figura 12-1. O coração do transmissor é o Transmit (serial)
Registrador de Deslocamento – Shift-Register (TSR). O
Registrador de Deslocamento obtém seus dados do buffer de
transmissão de leitura/gravação, TXREG. O registrador
TXREG é carregado com dados via software. O registro TSR
não é carregado até que o bit Stop tenha sido transmitido da
carga de dados anterior. Assim que o Stop bit é transmitido, o
TSR é carregado com novos dados de o registro TXREG (se
disponível). Uma vez o TXREG transfere os dados para o
registro TSR (ocorre em um TCY), o registro TXREG está
vazio e isso causa o bit TXIF (PIR1<4>) ir para nível ‘1’.
Esta interrupção pode ser ativada/desabilitada ao se mudar o
bit TXIE (PIE1<4>) para ‘1’ ou ‘0’. O bit de sinalizador
TXIF será definido independentemente do estado do bit de
habilitação TXIE e não pode ser zerado via software. Ele será
redefinido somente quando novos dados forem carregados em
o registro TXREG. Enquanto o bit de sinalizador TXIF
indicou o status do registro TXREG, outro bit TRMT
(TXSTA) mostra o status do registro TSR. O bit de status
TRMT é um bit somente leitura que é definido quando o O
registro TSR está vazio. Nenhuma lógica de interrupção está
ligada a isso bit, então o usuário tem que sondar esse bit para
determinar se o registro TSR estiver vazio.
Nota 1: O registo TSR não está mapeado nos dados
memória para que não esteja disponível para o usuário. 2:
Sinalizar bit TXIF é definido quando ativar bit TXEN está
definido.

Página 075 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
FIGURA 12-1: DIAGRAMA DE B LOCOS TRANSMISSÃO USART

Siga estes passos quando estiver configurando uma transmissão assíncrona:


1. TRISB<1> e TRISB<2> devem ser ambos definidos para '1' afim de configurar os pinos RB1/RX/DT e RB2/TX/CK
como entradas. O acionamento da saída, quando necessário, é é controlado pelo circuito periférico.

2. Inicializar o registrador SPBRG para a taxa de transmissão apropriada. Se for desejada uma taxa de transmissão de
alta velocidade, ajuste o bit BRGH. (Secção 12.1 "Gerador de taxa de baud Gerador de Taxa de Baud (BRG)").

3. Habilite a porta serial assíncrona zerando o bit SYNC e definindo o bit SPEN.

4. Se forem desejadas interrupções, colocar ‘1’ no bit de ativação TXIE.

5. Se for pretendida uma transmissão de 9 bits, colocar ‘1’ no bit de transmissão bit TX9.

6. Coloque ‘1’ no bit TXEN, de forma a ativar a transmissão, o que também irá colocar em ‘1’ o bit TXIF.

7. Se for selecionada a transmissão de 9 bits, o nono bit deve ser carregado no bit TX9D.

8. Carregar dados para o registrador TXREG (inicia a transmissão).

FIGURA 12-2: TRANSMISSÃO ASSÍNCRONA

Página 076 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
FIGURA 12-3: TRANSMISSÃO ASSÍNCRONA CONSECUTIVA

TABELA 12-6: REGISTRADORES ASSOCIADOS COM TRANSMISSÃO ASSÍNCRONA

Legenda: x = desconhecido, - = Não implementado, lido como ‘0’.


Células sombreadas não são usadas em Transmissão Assíncrona.

Página 077 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
12.2.2 RECEPTOR ASSÍNCRONO USART É possível que dois bytes de dados sejam recebidos e
O diagrama de blocos do receptor é mostrado na Figura 12-4. transferidos para o RCREG FIFO e um terceiro byte comece a
Os dados são recebidos no pino RB1/RX/DT e acionam o se deslocar para o registrador RSR. Na detecção do bit de
bloco de recuperação de dados. O bloco de recuperação de parada bit de parada do terceiro byte, se o registro RCREG
dados é na verdade, um shift-register de alta velocidade que ainda estiver cheio, o bit de erro de overrun OERR
opera a x16 vezes a taxa de transmissão, enquanto o principal (RCSTA<1>) será ativado para ‘1’. A palavra no RSR será
shift-register serial de recepção opera na taxa de bits ou n perdida. O registro RCREG pode ser lido duas vezes para
freqüência do FOSC. recuperar os dois bytes no FIFO. O bit de overrun OERR
Quando o modo assíncrono é selecionado, a recepção é deve ser zerado via software. Isso é feito reiniciando a lógica
ativada pela subida do bit CREN (RCSTA<4>) para ‘1’. de recepção (CREN é zerado e depois subido par ‘1’). Se o bit
O coração do receptor é o registro de deslocamento de OERR estiver em ‘1’, as transferências do registrador RSR
recepção (serial) (RSR). Após a amostragem do bit de parada, para o registrador RCREG serão inibidas, portanto, é
os dados recebidos no RSR são transferidos para o registro essencial zerar o bit de erro OERR se ele estiver em nível ‘1’.
RCREG (se ele estiver vazio). Se a transferência for O bit de erro de enquadramento FERR (RCSTA<2>) é
concluída, o bit de sinalização RCIF (PIR1<5>) vai para ‘1’. definido se um bit de parada for detectado como ‘0’. O bit
A interrupção real pode ser ativada/desativada colocando o bit FERR e o 9º bit de recepção são armazenados em buffer da
de ativação RCIE (PIE1<5>) em ‘1’ ou ‘0’. mesma forma que os dados de recepção. A leitura do RCREG
O bit de sinalização RCIF é um bit somente de leitura, que é carregará os bits RX9D e FERR com novos valores, portanto,
zerado pelo hardware. Ele é zerado quando o registro RCREG é essencial que o usuário leia o registro RCSTA antes de ler o
tiver sido lido e estiver vazio. O RCREG é um registro com registro RCREG para para não perder as informações antigas
buffer duplo (ou seja, é um FIFO de duas profundidades). de FERR e RX9D.
FIGURA 12-4: DIAGRAMA DE BLOCOS RECEPÇÃO USART

Página 078 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
FIGURA 12-5: RECEPÇÃO ASSÍNCRONA COM DETEÇÃO DE ENDEREÇO

FIGURA 12-6: RECEPÇÃO ASSÍNCRONA COM PRIMEIRO BYTE DE ENDEREÇO

FIGURA 12-7: RECEPÇÃO ASSÍNCRONA COM PRIMEIRO BYTE SEGUIDO POR VÁLIDO

Página 079 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
Siga estas etapas ao configurar uma recepção assíncrona:
1. TRISB<1> e TRISB<2> devem ser definidos como '1'
para configurar os pinos RB1/RX/DT e RB2/TX/CK como
entradas. O acionamento da saída, quando necessário, é
controlado pelo circuito periférico.
2. Inicialize o registro SPBRG para a taxa de transmissão
taxa de transmissão apropriada. Se for desejada uma taxa
de transmissão de alta velocidade, defina o bit BRGH.
(Seção 12.1 "Gerador de taxa de transmissão USART
(BRG)").
3. Habilite a porta serial assíncrona desmarcando o o bit
SYNC e definindo o bit SPEN.
4. Se desejar interrupções, defina o bit de habilitação
RCIE.
5. Se desejar receber 9 bits, defina o bit RX9.
6. Habilite a recepção definindo o bit CREN.
7. O bit de sinalização RCIF será definido quando a
recepção for recepção estiver concluída e uma interrupção
será gerada se o se o bit de ativação RCIE estiver definido.
8. Leia o registro RCSTA para obter o nono bit (se
ativado) e determinar se ocorreu algum erro durante a
recepção.
9. Leia os dados recebidos de 8 bits lendo o registrador
RCREG.
10. Se tiver ocorrido um erro OERR, limpe o erro zerando
o bit de habilitação CREN.

TABELA 12-7: REGISTRADORES ASSOCIADOS COM RECEPÇÃO ASSÍNCRONA

Legenda: x = desconhecido, -= Não implementado, será lido como ‘0’, Campos sombreados não são usados na recepção.

Página 080 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
12.3 Função de detecção de endereço USART Se outro byte for deslocado para o registro RSR, o byte
de dados anterior será perdido O bit ADEN só terá
12.3.1 RECEPTOR USART DE 9 BITS COM efeito quando o receptor estiver configurado no modo
DETECÇÃO DE ENDEREÇO de 9 bits (RX9 = 1). Quando ADEN está desativado (=
0), todos os bytes de dados são recebidos e o 9º bit pode
Quando o bit RX9 é definido no registro RCSTA, 9 bits ser usado como bit de paridade. O diagrama de blocos
são recebidos e o nono bit é colocado no bit RX9D do de recepção é mostrado na Figura 12-4. A recepção é
registrador RCSTA. O módulo USART tem disposição ativada pondo bit CREN (RCSTA<4>) em ‘1’.
especial para comunicação com vários processadores.
A comunicação com o multiprocessador é ativada pela 12.3.1.1 Configuração do modo de 9 bits com
configuração do bit ADEN (RCSTA<3>) junto com o detecção de endereço
bit RX9. A porta agora está programada de forma que, Siga estas etapas para recepção assíncrona com
quando o último bit for recebido, o conteúdo do detecção de endereço ativada:
Registrador de deslocamento de recepção (RSR) seja 1. TRISB<1> e TRISB<2> devem ser definidos como
transferido para o buffer de recepção, o nono bit do '1' para configurar os pinos RB1/RX/DT e RB2/TX/CK
RSR (RSR<8>) é transferido para RX9D, e a como entradas. O acionamento da saída, quando
interrupção de recepção é ativada se e somente se necessário, é controlado pelo circuito periférico.
RSR<8> = 1. 2. Inicialize registro SPBRG para a taxa de transmissão
Esse recurso pode ser usado em um sistema apropriada. Se for desejada uma taxa de transmissão de
multiprocessador da seguinte forma: Um processador alta velocidade, defina o bit BRGH.
mestre pretende transmitir um bloco de dados para um 3. Habilite a comunicação assíncrona colocando ‘1’ ou
dos muitos escravos. Ele deve primeiro enviar um byte ‘0’ no bit SYNC e definindo o bit SPEN.
de endereço que identifique o escravo de destino. Um 4. Se desejar interrupções, coloque ‘1’ no bit de
byte de endereço é identificado pela definição do nono habilitação RCIE.
bit (RSR<8>) como "1" (em vez de "0" para um byte de 5. Ponha ‘1’ no bit RX9 para habilitar recepção 9 bits.
dados). Se os bits ADEN e RX9 estiverem definidos no 6. Defina ADEN para habilitar a detecção de endereço.
registrador RCSTA do escravo, permitindo a 7. Habilite a recepção configurando o bit de habilitação
comunicação multiprocessador, todos os bytes de dados CREN ou SREN.
serão ignorados. Entretanto, se o 9º bit recebido for 8. O bit de sinalização RCIF será definido quando a
igual a '1', indicando que o byte recebido é um recepção estiver concluída e uma interrupção será
endereço, o escravo será interrompido e o conteúdo do gerada se o bit de ativação RCIE estiver definido.
registro RSR será transferido para o buffer de recepção. 9. Leia os dados recebidos de 8 bits lendo o registrador
Isso permite que o escravo seja interrompido somente RCREG e saberá se dispositivo está sendo endereçado.
por endereços, de modo que ele possa examinar o byte 10. Se tiver ocorrido um erro OERR, limpe o erro
recebido para ver se está sendo endereçado. O escravo zerando o bit de habilitação CREN, se já tiver ‘1’.
endereçado limpa seu bit ADEN e se prepara para 11. Se o dispositivo tiver sido endereçado (RSR<8> =
receber bytes de dados do mestre. Quando ADEN está 1)com a correspondência de endereços ativada), limpe
ativado (= 1), todos os bytes de dados são ignorados. os bits ADEN e RCIF para permitir que os bytes de
Após o bit de parada, os dados não são carregados no dados e de endereço bytes de dados e bytes de endereço
buffer de recepção e nenhuma interrupção ocorre. sejam lidos no buffer de recepção e interromper a CPU.
TABELA 12-8: REGISTRADORES ASSOCIADOS COM RECEPÇÃO ASSÌNCRONA

Página 081 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
12.4 Modo Mestre Síncrono da USART Normalmente, quando a transmissão é iniciada pela primeira
No modo Mestre Síncrono os dados são transmitidos em half- vez, o registrador TSR está vazio, portanto, uma transferência
duplex (ou seja, a transmissão e a recepção não ocorrem ao para o registrador TXREG resultará em uma transferência
mesmo tempo). Durante a transmissão de dados, a recepção é imediata para o TSR, resultando em um TXREG vazio.
inibida e vice-versa. O modo síncrono é acessado com a Transferências consecutivas
configuração do bit SYNC (TXSTA<4>). Além disso, o bit são possíveis.Zerar o bit de ativação TXEN durante uma
de habilitação SPEN (RCSTA<7>) é colocado em ‘1’ para transmissão fará com que a transmissão seja abortada e
configurar os pinos de E/S RB2/TX/CK e RB1/RX/DT para reinicializará o transmissor. Os pinos DT e CK serão
linhas CK (clock) e DT (dados), respectivamente. O modo O revertidos para alta impedância. Se o bit CREN ou o bit
modo mestre indica que o processador transmite o clock SREN for definido durante uma transmissão, a transmissão
mestre na linha CK. O modo Master é ativado com a será abortada e o pino DT voltará ao estado de alta
configuração do bit CSRC (TXSTA<7>) em ‘1’. impedância (para uma recepção).
O pino CK permanecerá como saída se o bit CSRC estiver em
12.4.1 MESTRE SÍNCRONO USART TRANSMISSÃO ‘1’ (clock interno). Entretanto, a lógica do transmissor não é
O diagrama de blocos do transmissor USART é mostrado na reiniciada, embora esteja desconectada dos pinos. Para
Figura 12-1. O coração do transmissor é o Registro de reinicializar o transmissor, o usuário deve zerar o bit TXEN.
deslocamento de transmissão (serial) (TSR). O registro de Se o bit SREN estiver definido (para interromper uma
deslocamento obtém seus dados do registro do buffer de transmissão em andamento e receber uma única palavra),
transmissão de leitura/gravação, TXREG. O registro TXREG depois que a única palavra for recebida, o bit SREN será
é carregado com dados no software. O registro TSR não é apagado e a porta serial voltará a transmitir, já que o bit
carregado até que o último bit tenha sido transmitido da carga TXEN ainda está definido.
anterior. Assim que o último bit é transmitido, o TSR é A linha DT mudará imediatamente do modo de recepção de
carregado com novos dados do TXREG (se disponível). alta impedância para transmissão e começará a conduzir. Para
Assim que o registro registro TXREG transfere os dados para evitar isso, o bit TXEN deve ser desmarcado.
o registro TSR (ocorre em um ciclo T), o TXREG fica vazio e Para selecionar a transmissão de 9 bits, o bit TX9
o bit de interrupção, TXIF (PIR1<4>), vai para ‘1’. A (TXSTA<6>) deve ser definido e o nono bit deve ser gravado
interrupção pode pode ser ativada/desativada colocando-se o no bit TX9D (TXSTA<0>). O nono bit deve ser gravado
bit de ativação TXIE (PIE1<4>) em ‘1’ ou ‘0’. antes de gravar os dados de 8 bits no registro TXREG. Isso
O bit de sinalização TXIF será definido independentemente ocorre porque uma gravação de dados no registro TXREG
do estado do bit de ativação TXIE e não pode ser apagado por pode resultar em uma transferência imediata dos dados para o
software. Ele será redefinido somente quando novos dados registro TSR (se o TSR estiver vazio). Se o TSR estiver vazio
forem carregados no registrador TXREG. Enquanto o bit de e o o TXREG foi gravado antes da gravação do "novo"
sinalização TXIF indica o status do registro TXREG, outro bit TX9D, o valor "atual" do bit TX9D será carregado.
TRMT (TXSTA<1>) mostra o status do registro TSR.
O TRMT é um bit somente de leitura que é definido quando o Siga estas etapas ao configurar Transmissão Mestre Síncrona:
TSR está vazio. Nenhuma lógica de interrupção está ligada a 1. TRISB<1> e TRISB<2> devem ser definidos como '1' para
esse bit, portanto, o usuário precisa pesquisar esse bit para configurar os pinos RB1/RX/DT e RB2/TX/CK como
determinar se o registro TSR está vazio. O TSR não é entradas. O acionamento da saída, quando necessário, é
mapeado na memória de dados de dados, portanto, não está controlado pelo circuito periférico.
disponível para o usuário.
A transmissão é ativada com a configuração do bit de 2. Inicialize o registro SPBRG para a taxa de transmissão taxa
ativação TXEN (TXSTA<5>). A transmissão real não de baud apropriada (Seção 12.1 "Gerador de taxa de baud
ocorrerá até que o registro TXREG tenha sido carregado com Gerador de taxa de transmissão (BRG)").
dados. O primeiro bit de dados será deslocado na próxima
borda ascendente disponível do clock na linha CK. A saída de 3. Habilite a porta serial mestre síncrona configurando os bits
dados é estável em torno da borda de descida do clock configurando os bits SYNC, SPEN e CSRC.
síncrono (Figura 12-8). A transmissão também pode ser 4. Se desejar interrupções, defina o bit de habilitação TXIE.
iniciada primeiro carregando o registro TXREG e, em 5. Se desejar uma transmissão de 9 bits, defina o bit TX9.
seguida, pondo o bit TXEN em ‘1’ (Figura 12-9). Isso é 6. Habilite a transmissão definindo o bit TXEN.
vantajoso quando são selecionadas taxas de baud lentas, já 7. Se a transmissão de 9 bits for selecionada, o nono bit
que o BRG é mantido em Reset quando os bits TXEN, CREN deverá ser carregado no bit TX9D.
e SREN estão desmarcados. A configuração do bit de 8. Inicie cada transmissão carregando os dados no registro
ativação TXEN iniciará o BRG, criando um shift clock registro TXREG
imediatamente.

Página 082 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
TABELA 12-9: REGISTRADORES ASSOCIADOS COM TRANSMISSÃO MESTRE SÍNCRONA

FIGURA 12-8: TRANSMISSÃO SÍNCRONA

Página 083 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
12.4.2 RECEPÇÃO MESTRE SÍNCRONA USART Siga estas etapas ao configurar uma recepção mestre síncrona
Quando o modo síncrono é selecionado, a recepção é ativada Master Reception:
com a passagem do bit de ativação SREN (RCSTA<5>) ou o 1. TRISB<1> e TRISB<2> devem ser definidos como
bit de ativação CREN (RCSTA<4>) para ‘1’. '1' para configurar os pinos RB1/RX/DT e RB2/TX/CK
Os dados são amostrados no pino RB1/RX/DT na borda como entradas. O acionamento da saída, quando necessário, é
descendente do clock. Se o bit de ativação SREN estiver controlado pelo circuito periférico.
definido, apenas uma única palavra é recebida. Se o bit de 2. Inicialize o registro SPBRG para a taxa de transmissão
ativação CREN estiver definido, a recepção será contínua até taxa de transmissão apropriada. (Seção 12.1 "Gerador de taxa
que CREN seja desmarcado. Se ambos os bits estiverem de baud
definidos, CREN terá precedência. Após o clocking do último Gerador de taxa de transmissão (BRG)").
bit, os dados recebidos no Receive Shift Register (RSR) são 3. Habilite a porta serial mestre síncrona configurando os
transferidos para o registro RCREG (se ele estiver vazio). configurando os bits SYNC, SPEN e CSRC.
Quando a transferência é concluída, o bit de sinalização de 4. Certifique-se de que os bits CREN e SREN estejam limpos.
interrupção RCIF (PIR1<5>) é definido. A interrupção real 5. Se desejar interrupções, defina o bit de habilitação
pode ser pode ser ativada/desativada com a RCIE.
configuração/limpeza do bit de ativação RCIE (PIE1<5>). 6. Se desejar receber 9 bits, defina o bit RX9.
O bit de sinalização RCIF é um bit somente de leitura que é 7. Se for necessária uma única recepção, defina o bit SREN.
redefinido pelo hardware. Nesse caso, ele é redefinido quando Para recepção contínua, defina o bit CREN.
o registro RCREG tiver sido lido e estiver vazio. O RCREG é 8. O bit de sinalização de interrupção RCIF será definido
um registro com buffer duplo (ou seja, é um FIFO de dois quando a recepção
passos). É possível que dois bytes de dados sejam recebidos e recepção estiver concluída e uma interrupção será gerada se o
transferidos para o RCREG FIFO e um terceiro byte comece a se o bit de habilitação RCIE estiver definido.
ser transferido para o registro RSR. No clocking do último bit 9. Leia o registro RCSTA para obter o nono bit (se
do terceiro byte, se o registro RCREG ainda estiver cheio, habilitado) e determinar se ocorreu algum erro
então o bit de erro de overrun OERR (RCSTA<1>) é durante a recepção.
definido. A palavra no RSR será perdida. 10. Leia os dados recebidos de 8 bits lendo o registro
O registro RCREG pode ser lido duas vezes para recuperar os RCREG.
dois bytes no FIFO. O bit OERR deve ser apagado no 11. Se tiver ocorrido um erro OERR, limpe o erro
software (limpando o bit CREN). Se o bit OERR estiver limpando o bit CREN.
definido, transferências do RSR para o RCREG serão
inibidas, portanto, é essencial zerar o bit OERR se ele estiver
definido. O nono bit de recepção é armazenado em buffer da
mesma forma que os dados de recepção. A leitura do registro
RCREG carregará o bit RX9D com um novo valor, portanto,
é essencial que o usuário ler o registro RCSTA antes de ler o
RCREG para para não perder as informações antigas do
RX9D.
TABELA 12-10: REGISTRADORES ASSOCIADOS COM RECEPÇÃO MESTRE SÌNCRONA.

Página 084 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
FIGURA 12-10: RECEPÇÃO SÍNCRONA (MODO MESTRE, SREN)

12.5 Modo Escravo USART Siga estas etapas ao configurar uma transmissão síncrona
O modo escravo síncrono difere do modo mestre no fato de Síncrona:
que o clock de deslocamento é fornecido externamente no 1. TRISB<1> e TRISB<2> devem ser definidos como '1' para
pino RB2/TX/CK (em vez de ser fornecido internamente configurar os pinos RB1/RX/DT e RB2/TX/CK como
como no modo mestre). Isso permite que o dispositivo entradas. O acionamento da saída, quando necessário, é
transfira ou receba dados enquanto estiver no modo de controlado pelo circuito periférico.
suspensão.
O modo escravo é ativado zerando o bit CSRC (TXSTA<7>). 2. Habilite a porta serial escrava síncrona definindo os bits
SYNC e SPEN e limpando o bit CSRC.
12.5.1 ESCRAVO SÍNCRONO USART TRANSMISSÃO
A operação dos modos mestre e escravo síncronos é idêntica, 3. Limpe os bits CREN e SREN.
exceto no caso do modo Sleep. Se duas palavras forem
gravadas no TXREG e, em seguida, a instrução SLEEP for 4. Se desejar interrupções, defina o bit de habilitação TXIE.
executada, ocorrerá o seguinte:
a) A primeira palavra será imediatamente transferida para o 5. Se desejar uma transmissão de 9 bits, defina o bit TX9.
registrador TSR e será transmitida.
b) A segunda palavra permanecerá no registrador TXREG. 6. Habilite a transmissão definindo o bit de habilitação
c) O bit de sinalização TXIF não será definido. TXEN.
d) Quando a primeira palavra tiver sido deslocada para fora
do TSR, o registrador TXREG transferirá a segunda palavra 7. Se a transmissão de 9 bits for selecionada, o nono bit
para o TSR e o bit de sinalização TXIF será agora definido. deverá ser carregado no bit TX9D.
e) Se o bit de habilitação TXIE for definido, a interrupção
despertará o chip do modo Sleep e, se a interrupção global 8. Inicie a transmissão carregando os dados no registro
estiver ativada, o programa desviará para o vetor de TXREG registro.
interrupção (0004h). Maiores detalhes na seção 10.6

Página 085 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
12.5.2 RECEPÇÃO ESCRAV SÍNCRONA USART 2. Habilite a porta serial mestre síncrona configurando os bits
A operação dos modos Síncronos Mestre e Escravo é idêntica, colocando ‘1’ nos bits SYNC e SPEN e ‘0’ no bit CSRC.
exceto no caso do modo Sleep. Além disso, o bit SREN passa
a ser um bit "não se importe com ele" no modo Escravo. 3. Se desejar interrupções, defina o bit de habilitação RCIE.
Se a recepção for ativada pela configuração do bit CREN
antes da instrução SLEEP, uma palavra poderá ser recebida 4. Se desejar receber 9 bits, defina o bit RX9.
durante o modo Sleep.
Ao receber completamente a palavra, o registrador RSR 5. Para habilitar a recepção, defina o bit de habilitação CREN.
transferirá os dados para o registrador RCREG e, se o bit de
ativação RCIE estiver definido, a interrupção gerada 6. O bit de sinalização RCIF será definido quando a recepção
despertará o chip do modo de suspensão. Se a interrupção estiver concluída e uma interrupção será gerada, se o bit de
global estiver ativada, o programa desviará para o vetor de ativação RCIE estiver em ‘1’.
interrupção (0004h). Vide seção 10.6 – Interrupções. 7. Leia o registrador RCSTA para obter o 9º bit (se ativado) e
determinar se ocorreu algum erro durante a recepção.
Siga as etapas a seguir quando for configurar uma recepção 8. Leia os dados recebidos de 8 bits lendo o registrador
síncrona no modo escravo: RCREG.
1. TRISB<1> e TRISB<2> devem ser definidos como '1' para 9. Se tiver ocorrido um erro OERR, limpe o erro zerando o bit
configurar os pinos RB1/RX/DT e RB2/TX/CK como CREN.
entradas. O acionamento da saída, quando necessário, é
controlado pelo circuito periférico.

TABELA 12-11: REGISTRADORES ASSOCIADOS COM TRANSMISSÃO ESCRAVA SÍNCRONA

Legenda: x = desconhecido, - = não implementado, ler como ‘0’. Sombreados não são usados nessa modalidade.

TABELA 12-12: REGISTRADORES ASSOCIADOS COM RECEPÇÃO ESCRAVA SÍNCRONA

Legenda: x = desconhecido, - = não implementado, ler como ‘0’. Sombreados não são usados nessa modalidade.

Página 086 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
13.0 MEMÓRIA DE DADOS EEPROM O dispositivo PIC16F648A tem 256 bytes de EEPROM de
A memória de dados da EEPROM pode ser lida e gravada dados com uma faixa de endereços de 0h a 7Fh.
durante a operação normal (faixa completa de VDD). Essa A memória de dados EEPROM permite leitura e gravação de
memória não é mapeada diretamente no espaço do arquivo de bytes. Uma gravação de byte apaga automaticamente o
registro. Em vez disso, ela é endereçada indiretamente por conteúdo do local acessado e grava os novos dados (apagar
meio dos registradores de função especial diversos. antes de gravar). A memória de dados da EEPROM é
Há quatro registradores de funções especiais (SFRs) usados classificada para altos ciclos de apagamento/gravação.
para ler e gravar essa memória. Esses registros são: O tempo de gravação é controlado por um temporizador no
chip e varia de acordo com a tensão e a temperatura, bem
- EECON1 como de chip para chip. Consulte as especificações de CA
- EECON2 (não é um registro implementado fisicamente) para obter limites exatos.
- EEDATA Quando o dispositivo está protegido por código, a CPU pode
- EEADR continuar a ler e gravar a memória EEPROM de dados, mas
qualquer programador do dispositivo não pode mais acessar
EEDATA contém os dados de 8 bits para leitura/gravação e essa memória, a menos que toda a memória Flash seja
EEADR contém o endereço do local da EEPROM que está apagada junto.
sendo acessado. Os dispositivos PIC16F627A/628A têm 128 Informações adicionais sobre a EEPROM de dados estão
bytes de EEPROM de dados com um intervalo de endereços disponíveis no PIC® Mid-Range Reference Manual
de 0h a 7Fh. (DS33023).
REGISTRADOR 13-1: EEDATA – REGISTRADOR DE DADOS DA EEPROM (End. 9Ah)

Bits 7-0 EEDATn: Valor do Byte a ser Gravado na ou Lido da localização de memória setado em EEADR.

Legenda:
R = Bit Legível W = Bit Gravável U = Bit não implementado, ler como ‘0’.
-n = Valor no POR ‘1’ = Bit está alto ‘0’ = Bit está baixo. X = Valor do Bit é desconhecido.

REGISTRADOR 13-2: REGISTRADOR DE ENDEREÇO DA EEPROM (End. 9Bh)

Bit 7 PIC16F627/628 - Endereço Não Implementado. Deve ser lido como ‘0’.

Bit 6-0 PIC16F648 – O Bit 6 define banco mais alto ou mais baixo da EEPROM.
EEADR: Colocar ‘1’ para especificar endereços mais altos (128 a 255) para operações com a EEPROM.
EEADR: Especificar um dos 128 endereços da EEPROM.

Legenda:
R = Bit Legível W = Bit Gravável U = Bit não implementado, ler como ‘0’.
-n = Valor no POR ‘1’ = Bit está alto ‘0’ = Bit está baixo. X = Valor do Bit é desconhecido.

Página 087 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
13.1 Registrador EEADR Os bits de controle RD e WR iniciam a leitura e a gravação,
O registro EEADR do PIC16F648A endereça 256 bytes de respectivamente. Esses bits não podem ser apagados, apenas
EEPROM de dados. Todos os oito bits do registro definidos, via software. Eles são apagados no hardware ao
(EEADR<7:0>) são necessários. término da operação de leitura ou gravação. A
impossibilidade de zerar o bit WR no software impede o
Nos casos dos PIC16F627A e PIC16F628A, o registrador encerramento acidental e prematuro de uma operação de
EEADR endereça apenas os primeiros 128 bytes da EEPROM gravação.
de dados, portanto, apenas sete dos oito bits do registro O bit WREN, quando definido, permitirá uma operação de
(EEADR<6:0>) são necessários. gravação. Ao ser ligado, o bit WREN é apagado. O bit
WRERR é definido quando uma operação de gravação é
O bit superior é o endereço decodificado. Isso significa que interrompida por um MCLR ou por um Time-out Reset do
esse bit deve ser sempre "0" para garantir que o endereço WDT durante a operação normal. Nessas situações, após a
esteja no espaço de memória de 128 bytes destes 2 chips. reinicialização, o usuário pode verificar o bit WRERR e
reescrever o local. Os dados e o endereço permanecerão
inalterados nos registros EEDATA e EEADR.
O bit de sinalização de interrupção EEIF no registro PIR1 é
definido quando a a gravação estiver concluída. Esse bit deve
13.2 Registradores EECON1 e EECON2 ser zerado via software.
EECON1 é o registrador de controle com quatro bits de baixa EECON2 não é um registro físico. A leitura de EECON2 lerá
ordem implementados fisicamente. Os quatro bits superiores todos os '0's. O registro EECON2 é usado exclusivamente na
não existem e são lidos como '0'. sequência de gravação da EEPROM de dados.

REGISTRADOR 13-3: EECON1 – REGISTRADOR DE CONTROLE DA EEPROM (End. 9Ch)

Bit 7-4 Não Implementado. Será lido como ‘0’.

Bit 3 WRERR: Bit Flag de Erro da EEPROM


1 – Alguma operação de escrita terminou prematuramente (devido a algum Reset Master, WDT ou BOR) gerando erro.
0 – Operação de Gravação Completada Normalmente.

Bit 2 WREN: Bit de Habilitação de Gravação na EEPROM.


1 – Libera ciclo de gravação.
0 – Inibe gravação de dados na EEPROM.

Bit 1 WR: Bit de Controle de Gravação


1 – Inicia Ciclo de Gravação. (O bit é zerado por hardware até a gravação terminar. O Bit WR só pode ir para ‘1’ via
software (não pode ir para ‘0’).
0 – Ciclo de Gravação de Dados na EEPROM está concluído.

Bit 0 RD: Bit de Controle de Leitura


1 – Inicia a leitura da EEPROM (a leitura gasta um ciclo de máquina. RD é zerado por hardware. O Bit RD pode ser
levado para ‘1’ por software, não para ‘0’.
0 – Não iniciou-se a operação de leitura da EEPROM.

Legenda:
R = Bit Legível W = Bit Gravável U = Bit não implementado, ler como ‘0’.
-n = Valor no POR ‘1’ = Bit está alto ‘0’ = Bit está baixo. X = Valor do Bit é desconhecido.

Página 088 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
13.3 Leitura da Memória de Dados EEPROM O bit WREN não é apagado pelo hardware. Após o início
Para ler um local da memória de dados, o usuário deve escrever o de uma sequência de gravação, zerar o bit WREN não
endereço desejado no registrador EEADR e, em seguida, colocar em afetará esse ciclo de gravação. O bit WR será impedido
‘1’ o bit de controle RD (EECON1<0>). Os dados estarão de subir para ‘1’, a menos que o bit WREN vá.
disponíveis, no próximo ciclo, no registrador EEDATA; portanto, ele
pode ser lido na próxima instrução. O EEDATA manterá esse valor Após a conclusão do ciclo de gravação, o bit WR é
até outra leitura ou até que seja gravado pelo usuário (durante uma apagado no hardware e o bit EE Write Complete (EEIF)
operação de gravação). sobe para ‘1’. O usuário pode ativar essa interrupção ou
pesquisar esse bit. O bit EEIF nos registros PIR1 deve ser
EXEMPLO 13-1: LEITURA DE DADOS EEPROM apagado por software.

13.5 Verificação de gravação


Dependendo do aplicativo, a boa prática de programação
pode sugerir que o valor gravado na EEPROM de dados
seja verificado (Exemplo 13-3). Isso deve ser usado em
aplicativos em que um bit da EEPROM será exigido
próximo ao limite da especificação.

EXEMPLO 13-3: VERIFICA GRAVAÇÃO


13.4 GRAVAÇÃO NA MEMÓRIA DE DADOS DA EEPROM
Para gravar em um determinado local de dados da EEPROM, o
usuário deve primeiro escrever o endereço no registro EEADR e os
dados no registro EEDATA. Em seguida, o usuário deve seguir uma
sequência específica para iniciar a gravação de cada byte.

13.6 Proteção contra gravação espúria


Há condições em que o dispositivo pode não querer
gravar na memória EEPROM de dados. Para proteger
contra gravações espúrias na EEPROM, vários
mecanismos foram foram incorporados. Na inicialização,
o WREN é apagado. Além disso quando ativado, o timer
A gravação não será iniciada se a sequência acima não for seguida de inicialização (duração de 72 ms) impede a gravação na
exatamente dessa forma (escrever 55h em EECON2, escrever AAh EEPROM.
em EECON2 e, em seguida, definir o bit WR) para cada byte.
É altamente recomendável que as interrupções sejam desativadas A sequência de início de gravação e o bit WREN juntos
durante esse segmento de código, para evitar erros de gravação. ajudam a evitar uma gravação acidental durante o
Uma contagem de ciclos é executada durante a sequência necessária. desligamento, falha de energia ou mau funcionamento do
Qualquer número que não seja igual aos ciclos necessários para software.
executar a sequência exigida fará com que os dados não sejam
gravados na EEPROM.
Além disso, o bit WREN em EECON1 deve ser definido para
permitir a gravação. Esse mecanismo evita gravações acidentais na
EEPROM de dados devido à execução errônea (inesperada) de código
(ou seja, programas perdidos). O usuário deve manter o bit WREN
sempre ‘0’, exceto quando for gravar na EEPROM.

Página 089 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
13.7 USANDO DADOS DA EEPROM Se esse for o caso, uma atualização de matriz deverá ser
A EEPROM de dados é uma matriz endereçável de bytes de realizada. Por esse motivo, as variáveis que mudam raramente
alta resistência e endereçável por bytes que foi otimizada para (como constantes, IDs, calibração, e outras do tipo.) devem
o armazenamento de informações que mudam com frequência ser armazenadas na memória de programa Flash.
(por exemplo, variáveis de programa ou outros dados que são Uma rotina simples de refrescamento de dados numa
atualizados com frequência). EEPROM é mostrado no exemplo 13-4.
Quando variáveis em uma seção mudam com frequência,
enquanto variáveis em outra seção não mudam, é possível Nota: Se dados da EEPROM são usados somente para
exceder o número total de ciclos de gravação na EEPROM armazenar constantes e/ou dados que raramente mudam,
(especificação D124) sem exceder o número total de ciclos de não é necessário fazer um refrescamento de array. Veja
gravação em um único byte. (especificações D120 e D120A). especificação D124 para maiores detalhes.

EXEMPLO 13-4: ROTINA DE REFRESCAMENTO DE DADOS NA EEPROM

13-8 PROTEÇÃO DE CÓDIGO DURANTE OPERAÇÃO DE DADOS COM EEPROM


Quando o dispositivo está protegido por código, a CPU tem condições de ler e gravar dados na EEPROM, gravadoras não.

TABELA 13-1: REGISTRADORES E BITS ASSOCIADOS COM DADOS DE EEPROM

Legenda: x = desconhecido, u = não modificado, - = não implementado, será lido como ‘0’. Q = valor depende da condição
Nota 2: EECON2 não é um registrador físico.

Página 090 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
ANOTAÇÕES

Página 091 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
14.0 CARACTERÍSTICAS ESPECIAIS 14.1 Bits de configuração
A CPU tem circuitos especiais para lidar com as necessidades Os bits de configuração podem ser programados (lidos
de aplicativos em tempo real, e estas são o que diferenciam como '0') ou deixados sem programação (lidos como
um microcontrolador de outros outros processadores. '1') para selecionar várias configurações do dispositivo.
A família PIC16F627A/628A/648A possui uma série de Esses bits são mapeados no local da memória de
recursos destinados a maximizar a confiabilidade do sistema, programação 2007h.
minimizar o custo por meio da eliminação de componentes
O usuário notará que o endereço 2007h está além do
externos, oferecer modos operacionais de economia de
energia e oferecer proteção de código. espaço de memória do programa do usuário. De fato,
Esses recursos são: ele pertence ao espaço de memória de configuração
1. Seleção de OSC especial (2000h-3FFFh), que pode ser acessado
2. Reinicialização somente por comandos diversos durante a programação.
3. Reinicialização por ativação (POR) Veja "Especificação de programação da memória
4. Temporizador de energização (PWRT) EEPROM do PIC16F627A/628A/648ª Programming
5. Temporizador de inicialização do oscilador (OST) Specification" (DS41196) para obter informações
6. Reinicialização de Brown-out (BOR) adicionais.
7. Interrupções
8. Temporizador Watchdog (WDT)
9. Suspensão
10. Proteção de código
11. Locais de identificação
12. In-Circuit Serial Programming™ (ICSP™)
O PIC16F627A/628A/648A tem um temporizador Watchdog
que é controlado por bits de configuração. Ele funciona com
seu próprio oscilador RC para maior confiabilidade. Há dois
temporizadores que oferecem os atrasos necessários na
inicialização. Um deles é o primeiro é o temporizador de
inicialização do oscilador (OST), destinado a manter o chip
em Reset até que o oscilador de cristal esteja estável.
O outro é o Power-up Timer (PWRT), que fornece um atraso
fixo de 72 ms (nominal) somente na inicialização projetado
para manter a peça em Reset enquanto a enquanto a fonte de
alimentação se estabiliza. Há também um circuito para
reinicializar o dispositivo se ocorrer um brown-out (ver
definição na Pág 003) . Com essas três funções no chip, a
maioria dos aplicativos não precisa de nenhum circuito
externo de reset.
O modo Sleep foi projetado para oferecer um modo de
operação com consumo de corrente muito baixo. O usuário
pode despertar do modo Sleep por meio de reinicialização
externa, pelo despertar do Watchdog Timer ou por meio de
uma interrupção. Várias opções de oscilador também estão
disponíveis para permitir que a peça se adapte ao aplicativo.
A opção de oscilador RC economiza o custo do sistema,
enquanto a opção de cristal LP economiza energia. Um
conjunto de bits de configuração é usado para selecionar
várias opções.

Página 092 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
REGISTRADOR 14-1: CONFIG REGISTRADOR DE CONFIGURAÇÃO DA PALAVRA

Bit 13: CP: Bit de Proteção de Código para Programa na Memória Flash.
PIC16F648A
1 = Código de Proteção Desligado, 0 = Código de Proteção (de 0000h a 0FFFh) Ligado.
PIC16F628A
1 = Código de Proteção Desligado, 0 = Código de Proteção (de 0000h a 07FFh) Ligado.
PIC16F627A
1 = Código de Proteção Desligado, 0 = Código de Proteção (de 0000h a 03FFh) Ligado.

Bit 12-9: Não Implementado. Lido como ‘0’.

Bit 8: CPD: Bit de Proteção de Código da Memória de Dados


1 = Código de Proteção de Memória de Dados Desligado 0 = Código de Proteção de Memória de Dados Ligado

Bit 7: LVP: Bit de Habilitação de Programação em Baixa Voltagem.


1 = Pino RB4/PGM tem função PGM, programação em baixa voltagem habilitada.
0 = Pino RB4/PGM é porta E/S digital, alta voltagem no pino MCLR deve ser usada para programação.

Bit 6: BOREN: Bit de Habilitação do Reset via Brown-Out


1 = Reset BOR habilitado 0 = Reset BOR desabilitado.

Bit 5: MCLRE: Bit de Seleção de Função do Pino RA5/MCLR/VPP


1 = Função do Pino RA5/MCLR/VPP é MCLR.
0 = Função do RA5/MCLR/VPP é Entrada Digital e MCLR é internamente contectado ao VDD do Chip.

Bit 3: PWRTE: Bit de Habilitação do Timer para Power-Up.


1 = PWRT desabilitado 0 = PWRT habilitado.

Bit 2: WDTE: Bit de Habilitação do WatchDog


1 = WTD habilitado 0 = WTD desabilitado.

Bit 4,1-0: FOSC<2:0> Bits de Seleção do Oscilador de Clock


111 = Oscilador RC: Função CLKOUT no pino RA6/OSC2/CLKOUT, resistor e capacitor no RA7/OSC1/CLKIN
110 = Oscilador RC: Função de E/S no pino RA6/OSC2/CLKOUT, resistor e capacitor em RA7/OSC1/CLKIN
101 = Oscilador INTOSC: Função de CLKOUT no pino RA6/OSC2/CLKOUT, função de E/S no RA7/OSC1/CLKIN
100 = Oscilador INTOSC: Função de E/S no pino RA6/OSC2/CLKOUT, função de E/S no RA7/OSC1/CLKIN
011 = EC: função de E/S no pino RA6/OSC2/CLKOUT, CLKIN no RA7/OSC1/CLKIN
010 = Oscilador HS: Cristal de alta velocidade em RA6/OSC2/CLKOUT e RA7/OSC1/CLKIN
001 = Oscilador XT: Cristal em RA6/OSC2/CLKOUT e RA7/OSC1/CLKIN
000 = Oscilador LP: Cristal de baixa potência em RA6/OSC2/CLKOUT e RA7/OSC1/CLKIN

Nota 1: A ativação do Reset Brown-Out não ativa automaticamente o timer de energização (PWRT) da mesma forma que
nos dispositivos dispositivos PIC16F627/628.

2: O esquema de proteção de código foi alterado em relação ao esquema de proteção de código usado nos dispositivos
PIC16F627/628. A Toda a memória de programa Flash precisa ser apagada em massa para definir o bit CP,
desativando a proteção de código. Consulte "PIC16F627A/628A/648A EEPROM Memory Programming
Specification" (DS41196) para obter detalhes.

3: Toda a EEPROM de dados precisa ser apagada em massa para definir o bit CPD, desativando a proteção de código.
Consulte "PIC16F627A/ 628A/648A EEPROM Memory Programming Specification" (DS41196) para obter detalhes.

4: Quando MCLR é afirmado no modo INTOSC, o oscilador do clock interno é desativado.

Página 093 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
14.2 CONFIGURAÇÕES DO OSCILADOR TABELA 14-1: SELEÇÃO DE CAPACITOR PARA
14.2.1 TIPOS DE OSCILADORES RESSONADORES DE CERÂMICA
O PIC16F627A/628A/648A pode ser operado em 8 opções
diferentes de clock. O usuário pode programar três bits de
configuração (FOSC2 a FOSC0) para selecionar um desses 8:
- LP Cristal de baixa potência
- Cristal/Resonador XT
- HS Cristal/Resonador de alta velocidade
- RC Resistor/Capacitor externo (2 modos)
- INTOSC Oscilador interno de precisão (2 modos)
- EC Entrada de relógio externo
Nota: Observação: Uma capacitância maior aumenta a estabilidade
14.2.2 OSCILADOR DE CRISTAL / RESSONADORES do oscilador, mas também aumenta o tempo de inicialização. Esses
Nos modos XT, LP ou HS, um ressonador de cristal ou de valores são apenas para apenas para orientação do projeto. Como cada
cerâmica é conectado aos pinos OSC1 e OSC2 para estabelecer a ressonador tem suas próprias características, o usuário deve consultar
oscilação (Figura 14-1). O projeto do oscilador do o fabricante do ressonador(1) para obter valores apropriados de
PIC16F627A/628A/648A requer o uso de um cristal de corte componentes externos.
paralelo.
O uso de um cristal de corte em série pode gerar uma freqüência
fora das especificações do fabricante do cristal. Quando estiver TABELA 14-2: SELEÇÃO DE CAPACITOR PARA
nos modos XT, LP ou HS, o dispositivo pode ter uma fonte OSCILADOR A CRISTAL
externa de externa para acionar o pino OSC1 (Figura 14-4).

FIGURA 14-1: OPERAÇÃO A CRISTAL (OU


RESSONADOR CERÂMICA – CONFIGURAÇÃO
HS, XT OU LP OSC)

Nota: Uma capacitância maior aumenta a estabilidade do oscilador,


mas também aumenta o tempo de inicialização. Esses valores são
apenas para apenas para orientação de projeto. Um resistor em série
(RS) pode ser necessário no modo HS, bem como no modo XT para
evitar a sobrecarga de cristais com especificação de baixo nível de
acionamento. Como cada cristal tem suas próprias características, o
usuário o usuário deve consultar o fabricante do cristal para obter os
valores apropriados dos componentes externos.

(1) N.T. Um ressonador é um dispositivo ou sistema que apresenta ressonância ou comportamento ressonante. Ou
seja, ele oscila naturalmente com maior amplitude em algumas frequências, chamadas de frequências ressonantes,
do que em outras frequências. As oscilações em um ressonador podem ser eletromagnéticas ou mecânicas

Página 094 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
14.2.3 CIRCUITO OSCILADOR PARA CRISTAL FIGURA 14-3:CIRCUITO OSCILADOR CRISTAL
EXTERNO RESSONANTE SERIAL EXTERNO.
Pode ser usado um oscilador pré-fabricado ou pode ser
construído um circuito oscilador simples com portas TTL.
Os osciladores pré-fabricados oferecem uma ampla faixa
operacional e melhor estabilidade. Um oscilador de cristal
bem projetado proporcionará bom desempenho com portas
TTL. Podem ser usados dois tipos de circuitos de oscilador
de cristal um com ressonância em série ou um com
ressonância paralela.
A Figura 14-2 mostra a implementação de um circuito
oscilador ressonante paralelo. O circuito foi projetado para
usar a frequência fundamental do cristal. O inversor
74AS04 realiza a mudança de fase de 180° que um oscilador
paralelo requer. O resistor de 4,7 kΩ fornece a
realimentação negativa para a estabilidade. A resistêcia do
potenciômetro de 10 kΩ polariza o 74AS04 na região linear. 14.2.4 OSCILADOR PRECISÃO INTERNA 4 MHz
Isso pode ser usado para projetos de osciladores externos. O oscilador interno de precisão fornece um relógio de sistema
fixo de 4 MHz (nominal) fixo do sistema a VDD = 5V e 25°C.
FIGURA 14-2:CIRCUITO OSCILADOR CRISTAL Consulte a Seção 17.0 "Especificações elétricas", para obter
PARALELO RESSONANTE EXTERNO. informações sobre a variação de tensão e temperatura.

14.2.5 ENTRADA DE RELÓGIO EXTERNO


Para aplicações em que um relógio já está disponível
disponível em outro lugar, os usuários podem acionar
diretamente o PIC16F627A/ 628A/648A, desde que essa fonte
de clock externo atenda aos os requisitos de temporização
CA/CC listados na Seção 17.6 "Diagramas de temporização e
especificações". A Figura 14-4 abaixo mostra como um
circuito de relógio externo deve ser configurado.

FIGURA 14-4: CONFIGURAÇÃO DE ENTRADA DE


CLOCK PARA OPERAÇÃO EXTERNA (EM
CONFIGURAÇÃO EC, HS, XT ou OSC LP)

A Figura 14-3 mostra um circuito de oscilador ressonante em série.


Esse circuito também foi projetado para usar a frequência
fundamental
do cristal. O inversor realiza uma mudança de fase de 180° em um
circuito oscilador ressonante em série. Os resistores de 330 kΩ
fornecem a realimentação negativa para polarizar os inversores em
sua região linear.

Página 095 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
14.2.6 OSCILADOR RC Esse recurso permite que os usuários alternem
Para aplicativos em que o tempo preciso de oscilador não é uma dinamicamente a velocidade do oscilador entre 4
necessidade importante, o modo RC está disponível. A operação MHz e 48 kHz nominal no modo INTOSC.
e a funcionalidade do oscilador RC dependem de uma série de Aplicativos que exigem economia de energia usando
variáveis. A frequência do oscilador RC é uma função de: baixa corrente, mas não comportam que o projeto
- Tensão de alimentação
coloque o chip no modo Sleep, podem usar esse
- Valores do resistor (REXT) e do capacitor (CEXT)
- Temperatura de operação modo. Há um atraso de tempo associado à transição
A frequência do oscilador varia de unidade para unidade devido à entre as velocidades rápida e lenta do oscilador. Esse
variação normal dos parâmetros do processo. A diferença na atraso de transição de velocidade do oscilador
capacitância da estrutura de chumbo entre os tipos de capacitor consiste em dois pulsos do clock em uso e oito novos
também afetará a frequência de oscilação, especialmente para pulsos de clock. Durante esse atraso de transição da
valores baixos de CExt. O usuário também precisa levar em velocidade do clock, o clock do sistema é
conta a tolerância dos componentes externos R e C. A Figura 14- interrompido fazendo com que o processador fique
5 mostra como a combinação R/C é conectada. congelado durante essa transição. Durante esse
atraso, o contador de programa e o CLKOUT param.
FIGURA 14-5 MODO OSCILADOR RC O bit OSCF no registro PCON é usado para controlar
o modo Dual Speed (velocidade dupla). Consulte a
Seção 4.2.2.6 "Registrador PCON".

14.3 Reinicialização
O PIC16F627A/628A/648A diferencia entre vários
tipos de reinicialização:
a) Reset de inicialização Power-On Reset (POR)
b) Reset do MCLR durante a operação normal
c) Reset do MCLR durante a suspensão
d) Reset do WDT (operação normal)
e) Despertar do WDT (Sleep)
f) Reinicialização de Brown-out (BOR)
Alguns registros não são afetados em nenhuma
condição de Reset; seu status é desconhecido em
POR e inalterado em qualquer outra reinicialização.
A maioria dos outros registros é redefinida para um
"estado de redefinição” na Reinicialização ao ligar,
Reinicialização de Brown-out, Reinicialização de
O modo Oscilador RC tem duas opções que controlam o pino MCLR, WDT e Suspensão MCLR.
OSC2 não utilizado. A primeira permite que ele seja usado como Eles não são afetados por um despertar do WDT, pois
uma porta de E/S de uso geral. A outra configura o pino como isso é visto como a retomada da operação normal. Os
uma saída que fornece o sinal FOSC (clock interno dividido por bits TO e PD vão para ‘1’ ou ‘0’ de forma diferente
4) para fins de teste ou sincronização externa. em diferentes situações conforme indicado na Tabela
14-4. Esses bits são usados no software para
14.2.7 CLKOUT determinar a natureza da reinicialização.
O PIC16F627A/628A/648A pode ser configurado para fornecer Consulte a Tabela 14-7 para obter uma descrição
um sinal de clock programando a Palavra (Word) de
completa dos estados de reinicialização de todos os
configuração. A frequência do oscilador, dividida por 4, pode ser
usada para fins de teste ou para sincronizar outra lógica.
registradores. Um diagrama de blocos simplificado
do circuito de Reset no chip é mostrado na Figura 14-
14.2.8 RECURSO ESPECIAL: MODOS DE 6. no chip é mostrado na Figura 14-6.
OSCILADOR DE DUPLA VELOCIDADE O caminho de Reset do MCLR tem um filtro de ruído
Um modo de oscilador de velocidade dupla programável para detectar e ignorar pulsos pequenos. Consulte a
por software é fornecido quando o PIC16F627A /628A Tabela 17-7 para obter a especificação da
/648A está configurado no modo de oscilador INTOSC. especificação.

Página 096 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
FIGURA 14-6: DIAGRAMA DE BLOCOS SIMPLIFICADO DO CIRCUITO DE RESET ON-CHIP

Página 097 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
14.4 Resets POR, PWRT, OST E BOR 14.4.3 TIMER INICIANDO OSCILADOR (OST)
O OST fornece um atraso de 1024 ciclos do oscilador (da
14.4.1 REINICIALIZAÇÃO AO LIGAR (POR) entrada OSC1 (da entrada OSC1) após o término do atraso do
O POR no chip mantém o chip em Reset (suspenso) até que PWRT. A execução do programa não será iniciada até que o
um aumento de VDD seja detectado (na faixa de 1,2-1,7V). É tempo limite do OST seja concluído. Isso garante que o
necessário um tempo máximo de aumento do VDD. Consulte oscilador de cristal ou ressonador já tenha iniciado e se
a Seção 17.0 "Especificações elétricas" para obter detalhes. estabilizado.
O circuito POR não produz uma reinicialização interna O tempo limite de OST é invocado somente para os modos
quando o VDD diminui. Quando o dispositivo inicia a XT, LP e HS e somente na reinicialização ao ligar ou ao
operação normal (sai da condição de redefinição), os acordar do modo Sleep. Consulte a Tabela 17-7.
parâmetros operacionais do dispositivo (tensão, frequência,
temperatura, etc.) devem ser atendidos para garantir a 14.4.4 RESET DE BROWN-OUT (BOR)
operação adequada. Se essas condições não forem forem A família PIC16F627A/628A/648A tem um circuito BOR no
atendidas, o dispositivo deverá ser mantido em Reset por chip. Um bit de configuração, BOREN, pode desativar (se
meio de MCLR, BOR ou PWRT até que as condições estiver em ‘0’) ou ativar (se estiver em ‘1’) o circuito BOR.
operacionais sejam atendidas. Se VDD cair abaixo de VBOR por mais tempo que TBOR, a
Para obter informações adicionais, consulte a nota de situação de brown-out reinicializará o chip. A reinicialização
aplicação AN607 "Solução de problemas de energização" não se dará com certeza se o VDD ficar abaixo de VBOR por
(DS00607). menos tempo do que TBOR.
VBOR e TBOR são definidos na Tabela 17-2 e na Tabela 17-
14.4.2 TEMPORIZADOR DE ENERGIZAÇÃO (PWRT) 7, respectivamente. Em qualquer reinicialização (ligada,
O PWRT fornece um tempo limite fixo de 72 ms (nominal) Brown-out, Watchdog etc.), o chip permanecerá em Reset até
na inicialização (POR) ou se ativado a partir de uma que VDD suba acima de VBOR (consulte a Figura 14-7). O
reinicialização por Brown-out. temporizador de energização será será invocado, se estiver
Reinicialização. O PWRT opera em um oscilador RC interno. ativado, e manterá o chip em Reset por mais de 72 ms.
O chip é mantido em Reset enquanto o PWRT estiver ativo. Se o VDD cair abaixo de VBOR enquanto o temporizador de
O atraso do PWRT permite que o VDD suba até um nível energização estiver em execução, o chip voltará para o Reset
aceitável. Um bit de configuração, PWRTE, pode desativar de Brown-out e o temporizador de energização será
(se definido) ou habilitar (se desmarcado ou programado) o reinicializado. Quando o VDD subir acima de VBOR, o
PWRT. Recomenda-se que o PWRT seja ativado quando a temporizador de energização executará uma reinicialização de
reinicialização por Brown-out estiver ativada. 72 ms de reinicialização. A Figura 14-7 mostra situações
O atraso no tempo de inicialização varia de chip para chip e típicas de típicas.
devido à variação de VDD, temperatura e processo. Consulte
a Tabela 17-7 (Parâmetros de CC) para obter detalhes
FIGURA 14-7: SITUAÇÕES DE BROWN-OUT COM PWRT HABILITADO

Página 098 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
14.4.5 SEQUÊNCIA DE TEMPO-LIMITE 14.4.6 STATUS DO CONTROLE DE POTÊNCIA
Na inicialização, a sequência de tempo limite é a seguinte: REGISTRADOR (PCON)
Primeiro O tempo limite do PWRT é invocado após a O registrador PCON/Status, PCON (endereço 8Eh), tem
expiração do POR. Em seguida, o OST é ativado. O tempo dois bits. O bit 0 é BOR (Brown-out Reset). O valor de BOR
total de expiração varia de acordo com a configuração do é desconhecido na inicialização. Ele deve ser definido pelo
oscilador e do status do bit PWRTE. usuário e verificado nas reinicializações subsequentes para
Por exemplo, no modo RC com o bit PWRTE definido ver se BOR = 0 indicando que ocorreu um brown-out. O bit
(PWRT desativado), não haverá tempo limite. Figura 14-8, de status BOR é um bit de status "não importa" e não é
Figura 14-11 e Figura 14-12 mostram as sequências de necessariamente previsível se o circuito de brown-out estiver
tempo-limite. Como os time outs ocorrem a partir do pulso desativado (configurando o bit BOREN = 0 na Palavra de
POR, se MCLR for mantido baixo por tempo suficiente, os configuração).
tempos de espera expirarão. Então Se o MCLR for mantido O bit 1 é POR (Power-on Reset). Ele é um '0' na
alto, a execução começará imediatamente (consulte a Figura reinicialização e não é afetado de outra forma. O usuário deve
14-11). Isso é útil para fins de teste ou para sincronizar mais colocar um "1" nesse bit após a reinicialização. Em uma
de um dispositivo PIC16F627A/628A/648A operando em reinicialização subsequente, se POR for '0', isso indicará que
paralelo. deve ter ocorrido uma reinicialização Power-On (o VDD pode
A Tabela 14-6 mostra as condições de Reset para alguns ter ficado muito baixo).
registradores especiais, enquanto a Tabela 14-7 mostra as
condições para todos os registradores.
TABELA 14-3: TIME-OUT EM DIVERSAS SITUAÇÕES

TABELA 14-4: BITS STATUS E PCON E SUA IMPORTÂNCIA

Legenda: u = Não modificado x = Desconhecido

Página 099 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
TABELA 14-5: RESUMO DOS REGISTRADORES ASSOCIADOS AO RESET BROWN-OUT

Legenda: x = Desconhecido, u = Não Modificado, - = Não Implementado, Ler como ‘0’, q = valor depende das condições
As células sombreadas não são usadas pelo Reset Brown-Out.
Nota 1: Outros resets (que não sejam o Power-Up) incluem o MCLR, BRO e WDT durante operação normal do Chip.

TABELA 14-6: CONDIÇÕES DE INICIALIZAÇÃO PARA REGISTRADORES ESPECIAIS

Legenda: x = Desconhecido, u = Não Modificado, - = Não Implementado, Ler como ‘0’

Nota 1: Quando o despertamento é devido a uma interrupção e o bit de habilitação Global GIE está em ‘1’, o PC é carregado
com o endereço de interrupção (0004h) após a execução do PC+1 no registrador Program Counter.

Página 100 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
TABELA 14-7 CONDIÇÕES DE INICIALIZAÇÃO PARA OS REGISTRADORES
Registrador Endereço Reset Power-On MCLR operação normal Wake-Up de Sleep após uma
Reset MCLR durante Sleep Interrupção
Reset WDT, Reset Brown-Out (1) Wake-Up de Sleep após WDT

Legenda: x = Desconhecido, u = Não Modificado, - = Não Implementado, Ler como ‘0’, q = valor depende das condições
Nota 1: Se o VDD for muito baixo, a reinicialização do Power-on será ativada e registros serão afetados de forma diferente.
2: Um ou mais bits em INTCON e PIR1 serão afetados (para causar do despertar Wake-Up).
3: Quando o despertar vier de uma interrupção e bit GIE for ‘1’, o PC será carregado com vetor de interrupção (0004h).
4: Consulte a Tabela 14-6 para obter o valor de Reset para uma condição específica.
5: Se a reinicialização tiver sido causada por brown-out, então o bit 0 = 0. As outras reinicializações causarão bit 0 = u.
6: Redefinir para '--00 0000' em uma redefinição de Brown-out (BOR).
7: Periféricos que geram interrupções Wake-Up do modo Sleep alterarão bits resultantes nos registros associados.

Página 101 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A

Página 102 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
FIGURA 14-11 CIRCUITO EXTERNO DE RESET FIGURA 14-13 CIRCUITO 2 DE PROTEÇÃO PARA
(PARA POWER-UP COM VDDs LENTOS) BROWN-OUT EXTERNO.

Notas
1: O circuito de reinicialização externa é necessário somente Notas:
se a inclinação de inicialização do VDD for muito lenta. O 1: Esse circuito de desligamento marrom é mais
diodo D ajuda a descarregar o capacitor rapidamente quando econômico, embora menos preciso. O transistor Q1 é
o VDD é desligado. desligado quando o VDD está abaixo de um determinado
2: R < 40 kΩ é sugerido para garantir que queda de tensão nível, de modo que o VDD não pode ser desligado:
em R não viole especificação elétrica do dispositivo.
3: R1 = 100Ω a 1 kΩ limitará qualquer corrente que flui para
o MCLR a partir do capacitor externo C no caso de quebra do
pino MCLR/VPP devido a descarga eletrostática (ESD) ou 2: A reinicialização interna de Brown-Out deve ser
estresse elétrico excessivo (EOS). desativada ao usar esse circuito.
3: Os resistores devem ser ajustados de acordo com as
características de polatização do transistor.
FIGURA 14-12 CIRCUITO 1 DE PROTEÇÃO PARA
BROWN-OUT EXTERNO.

Notas:
1: Esse circuito ativará o Reset quando VDD for inferior a
(Vz + 0,7 V), sendo Vz = tensão Zener.
2: O circuito interno de Reset de Brown-out deve ser
desativado ao usar esse circuito.

Página 103 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
14.5 Interrupções
A família PIC16F627/628/648 tem 10 fontes de interrupção: A interrupção do pino INT, a interrupção de alteração da
porta RB e os sinalizadores de interrupção de estouro de
- Interrupção externa RB0/INT TMR0 estão contidos no registro INTCON.
- Interrupção de estouro de TMR0 O sinalizador de interrupção do periférico está contido no
- Interrupções de mudança PORTB (pinos RB<7:4>) registro especial PIR1. O bit de habilitação de interrupção
- Interrupção do comparador correspondente está contido nos registros especiais PIE1.
- Interrupção USART TX Quando uma interrupção é respondida, o GIE é zerado para
- Interrupção USART RX desativar qualquer outra interrupção, o endereço de retorno é
- Interrupção CCP colocado na pilha e o PC é carregado com 0004h.
- Interrupção de estouro de TMR1 Uma vez na rotina de serviço de interrupção, a(s) fonte(s) da
- Interrupção de correspondência TMR2 interrupção pode(m) ser determinada por meio da sondagem
- Interrupção da EEPROM de dados dos bits de sinalização da interrupção(ou flags). O(s) bit(s) do
sinalizador de interrupção deve(m) ser apagado(s) no software
O registro de controle de interrupção (INTCON) registra antes de reativar as interrupções para evitar interrupções
solicitações de interrupção individuais em bits de sinalização. recursivas no pino RB0/INT (uma interrupção chamando
Ele também tem bits de habilitação de interrupção individuais outra em loop infinito).
e globais. Para eventos de interrupção externa, como o pino INT ou a
Um bit de habilitação de interrupção global, GIE interrupção de alteração do PORTB, a latência da interrupção
(INTCON<7>) habilita (se estiver em ‘1’) todas as será de três ou quatro ciclos de instrução. A latência exata
interrupções não mascaradas ou desabilita (se em ‘0’) todas as depende de quando o evento de interrupção ocorre (Figura 14-
interrupções. As interrupções individuais podem ser 15).
desativadas por meio de seus bits de habilitação A latência é a mesma para instruções de um ou dois ciclos.
correspondentes no registro INTCON. O bit GIE é apagado Uma vez na rotina de serviço de interrupção, a(s) fonte(s) da
em qualquer Reset. interrupção pode(m) ser determinada(s) pela sondagem dos
A instrução "return-from-interrupt" (retornar da interrupção), bits de sinalização (flags) de interrupção.
RETFIE, sai da rotina de interrupção e define o bit GIE, que O(s) bit(s) do sinalizador de interrupção deve(m) ser
reativa as interrupções no pino RB0/INT. zerado(s) via software antes de reativar as interrupções para
evitar várias solicitações de interrupção recursivas.

Página 104 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
14.5.1 INTERRUPÇÃO RB0/INT 14.5.3 INTERRUPÇÃO DA PORTB
A interrupção externa no pino RB0/INT é acionada pela Uma alteração de entrada em PORTB <7:4> define o bit
borda do sinal, seja ascendente, se o bit INTEDG RBIF (INTCON<0>). A interrupção pode ser ativada ou
(OPTION<6>) estiver em ‘1’, ou descendente, se o bit desativada colocando-se o bit RBIE (INTCON<3>) em ‘1’ ou
INTEDG estiver em ‘0’. ‘0’. Para entender melhor a operação do PORTB leia (Seção
Quando uma borda válida aparece no pino RB0/INT, o bit 5.2 "Registradores PORTB e TRISB").
INTF (INTCON<1>) vai para ‘1’. Essa interrupção pode ser
desativada zerando-se o bit de controle INTE (INTCON<4>). Nota: Se ocorrer uma alteração no pino de E/S quando a
O bit INTF deve ser zerado via no software na rotina de operação de leitura estiver sendo executada (começa
serviço de interrupção antes de reativar essa interrupção. durante o ciclo Q2 e termina antes do início do ciclo Q3),
A interrupção RB0/INT pode despertar o processador do o sinalizador de interrupção RBIF poderá não ser definido.
modo Sleep, se o bit INTE tiver sido definido antes de entrar
no modo de suspensão. O status do bit GIE decide se o 14.5.4 INTERRUPÇÃO DO COMPARADOR
processador deve ou não derivar o processamento para o vetor Consulte a Seção 10.6 "Interrupções do Comparador" para
de interrupção após o despertar (Wake-Up). descrição completa das interrupções do comparador.
Consulte a Seção 14.8 "Modo de desligamento (suspensão)"
para obter detalhes sobre o modo Sleep e a Figura 14-17 para
ver o tempo de despertar (Wake-Up) do modo Sleep por meio
da interrupção RB0/INT.

14.5.2 INTERRUPÇÃO TMR0


Um estouro (FFh → 00h) no registro TMR0 definir á a
interrupção T0IF (INTCON<2>). A interrupção pode ser
ativada/ desativada pela colocação de ‘1’ ou ‘0’ no bit T0IE
(INTCON<5>). Para operação do módulo Timer0, consulte a
Seção 6.0 "Módulo Timer0".

Página 105 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
TABELA 14-8: RESUMO DOS REGISTRADORES DE INTERRUPÇÃO

14.6 Salvamento de contexto durante interrupções Esse oscilador RC é separado do oscilador RC


Durante uma interrupção, somente o valor de retorno do PC é salvo que funciona no pino CLKIN. Isso significa que o
na pilha. Normalmente, os usuários podem querer salvar os principais WDT será executado, mesmo que o clock nos
registros durante uma interrupção (por exemplo, registro W e registro pinos OSC1 e OSC2 do dispositivo tenha sido
de
interrompido, por exemplo, pela execução de
Registro de status). Isso deve ser implementado no software.
O Exemplo 14-1 armazena e restaura os registros Status e W uma instrução SLEEP. Durante a operação
e W. O registro do usuário, W_TEMP, deve ser definido normal, um tempo limite do WDT irá gerar um
em um local de memória comum (ou seja, W_TEMP é Reset do dispositivo. Se o dispositivo estiver no
definido em 0x70 no Banco 0 e, portanto, acessível modo Sleep, um tempo limite do WDT fará com
em 0xF0, 0x170 e 0x1F0). O Exemplo 14-1: que o dispositivo desperte (Wake-Up) e continue
- Armazena o registro W a operação normal. O WDT pode ser
- Armazena o registro Status permanentemente desativado se configurarmos o
- Executa o código ISR bit WDTE ‘0’. (Veja Seção 14.1 "Bits de
- Restaura o status (e o registro de bit de seleção de banco)
configuração").
- Restaura o registro W

14.7.1 PERÍODO DO WDT


O WDT tem um período de time-out nominal de
18 ms (sem pré-escalonamento). Os períodos de
time-out variam de acordo com a temperatura, o
VDD e variações de processos diversos(consulte
Especificações de CC, Tabela 17).
Se forem desejados períodos de tempo limite
(time-outs) mais longos, um postscaler com uma
taxa de divisão de até 1:128 pode ser atribuído ao
WDT sob controle de software, configurando-se
o registrador OPTION. Assim, é possível obter
períodos de time-out de até 2,3 segundos.
As instruções CLRWDT e SLEEP limpam o
WDT e o postscaler, se atribuído ao WDT, e
evitam que ele atinja o tempo limite e gere um
Reset indesejado do dispositivo.
O bit TO no registrador de status será apagado
quando o Timer do Watchdog atingir seu limite.

14.7.2 CONSIDERAÇÕES SOBRE O WDT


Também deve ser levado em conta que, nas
piores situações possíveis (VDD = Mínimo,
Temperatura = Máximo, préescalonamento máx.
WDT), poderão ser gastos vários segundos até
14.7 Temporizador Watchdog (WDT) que ocorra um time-out do WDT .
O Watchdog Timer é um oscilador RC de execução livre no
chip que não requer nenhum componente externo.

Página 106 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
FIGURA 14-16 DIAGRAMA DE BLOCOS DO TIMER DO WATCHDOG

TABELA 14-9: RESUMO DOS REGISTRADORES DO TIMER WATCHDOG

Legenda: x = Desconhecido, u = Não Modificado, - = Não Implementado, Ler como ‘0’, q = valor depende das condições
Nota: As células sombreadas não são utilizadas pelo Timer do WatchDog.

14.8 Modo Power-Down (Sleep) Os pinos de E/S que são entradas de alta impedância devem
O modo de desligamento é acessado com a execução de uma ser puxados para cima ou baixo externamente para evitar
instrução SLEEP. correntes de comutação causadas por entradas flutuantes.
Se ativado, o Timer Watchdog será zerado, mas continuará A entrada T0CKI também deve estar em VDD ou VSS para
funcionando, o bit PD no registrador STATUS será zerado, o obter o menor consumo de corrente. A contribuição dos pull-
bit TO irá para ‘1’ e o driver do oscilador será desligado. As ups no chip em PORTB deve ser considerada como valiosa.
portas de E/S manterão o status que tinham antes da execução O pino MCLR deve estar em um nível lógico alto (VIHMC).
do SLEEP (seja condução em alta, baixa ou alta impedância).

Para obter o menor consumo de corrente nesse modo, todos


os pinos de E/S devem estar em VDD ou VSS sem que Nota: Deve-se observar que um Reset gerado por um
nenhum circuito externo esteja consumindo corrente do pino time-out do WDT não leva o pino MCLR para ‘0’.
de E/S e dos comparadores, e o VREF deve ser desativado.

Página 107 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
14.8.1 DESPERTAR DO MODO SLEEP O despertar é independente do estado do bit GIE. Se o bit GIE
O dispositivo pode despertar (Wake-Up) do modo de estiver em ‘0’ (desativado), o dispositivo continuará a
suspensão (Sleep) por meio de um dos eventos a seguir: execução na instrução após a instrução SLEEP. Se o bit GIE
1. Entrada de reinicialização externa no pino MCLR estiver wm ‘1’ (ativado), o dispositivo executará a instrução
2. Ativação do Watchdog Timer (se o WDT estiver ativado) após a instrução SLEEP e, em seguida, desviará para o
3. Interrupção do pino RB0/INT, alteração da porta RB ou endereço de interrupção (0004h). Nos casos em que a
qualquer interrupção de periférico se estiver ativa no modo execução da instrução após SLEEP não seja desejável, o
Sleep. usuário deve ter um NOP (No Operation, ou Não faça coisa
O primeiro evento causará uma reinicialização do dispositivo. alguma, em Assembly) após a instrução SLEEP. Em C, você
Os dois últimos eventos são considerados uma continuação da pode substituir por um delay_ms(1) com resultados parecidos.
execução do programa. Os bits TO e PD no registro Status
podem ser usados para determinar a causa da reinicialização Nota: Se as interrupções globais estiverem desativadas
do dispositivo. (GIE estiver em ‘0’), mas qualquer fonte de interrupção
O bit PD, que é definido na inicialização, é zerado quando o tiver seu bit de habilitação de interrupção correspondente
Sleep é acionado. O bit TO é zerado se ocorrer o despertar definido, o dispositivo não entrará no Sleep. A instrução
(Wake-Up) do WDT. SLEEP será executada como se fosse uma instrução NOP.
Quando a instrução SLEEP está sendo executada, a próxima
instrução (PC + 1) será pré-pesquisada. Para que o dispositivo O WDT será levado para ‘0’ quando o dispositivo desperta
desperte por meio de um evento de interrupção, o bit de (Wake-Up) do modo Sleep, independentemente da origem do
habilitação de interrupção correspondente deve estar ativado. despertar (Wake-Up).

14.9 Proteção de código 14.10 Locais de ID do Usuário


Quando o bit Code-Protect está em ‘0’ (Code-Protect Ativo), Quatro posições de memória (2000h-2003h) são designadas
o conteúdo dos locais da memória do programa são lidos como locais de ID do usuário, onde o usuário pode armazenar
como "0". Consulte "PIC16F627A/628A/ 648A EEPROM checksum ou outros números de identificação de seu código.
Memory Programming Specification" (DS41196) para Esses locais não são acessíveis durante a execução normal
obter detalhes. mas podem ser lidos e gravados durante o Program/Verify.
Somente os 4 bits menos significativos dos locais de ID do
Nota: Somente uma função Bulk Erase (Apagar Tudo) usuário são usados para cálculos de soma de verificação,
pode definir os bits CP e CPD ao desativar a proteção de embora cada local tenha 14 bits. O CheckSum é largamente
código. Toda a EEPROM de dados e a memória de empregado para evitar pirataria e propagação indevida de
programa Flash serão apagadas para desativar a proteção propriedade industrial, apesar de ser pouco eficiente quando
de código, não podem ser apagados parcialmente. cai nas mãos de hackers e crackers experientes.
.

Página 108 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
14.11 In-Circuit Serial Programming™ (ICSP™) 14.12 Programação de baixa tensão
Os microcontroladores PIC16F627A/628A/648A podem ser O bit LVP da Palavra (Word) de configuração ativa a
programados via comunicação serial enquanto já estiverem programação de baixa tensão. Esse modo permite que o
instalados no circuito final do projeto. microcontrolador seja programado via ICSP usando apenas
Isso é feito simplesmente com duas linhas para clock e dados, uma fonte de 5V. Esse modo elimina a necessidade de colocar
e três outras linhas para alimentação, aterramento e a tensão VIHH a ser colocado no pino MCLR. O bit LVP é
de programação. Isso permite que os clientes fabriquem normalmente apagado para "1", o que permite a programação
placas com dispositivos não programados e programem o em baixa tensão. Nesse modo, o pino RB4/PGM é dedicado à
microcontrolador antes de enviar o produto para consumo. função de programação e deixa de ser de ser um pino de E/S
Isso também permite que o firmware mais recente, corrigido de uso geral. O dispositivo entrará no modo de programação
personalizado seja atualizado no Chip. quando um "1" for colocado no pino RB4/PGM.
O dispositivo é colocado em um modo Programar/Verificar O modo de programação de alta tensão ainda estará
mantendo os pinos RB6 e RB7 baixos e elevando o pino disponível colocando VIHH no pino MCLR.
MCLR (VPP) de VIL para VIHH.
Consulte "PIC16F627/628/648 Especificações em Nota:
Programação de memória EEPROM"(DS41196) para 1: Nesse modo, o pino RB4 não pode mais ser ser usado
obter detalhes. RB6 se torna o clock de programação e RB7 se como um pino de E/S de uso geral.
torna o pino de dados de programação. Tanto RB6 quanto 2: O VDD deve ser de 5,0 V +10% durante as operações
RB7 são entradas de disparo Schmitt-Triger nesse modo. de apagamento.
Após a reinicialização, para colocar o dispositivo no modo
Programação/Verificação o contador de programas (PC) está Se o modo de programação de baixa tensão não for usado, o
no local 00h. Um comando de 6 bits é então fornecido ao bit LVP deve ser programado como "0" para que RB4/PGM
dispositivo. Dependendo do comando, 14 bits de dados do se torne um pino de E/S digital. Para programar o dispositivo,
programa são fornecidos ao dispositivo ou a partir dele, VIHH deve ser colocado em MCLR durante a programação.
dependendo se o comando for um carregamento ou uma
leitura. Para obter detalhes completos sobre a programação O bit LVP só pode ser programado quando a programação é
serial, consulte "PIC16F627A/628A/648A Especificação de inserida com VIHH em MCLR. O bit LVP não pode ser
programação de memória EEPROM" (DS41196). programado quando a programação é inserida com
Veja uma conexão típica programação serial (Figura 14-18). RB4/PGM.

FIGURA 14-18: CONEXÃO TÍPICA EM Deve-se observar que, quando o bit LVP é programado para
CIRCUITO PARA PROGRAMAÇÂO SERIAL "0", somente o modo de programação de alta tensão pode ser
usado para programar o dispositivo.

Página 109 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
14.13 Depuração Em-Circuito
Como a depuração no circuito requer a perda dos pinos de
clock, dados e do pino MCLR, o desenvolvimento do
MPLAB® ICD 2 com um dispositivo de 18 pinos não é
prático.
Um dispositivo especial de 28 pinos PIC16F648A-ICD de 28
pinos é usado com o MPLAB ICD 2 para fornecer pinos de
clock, dados e MCLR separados e assim pode liberar todos os
pinos normalmente disponíveis para o usuário. A depuração
de todas as três versões do PIC16F627A, 628A e 648A é
suportada pelo PIC16F648A-ICD.
Esse dispositivo ICD especial é montado na parte superior de
um conector próprio (Header) e seus sinais são roteados para
o conector MPLAB ICD 2 do MPLAB.
Na parte inferior do conector, há um soquete de 18 pinos que
se conecta ao projeto do usuário por meio de um conector
stand-off de 18 pinos.
Quando o pino ICD do dispositivo PIC16F648A-ICD é
mantido em mantido baixo, a funcionalidade do depurador em
circuito é ativada. Essa função permite funções simples de
depuração simples quando usada com o MPLAB ICD 2.
Quando o microcontrolador tiver esse recurso ativado, alguns
dos recursos recursos não estão disponíveis para uso geral. A
Tabela 14-19 mostra quais recursos são consumidos pelo
depurador em segundo plano.

TABELA 14-19: RECURSOS DO DEPURADOR

Pinos de E/S ICDLK, ICDDATA


Stack Nível 1
Memória de Programa End. 9h precisa ser NOP
300h – 3FEh

O dispositivo PIC16F648A-ICD com conector Header é


fornecido como um conjunto. Consulte o número de peça da
Microchip AC162053.

Página 110 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
ANOTAÇÕES:

Página 111 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A
15.0 RESUMO DO SET DE INSTRUÇÕES O conjunto de instruções é altamente ortogonal e está agrupado
Cada instrução do PIC16F627A/628A/648A é uma palavra de 14 bits em em três categorias básicas:
dividida em um OPCODE que especifica o tipo de instrução e um ou - Operações orientadas a bytes
mais operandos que especificam ainda mais a operação da instrução. - Operações orientadas a bits
A lista de instruções da família está na tabela Tabela 15-2, e tem - Operações literais e de controle
operações orientadas a bytes, orientadas a bits, operações literais e de
controle. A Tabela 15-1 mostra as descrições de campo de opcode. Todas as instruções são executadas em um único ciclo de
Para instruções orientadas por byte, "f" representa um designador de instrução, a menos que um teste condicional seja verdadeiro ou
registrador de arquivo e "d" representa um designador de destino. O o contador de programa seja alterado como resultado de alguma
designador de registrador de arquivo especifica qual registrador de instrução. Nesse caso, a execução leva dois ciclos de instrução,
arquivo deve ser usado pela instrução. sendo o segundo ciclo executado como um NOP.
O designador de destino especifica onde o resultado da operação Um ciclo de instrução consiste em quatro períodos. Portanto,
deverá ser colocado. Se "d" for zero, o resultado será colocado no para uma frequência de oscilador de 4 MHz, o tempo normal de
registro W. Se "d" for um, o resultado será colocado no registro de tempo normal de execução da instrução é de 1 μs. Se um teste
arquivo especificado na instrução. condicional for verdadeiro ou o contador de programa for
Para instruções orientadas a bit, 'b' representa um designador de alterado como resultado de uma instrução, o tempo de
campo de bits que seleciona o número do bit afetado pela operação, execução da instrução tempo de execução da instrução é de 2
enquanto 'f' representa o número do arquivo no qual o bit está μs.
localizado. A Tabela 15-2 lista as instruções reconhecidas pelo
Para operações literais e de controle, 'k' representa uma constante de 8 montador MPASM™. A Figura 15-1 mostra os três formatos
ou 11 bits ou valor literal. gerais que as instruções podem ter.
Nota
15.1 Operações de leitura, modificação e gravação 1: Qualquer opcode não utilizado da lista é
Qualquer instrução que especifique um registro de arquivo como parte reservado. O uso de qualquer opcode reservado
da da instrução executa uma operação de Leitura-Modificação-Escrita pode causar uma operação inesperada.
(R-M-W). O registro é lido, os dados são modificados, e o resultado é 2: Para manter a compatibilidade com futuros
armazenado de acordo com a instrução ou com o designador de produtos PIC MCU, não use as instruções OPTION
destino 'd'. Uma operação de leitura é executada em um registro e TRIS
mesmo que a instrução grave nesse registro. Todos os exemplos usarão o formato a seguir para representar
Por exemplo, uma instrução "clrf PORTB" lerá PORTB, zerará os bits números hexadecimais: 0xhh onde h significa um dígito
de dados e, em seguida, gravará o resultado de volta para PORTB. hexadecimal.
Esse exemplo teria o resultado não intencional de que a condição que
define o sinalizador RBIF seria zerada para pinos configurados como FIGURA 15-1 INSTRUÇÕES FORMATO GERAL
entradas usando o recurso de interrupção-ao-mudar de PORTB.

TABELA 15-1: DESCRIÇÃO DOS CAMPOS OPCODE

Página 112 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G


PIC16F 627A / 628A / 648A

O RESTANTE DAS INSTRUÇÕES ASSEMBLY NÃO FOI TRADUZIDO !

Se entender que exista um grupo de pessoas precisando disso, traduzirei.


Ocorre que a grande maioria dos usuários utiliza linguagem C ou MikroC, e já tem
literatura em português suficiente a esse respeito.
Agradeço a quem encontrar erros, inconsistências ou entender que parte da
tradução não traga clareza e queira entrar em contato comigo, para que eu melhore
essa versão 1.0.

Abraços e agradeço aos interessados

Herbert Lopes herbertlopesfilho@gmail.com 61 98354-5995

Página 113 © 2024 Microchip Technology Inc = Skybot Electronics. DS40044G

Você também pode gostar