Você está na página 1de 234

Machine Translated by Google

PIC16F87XA
Ficha de dados

Flash aprimorado de 28/40/44 pinos


Microcontroladores

ÿ 2003 Microchip Technology Inc. DS39582B


Machine Translated by Google

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



Os produtos Microchip atendem às especificações contidas em sua Folha de Dados Microchip específica.


A Microchip acredita que sua família de produtos é uma das famílias mais seguras de seu tipo no mercado hoje, quando usado da maneira pretendida e em condições
normais.


Existem métodos desonestos e possivelmente ilegais usados para violar o recurso de proteção do código. Todos esses métodos, até onde sabemos, requerem
o uso dos produtos Microchip de uma maneira fora das especificações operacionais contidas nas Folhas de Dados da Microchip. Muito provavelmente, a pessoa que
faz 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 podem garantir a segurança de seu código. A proteção do 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 do microchip podem ser uma violação da Lei de Direitos Autorais do Milênio Digital. Se tais atos
permitir o acesso não autorizado ao seu software ou outro trabalho protegido por direitos autorais, você pode ter o direito de processar judicialmente sob essa Lei.

As informações contidas nesta publicação sobre o dispositivo Marcas registradas

aplicações e afins destina-se apenas por sugestão


O nome e o logotipo do Microchip, o logotipo do Microchip, Accuron,
e pode ser substituído por atualizações. É sua responsabilidade
dsPIC, KEELOQ, MPLAB, PIC, PICmicro, PICSTART, PRO MATE
certifique-se de que seu aplicativo atende às suas especificações.
e PowerSmart são marcas registradas da
Nenhuma representação ou garantia é dada e nenhuma responsabilidade é
Microchip Technology Incorporada nos EUA e em outros
assumido pela Microchip Technology Incorporated com respeito países.
à precisão ou uso de tais informações, ou violação de
patentes ou outros direitos de propriedade intelectual decorrentes de tais AmpLab, FilterLab, microID, MXDEV, MXLAB, PICMASTER,
uso ou de outra forma. Uso dos produtos da Microchip como críticos SEEVAL e The Embedded Control Solutions Company são
componentes em sistemas de suporte à vida não é autorizado, exceto marcas registradas da Microchip Technology Incorporated
nos Estados Unidos
com a aprovação expressa por escrito da Microchip. Nenhuma licença é
transmitida, implícita ou de outra forma, sob qualquer Aplicação Maestro, dsPICDEM, dsPICDEM.net, ECAN,
direitos de propriedade. ECONOMONITOR, FanSense, FlexROM, fuzzyLAB, In-Circuit Serial
Programming, ICSP, ICEPIC, microPort,
Memória migrável, MPASM, MPLIB, MPLINK, MPSIM,
PICkit, PICDEM, PICDEM.net, PowerCal, PowerInfo,
PowerMate, PowerTool, rfLAB, rfPIC, Select Mode,
SmartSensor, SmartShunt, SmartTel e Total Endurance são
marcas registradas da Microchip Technology Incorporated no
EUA e outros países.

Serialized Quick Turn Programming (SQTP) é uma marca de serviço


da Microchip Technology Incorporada nos EUA

Todas as outras marcas registradas aqui mencionadas são propriedade de seus


respectivas empresas.

© 2003, Microchip Technology Incorporated, Impresso no


EUA, todos os direitos reservados.

Impresso em papel reciclado.

A Microchip recebeu a certificação do sistema de


qualidade QS-9000 para sua sede mundial, design
e instalações de fabricação de wafer em Chandler
e Tempe, Arizona, em julho de 1999 e Mountain
View, Califórnia, em março de 2002.
Os processos e procedimentos do sistema de qualidade
da empresa são compatíveis com QS-9000 para seus
MCUs PICmicro® de 8 bits, dispositivos de salto de
código KEELOQ®, 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 projeto e
fabricação de sistemas de desenvolvimento é certificado
pela ISO 9001.

DS39582B-página ii ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
Microcontroladores Flash aprimorados de 28/40/44 pinos

Dispositivos incluídos nesta folha de dados: Características analógicas:

• PIC16F873A • PIC16F876A • Analógico-Digital de 10 bits, até 8 canais


• PIC16F874A • PIC16F877A Conversor (A/D) •

Reinicialização de Brown-out (BOR)

• Módulo Comparador Analógico com:


CPU RISC de alto desempenho:
- Dois comparadores analógicos
• Apenas 35 instruções de uma única palavra para aprender
- Referência de tensão programável no chip
• Todas as instruções de ciclo único, exceto as ramificações do (VREF) módulo
programa, que são de dois ciclos
- Multiplexação de entrada programável das entradas do dispositivo
• Velocidade de operação: DC – entrada de clock de 20 MHz e referência de tensão interna
DC - ciclo de instrução de 200 ns
- As saídas do comparador são acessíveis externamente
• Até 8K x 14 palavras de memória de programa Flash,
Até 368 x 8 bytes de memória de dados (RAM),
Características especiais do microcontrolador:
Até 256 x 8 bytes de memória de dados EEPROM

• Pinagem compatível com outros 28 pinos ou 40/44 pinos • 100.000 ciclos de apagamento/gravação Flash aprimorado
Microcontroladores PIC16CXXX e PIC16FXXX memória de programa típica

• 1.000.000 ciclos de apagamento/gravação de dados EEPROM

Características periféricas: memória típica

• Retenção de dados EEPROM > 40 anos


• Timer0: temporizador/contador de 8 bits com pré-escalador de 8 bits
• Auto-reprogramável sob controle de software
• Timer1: temporizador/contador de 16 bits com prescaler,
• In-Circuit Serial Programming™ (ICSP™) através de dois
pode ser incrementado durante o sono via cristal/relógio externo
pinos

• Programação serial em circuito de 5V de alimentação única


• Timer2: temporizador/contador de 8 bits com período de 8 bits
registrar, prescaler e postscaler • Dois módulos • Watchdog Timer (WDT) com seu próprio oscilador RC no chip para
operação confiável
Capture, Compare, PWM
• Proteção de código programável
- A captura é de 16 bits, máx. a resolução é de 12,5 ns
• Modo de suspensão de economia de energia
- A comparação é de 16 bits, máx. a resolução é de 200 ns
- PWM máx. a resolução é 10 bits • Opções de oscilador selecionáveis

• Depuração In-Circuit (ICD) através de dois pinos


• Porta serial síncrona (SSP) com SPI™
(Modo Mestre) e I2C™ (Mestre/Escravo)

• Receptor Assíncrono Síncrono Universal Tecnologia CMOS:


Transmissor (USART/SCI) com detecção de endereço de 9 • Tecnologia Flash/EEPROM de baixa potência e alta
bits
velocidade
• Porta Escrava Paralela (PSP) – 8 bits de largura com • Design totalmente estático
controles externos RD, WR e CS (somente 40/44 pinos)
• Ampla faixa de tensão de operação (2,0 V a 5,5 V) • Faixas de
• Circuito de detecção de brown-out para
temperatura comercial e industrial
Reinicialização de Brown-out (BOR)
• Baixo consumo de energia

MSSP
Dados da Memória do Programa
EEPROM 10 bits PCC Temporizadores
Dispositivo SRAM E/S USAR Comparadores
# Única palavra (Bytes) A/D (can) (PWM) Mestre 8/16 bits
Bytes (Bytes) SPI
Instruções I 2C

PIC16F873A 7,2K 4096 192 128 22 5 2 Sim Sim Sim 01/02 2


PIC16F874A 7,2K 4096 192 128 33 8 2 Sim Sim Sim 01/02 2

PIC16F876A 14,3K 8192 368 256 22 5 2 sim Sim Sim 01/02 2


PIC16F877A 14,3K 8192 368 256 33 8 2 sim Sim Sim 01/02 2

ÿ 2003 Microchip Technology Inc. DS39582B-página 1


Machine Translated by Google

PIC16F87XA
Diagramas de pinos

PDIP de 28 pinos, SOIC, SSOP

MCLR/VPP 28 RB7/PGD
RA0/YAN0 12 27 RB6/PGC
RA1/AN1 3 26 RB5

RA2/AN2/VREF-/CVREF 4 25 RB4
RA3/AN3/VREF+ 5 24 RB3/PGM

RA4/T0CKI/C1OUT 6 23 RB2
RA5/AN4/SS/C2OUT 7 22 RB1

VSS 8 21 RB0/INT
OSC1 / CLKI 9 20 VDD
OSC2/CLKO 10 PIC16F873A/
876A 19 VSS
RC0/T1OSO/T1CKI 11 18 RC7/RX/DT
RC1/T1OSI/CCP2 12 17 RC6/TX/CK
RC2/CCP1 13 16 RC5/SDO
RC3/SCK/SCL 14 15 RC4/SDI/SDA

QFN de 28 pinos
RA1/
AN1 YAN0
RA0/ MCLR/
VPP PGD
RB7/ PGC
RB6/ RB5 RB4

28 25
26
27 22
23
24

RA2/AN2/VREF-/CVREF 21 RB3/PGM
RA3/AN3/VREF+ 1 20 RB2
RA4/T0CKI/C1OUT 2 19 RB1
PIC16F873A
RA5/AN4/SS/C2OUT 34 18 RB0/INT
PIC16F876A
VSS 5 17 VDD
OSC1 / CLKI 6 16 VSS
9
8 14
13
12
11
10
OSC2/CLKO 7 15 RC7/RX/DT

RC5/
SDO

QFN de 44 pinos CCP1


RC2/
RC6/
TX/
CK

RC4/
SDA
SDI/
SCK/
RC3/
SCL

T1OSI/
CCP2
RC1/

T1OSO/
T1CKI
RC0/

RC6/
TX/
CK RC5/
SDO RC4/
SDA
SDI/ PSP3
RD3/ PSP2
RD2/ PSP1
RD1/ PSP0
RD0/ SCK/
RC3/
SCL CCP1
RC2/ T1OSO/
T1CKI
RC0/ T1OSI/
CCP2
RC1/

34
35
36
37
38
39
40
41
42
43
44

RC7/RX/DT 33 OSC2/CLKO
RD4/PSP4 1 32 OSC1 / CLKI
RD5/PSP5 2 31 VSS
RD6/PSP6 3 30 VSS
RD7/PSP7 4
PIC16F874A 29 VDD
VSS 5 28 VDD
VDD 6
PIC16F877A RE2/CS/AN7
27
VDD 7 26 RE1/WR/AN6
RB0/INT 8
25 RE0/RD/AN5
RB1 9 21
20
22
19
18
17
16
15
14
13
12 24 RA5/AN4/SS/C2OUT
RB2 10 11 23 RA4/T0CKI/C1OUT

NC
RB5 RB4

YAN0
RA0/ RA1/
AN1
PGM
RB3/ PGC
RB6/ PGD
RB7/
MCLR/
VPP

VREF+
AN3/
RA3/

CVREF
VREF-/
AN2/
RA2/

DS39582B-página 2 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
Diagramas de pinos (continuação)

PDIP de 40 pinos

MCLR/VPP 40 RB7/PGD
RA0/YAN0 1 39 RB6/PGC
RA1/AN1 2 38 RB5
RA2/AN2/VREF-/CVREF 3 37 RB4
RA3/AN3/VREF+ 4 36 RB3/PGM
RA4/T0CKI/C1OUT 5 35 RB2
RA5/AN4/SS/C2OUT 6 34 RB1
RE0/RD/AN5 78 33 RB0/INT
RE1/WR/AN6 9 32 VDD
RE2/CS/AN7 10 31 VSS
VDD 11 30 RD7/PSP7
VSS 12 29 RD6/PSP6
OSC1 / CLKI 13 PIC16F874A/
877A 28 RD5/PSP5
OSC2/CLKO 14 27 RD4/PSP4
RC0/T1OSO/T1CKI 15 26 RC7/RX/DT
RC1/T1OSI/CCP2 16 25 RC6/TX/CK
RC2/CCP1 17 24 RC5/SDO
RC3/SCK/SCL 18 23 RC4/SDI/SDA
RD0/PSP0 19 22 RD3/PSP3 AN2/
RA2/ VREF+
AN3/
CVREF RA3/
VREF-/ RA1/
AN1 YAN0
RA0/ MCLR/
VPP NC PGD
RB7/ PGC
RB6/ RB4 RB5 NC
RD1/PSP1 20 21 RD2/PSP2

CLP de 44 pinos 40
41
42
43
144
2
3
4
5
6

RA4/T0CKI/C1OUT 39 RB3/PGM
7
RA5/AN4/SS/C2OUT 38 RB2
8
RE0/RD/AN5 9 37 RB1
RE1/WR/AN6 10 36 RB0/INT
RE2/CS/AN7 11 PIC16F874A 35 VDD
VDD 12 34 VSS
VSS PIC16F877A 33 RD7/PSP7
13
OSC1 / CLKI 14 32 RD6/PSP6
OSC2/CLKO 15 31 RD5/PSP5
RC0/T1OSO/T1CK1 16 28
27
26
25
24
23
22
21
20
19
18 30 RD4/PSP4
NC 17 29 RC7/RX/DT

NC

RC6/
TX/
CK RC5/
SDO RC4/
SDA
SDI/ PSP3
RD3/ PSP2
RD2/ PSP1
RD1/ PSP0
RD0/ SCK/
RC3/
SCL CCP1
RC2/ T1OSI/
CCP2
RC1/ NC
RC5/
SDO

CCP1
RC2/ PSP0
RD0/ PSP1
RD1/ PSP2
RD2/ PSP3
RD3/
RC6/
TX/
CK

RC4/
SDA
SDI/
SCK/
RC3/
SCL

TQFP de 44 pinos T1OSI/


CCP2
RC1/

40
41
42
43
44
34
35
36
37
38
39

RC7/RX/DT 33 NC
RD4/PSP4 1 32 RC0/T1OSO/T1CKI
RD5/PSP5 2 31 OSC2/CLKO
RD6/PSP6 3 30 OSC1 / CLKI
RD7/PSP7 4 PIC16F874A 29 VSS
VSS 5 28 VDD
PIC16F877A
VDD 6 27 RE2/CS/AN7
RB0/INT 7 26 RE1/WR/AN6
RB1 8 25 RE0/RD/AN5
RB2 9 22
21
20
19
18
17
16
15
14
13
12 24 RA5/AN4/SS/C2OUT
RB3/PGM 10 11 23 RA4/T0CKI/C1OUT

NC NC
RB5 RB4

YAN0
RA0/ RA1/
AN1
PGC
RB6/ PGD
RB7/
MCLR/
VPP

VREF+
AN3/
RA3/

CVREF
VREF-/
AN2/
RA2/

ÿ 2003 Microchip Technology Inc. DS39582B-página 3


Machine Translated by Google

PIC16F87XA
Índice
1.0 Visão geral do dispositivo............................................. .................................................. .................................................. ......................... 5 2.0 Organização da
Memória ........................ .................................................. .................................................. ................................... 15 3.0 EEPROM de dados e memória de programa
flash ...... .................................................. .................................................. .......... 33 4.0 Portas de E/
S .............................. .................................................. .................................................. .................................................. .... 41 5.0 Módulo
Timer0................................................ .................................................. .................................................. ......................... 53 6.0 Módulo
Temporizador1................ .............................. .................................................. .................................................. ....................... 57 7.0 Módulo
Temporizador2 ........................ .................................................. .................................................. ............................................. 61 8.0 Captura/ Comparar/Módulos
PWM............................................. .................................................. ............................................. 63 9.0 Serial Síncrono Mestre Módulo de porta
(MSSP) ............................................. .................................................. ......................... 71 10.0 Transmissor receptor assíncrono síncrono universal endereçável
(USART) ............... ......................................... 111 11.0 Analógico-Digital Módulo Conversor (A/D) ............................................. .................................................. .........................
127 12.0 Comparador Módulo .................................................. .................................................. .................................................. ........... 135 13.0 Módulo de
Referência de Tensão do Comparador ................................. .................................................. ............................................. 141 14.0 Recursos Especiais da
CPU ............................................. .................................................. ......................................... 143 15.0 Resumo do Conjunto de
Instruções ............................................. .................................................. .................................................. ....... 159 16.0 Suporte ao
Desenvolvimento ........................................ .................................................. .................................................. .......... 167 17.0 Características
Elétricas ....................... .................................................... .................................................. ......................................... 173 18.0 Gráficos e Tabelas de Características
DC e AC .. .................................................. .................................................. ............... 197 19.0 Informações de
Embalagem .............................. .................................................. .................................................. ......................... 209 Apêndice A: Histórico de
Revisão ....................... .................................................. .................................................. ......................... 219 Apêndice B: Diferenças de
Dispositivos......... .................................................. .................................................. ............................................. 219 Apêndice C: Conversão
Considerações .................................................. .................................................. ......................................... ...... 220
Índice .......................................... .................................................. .................................................. .................................................. . 221 Suporte On-
line................................................ .................................................. .................................................. ......................... 229 Informações de Sistemas e Linha Direta de
Atualização ........... .................................................. .................................................. ......................... 229 Resposta do
Leitor .................................. .................................................. .................................................. ........................................ 230 PIC16F87XA Sistema de Identificação do
Produto ............................................. .................................................. ....................................... 231

AOS NOSSOS VALIOSOS 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
isso, continuaremos aprimorando nossas publicações para melhor atender às suas necessidades. Nossas publicações serão refinadas e aprimoradas à medida
que novos volumes e atualizações forem introduzidos.

Se você tiver dúvidas ou comentários sobre esta publicação, entre em contato com o Departamento de Comunicações de Marketing por e-mail em
docerrors@mail.microchip.com ou envie por fax o Formulário de Resposta do Leitor no verso desta folha de dados para (480) 792-4150.
Congratulamo-nos com o seu feedback.

Folha de dados mais atual


Para obter a versão mais atualizada desta folha de dados, 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 da folha de dados e soluções recomendadas, pode existir para os dispositivos atuais. À
medida que os problemas do dispositivo/documentação se tornarem conhecidos por nós, publicaremos uma folha de errata. A errata especificará a revisão do
silício e a revisão do documento ao qual se aplica.
Para determinar se existe uma folha de errata para um determinado dispositivo, verifique com um dos seguintes: • Site
mundial da Microchip; http://www.microchip.com • Seu escritório de vendas local da Microchip (veja a última página) • O

Microchip Corporate Literature Center; FAX dos EUA: (480) 792-7277 Ao entrar em contato com um escritório de vendas

ou centro de literatura, especifique qual dispositivo, revisão de silício e folha de dados (incluir número de literatura) você

está usando.

Sistema de Notificação do Cliente


Registre-se em nosso site em www.microchip.com/cn para receber as informações mais atuais sobre todos os nossos produtos.

DS39582B-página 4 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
1.0 VISÃO GERAL DO DISPOSITIVO Os recursos disponíveis estão resumidos na Tabela 1-1.
Diagramas de blocos do PIC16F873A/876A e
Este documento contém informações específicas do dispositivo Os dispositivos PIC16F874A/877A são fornecidos na Figura 1-1
sobre os seguintes dispositivos: e Figura 1-2, respectivamente. As pinagens para estes
• PIC16F873A as famílias de dispositivos estão listadas na Tabela 1-2 e na Tabela 1-3.

• PIC16F874A Informações adicionais podem ser encontradas no PICmicro®


• PIC16F876A Manual de referência de médio porte (DS33023), que pode

• PIC16F877A ser obtido com o representante de vendas local da Microchip ou baixado


do site da Microchip. o
Os dispositivos PIC16F873A/876A estão disponíveis apenas em 28 pinos O Manual de Referência deve ser considerado um documento
pacotes, enquanto os dispositivos PIC16F874A/877A estão disponíveis complementar a esta ficha técnica e é de leitura altamente recomendada
em pacotes de 40 pinos e 44 pinos. Todos os dispositivos do para um melhor entendimento do dispositivo
A família PIC16F87XA compartilha arquitetura comum com arquitetura e operação dos módulos periféricos.
as seguintes diferenças:

• O PIC16F873A e o PIC16F874A possuem metade da memória total


no chip do PIC16F876A e PIC16F877A

• Os dispositivos de 28 pinos possuem três portas de E/S, enquanto os


Os dispositivos de 40/44 pinos têm cinco

• Os dispositivos de 28 pinos têm quatorze interrupções, enquanto


os dispositivos de 40/44 pinos têm quinze
• Os dispositivos de 28 pinos têm cinco canais de entrada A/D,
enquanto os dispositivos de 40/44 pinos têm oito
• A Porta Escrava Paralela é implementada apenas nos dispositivos
de 40/44 pinos

TABELA 1-1: RECURSOS DO DISPOSITIVO PIC16F87XA


Características principais PIC16F873A PIC16F874A PIC16F876A PIC16F877A

Frequência de operação CC - 20 MHz CC - 20 MHz CC - 20 MHz CC - 20 MHz

Reinicializações (e atrasos) POR, BOR POR, BOR POR, BOR POR, BOR
(PWRT, OST) (PWRT, OST) (PWRT, OST) (PWRT, OST)

Memória de programa flash 4K 4K 8K 8K


(palavras de 14 bits)

Memória de dados (bytes) 192 192 368 368

Memória de dados EEPROM (bytes) 128 128 256 256

Interrupções 14 15 14 15

Portas de E/S Portas A, B, C Portas A, B, C, D, E Portas A, B, C Portas A, B, C, D, E


Temporizadores 3 3 3 3

Módulos de captura/comparação/PWM 2 2 2 2

Comunicações seriais MSSP, USART MSSP, USART MSSP, USART MSSP, USART
Comunicações paralelas — PSP — PSP

Módulo analógico-digital de 10 bits 5 canais de entrada 8 canais de entrada 5 canais de entrada 8 canais de entrada

Comparadores analógicos 2 2 2 2

Conjunto de instruções 35 Instruções 35 Instruções 35 Instruções 35 Instruções

Pacotes PDIP de 28 pinos PDIP de 40 pinos PDIP de 28 pinos PDIP de 40 pinos


SOC de 28 pinos CLP de 44 pinos SOC de 28 pinos CLP de 44 pinos
SSOP de 28 pinos TQFP de 44 pinos SSOP de 28 pinos TQFP de 44 pinos
QFN de 28 pinos QFN de 44 pinos QFN de 28 pinos QFN de 44 pinos

ÿ 2003 Microchip Technology Inc. DS39582B-página 5


Machine Translated by Google

PIC16F87XA
FIGURA 1-1: DIAGRAMA DE BLOCO PIC16F873A/876A
13 8 TRAZ
Barramento de dados

Contador de programas
RA0/YAN0
Instantâneo RA1/AN1

Programa
RA2/AN2/VREF-/CVREF
Memória BATER RA3/AN3/VREF+
Pilha de 8 níveis
Arquivo RA4/T0CKI/C1OUT
(13 bits)
Registros RA5/AN4/SS/C2OUT

Programa 14
Ônibus Endereço RAM(1) 9

Endereço MUX
Instrução reg
Indireto PORTB
Endereço Direto 7
8 Endereço
RB0/INT
RB1
FSR reg
RB2
RB3/PGM
Registro de status
8 RB4
RB5
RB6/PGC
3 MUX RB7/PGD
Energizar
Cronômetro

Instrução Oscilador
Decodificar & Temporizador de inicialização
VAI
Ao controle
Ligar
Redefinir 8 PORTO

Cronometragem cão de guarda RC0/T1OSO/T1CKI


Geração Cronômetro W reg RC1/T1OSI/CCP2
OSC1 / CLKI Apagão RC2/CCP1
OSC2/CLKO Redefinir RC3/SCK/SCL
Em circuito RC4/SDI/SDA
Depurador RC5/SDO
RC6/TX/CK
Baixa voltagem
Programação RC7/RX/DT

MCLR VDD, VSS

Temporizador0 Temporizador1 Temporizador2 A/D de 10 bits

Síncrono Tensão
Dados EEPROM PCC1,2 USAR Comparador
Porta serial Referência

Dispositivo Programa Flash Memória de dados Dados EEPROM

PIC16F873A palavras 4K 192 bytes 128 Bytes


PIC16F876A 8 mil palavras 368 Bytes 256 Bytes

Nota 1: Os bits de ordem superior são do registrador de status.

DS39582B-página 6 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
FIGURA 1-2: DIAGRAMA DE BLOCO PIC16F874A/877A
13 8 TRAZ
Barramento de dados

Contador de programas
RA0/YAN0
Instantâneo RA1/AN1
Programa RA2/AN2/VREF-/CVREF
Memória BATER RA3/AN3/VREF+
Pilha de 8 níveis
Arquivo RA4/T0CKI/C1OUT
(13 bits)
Registros RA5/AN4/SS/C2OUT

Programa 14 PORTB
Ônibus Endereço RAM(1) 9
RB0/INT
Endereço MUX RB1
Instrução reg
RB2
Endereço Direto 7 Indireto
8 RB3/PGM
Endereço
RB4

FSR reg RB5


RB6/PGC
RB7/PGD
Registro de status
8
PORTO
RC0/T1OSO/T1CKI
3 MUX RC1/T1OSI/CCP2
Energizar
Cronômetro RC2/CCP1
RC3/SCK/SCL
Instrução Oscilador
RC4/SDI/SDA
Decodificar & Temporizador de inicialização
VAI RC5/SDO
Ao controle
Ligar RC6/TX/CK
Redefinir 8
RC7/RX/DT
Cronometragem cão de guarda
Geração Cronômetro
W reg
PORTD
OSC1 / CLKI Apagão RD0/PSP0
OSC2/CLKO Redefinir RD1/PSP1

Em circuito RD2/PSP2

Depurador RD3/PSP3
RD4/PSP4
Baixa voltagem
Programação RD5/PSP5
RD6/PSP6
RD7/PSP7

PORTÃO

MCLR VDD, VSS RE0/RD/AN5

RE1/WR/AN6

RE2/CS/AN7

Paralelo
Temporizador0 Temporizador1 Temporizador2 A/D de 10 bits
Porta Escrava

Síncrono Tensão
Dados EEPROM PCC1,2 USAR Comparador
Porta serial Referência

Dispositivo Programa Flash Memória de dados Dados EEPROM

PIC16F874A palavras 4K 192 bytes 128 Bytes


PIC16F877A 8 mil palavras 368 Bytes 256 Bytes

Nota 1: Os bits de ordem superior são do registrador de status.

ÿ 2003 Microchip Technology Inc. DS39582B-página 7


Machine Translated by Google

PIC16F87XA
TABELA 1-2: DESCRIÇÃO DA PINAGEM PIC16F873A/876A

PDIP, SOIC, QFN E/S/P Amortecedor


Nome do pino Descrição
Pino SSOP# Alfinete# Modelo Modelo

OSC1 / CLKI 9 6
ST/CMOS(3) Cristal oscilador ou entrada de relógio externo.
OSC1 EU

Entrada de cristal oscilador ou entrada de fonte de relógio externa. buffer ST quando


configurado em modo RC; caso contrário, CMOS.
CLKI EU

Entrada de fonte de clock externa. Sempre associado à função de pinos OSC1


(ver pinos OSC1/CLKI, OSC2/CLKO).

OSC2/CLKO 10 7 — Cristal oscilador ou saída de relógio.


OSC2 O Saída de cristal do oscilador. Conecta-se ao cristal ou ressonador no modo Crystal
Oscillator.
CLKO O No modo RC, o pino OSC2 emite CLKO, que tem 1/4 da frequência de OSC1 e
denota a taxa de ciclo de instrução.

MCLR/VPP 1 26 ST Master Clear (entrada) ou tensão de programação (saída).


MCLR EU

Entrada Master Clear (Reset). Este pino é um reset ativo baixo para o dispositivo.

VPP P Programação de entrada de tensão.

PORTA é uma porta de E/S bidirecional.

RA0/YAN0 2 27 TTL
RA0 E/S E/S digitais.
AN0 EU

Entrada analógica 0.

RA1/AN1 3 28 TTL
RA1 E/S E/S digitais.
AN1 EU

Entrada analógica 1.

RA2/AN2/VREF-/ 4 1 TTL

CVREF E/S E/S digitais.


RA2 EU

Entrada analógica 2.
AN2 EU

Entrada de tensão de referência A/D (Baixa).


VREF O Saída VREF do comparador .
CVREF
RA3/AN3/VREF+ 5 2 TTL
RA3 E/S E/S digitais.
AN3 EU

Entrada analógica 3.
VREF+ EU

Entrada de tensão de referência A/D (alta).

RA4/T0CKI/C1OUT 6 3 ST
RA4 E/S Digital I/O – Dreno aberto quando configurado como saída.
T0CKI EU

Entrada de relógio externo Timer0.


C1OUT O Saída do comparador 1.

RA5/AN4/SS/C2OUT 7 4 TTL
RA5 E/S E/S digitais.
AN4 EU

Entrada analógica 4.
SS EU

Entrada de seleção do escravo SPI.


C2OUT O Saída do comparador 2.

Legenda: I = entrada O = saída E/S = entrada/saída P = potência — = Não usado TTL


= entrada TTL ST = entrada Schmitt Trigger Nota 1: Este buffer é uma entrada Schmitt Trigger quando configurado

como interrupção externa.


2: Este buffer é uma entrada Schmitt Trigger quando usado no modo de programação serial.
3: Este buffer é uma entrada Schmitt Trigger quando configurado no modo RC Oscillator e uma entrada CMOS caso contrário.

DS39582B-página 8 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
TABELA 1-2: DESCRIÇÃO DA PINOUT PIC16F873A/876A (CONTINUAÇÃO)
PDIP, SOIC, QFN E/S/P Amortecedor
Nome do pino Descrição
Pino SSOP# Alfinete# Modelo Modelo

PORTB é uma porta de E/S bidirecional. O PORTB pode ser programado


por software para pull-ups fracos internos em todas as entradas.
RB0/INT 21 18 TTL/ST(1)
RB0 E/S E/S digitais.
INT EU

Interrupção externa.
RB1 22 19 E/S TTL E/S digitais.
RB2 23 20 E/S TTL E/S digitais.
RB3/PGM 24 21 TTL
RB3 E/S E/S digitais.
PGM EU

Pino de habilitação de programação ICSP de baixa tensão (fonte única).


RB4 25 22 E/S TTL E/S digitais.
RB5 26 23 E/S TTL E/S digitais.
RB6/PGC 27 24 TTL/ST(2)
RB6 E/S E/S digitais.
PGC EU

Depurador no circuito e relógio de programação ICSP.


RB7/PGD 28 25 TTL/ST(2)
RB7 E/S E/S digitais.
PGD E/S Depurador no circuito e dados de programação ICSP.

PORTC é uma porta de E/S bidirecional.


RC0/T1OSO/T1CKI 11 8 ST
RC0 E/S E/S digitais.
T1OSO O Saída do oscilador Timer1.
T1CKI EU

Entrada de relógio externo Timer1.


RC1/T1OSI/CCP2 12 9 ST
RC1 E/S E/S digitais.
T1OSI EU

Entrada do oscilador Timer1.


PCC2 E/S Entrada Capture2, saída Compare2, saída PWM2.
RC2/CCP1 13 10 ST
RC2 E/S E/S digitais.
PCC1 E/S Entrada Capture1, saída Compare1, saída PWM1.
RC3/SCK/SCL 14 11 ST
RC3 E/S E/S digitais.
SCK E/S Entrada/saída de relógio serial síncrona para o modo SPI.
SCL E/S Entrada/saída de relógio serial síncrona para o modo I2C .
RC4/SDI/SDA 15 12 ST
RC4 E/S E/S digitais.
SDI EU Dados SPI em.
SDA E/S I /O de dados 2C.

RC5/SDO 16 13 ST
RC5 E/S E/S digitais.
SDO O Saída de dados SPI.

RC6/TX/CK 17 14 ST
RC6 E/S E/S digitais.
TX O Transmissão assíncrona USART.
CK E/S Relógio síncrono USART1.
RC7/RX/DT 18 15 ST
RC7 E/S E/S digitais.
RX EU

Recepção assíncrona USART.


TD E/S Dados síncronos USART.

VSS 8, 19 5, 6 P — Referência de aterramento para pinos lógicos e de E/S.

VDD 20 17 P — Alimentação positiva para pinos lógicos e I/O.

Legenda: I = entrada O = saída E/S = entrada/saída P = potência


— = Não usado TTL = Entrada TTL ST = Entrada Schmitt Trigger
Nota 1: Este buffer é uma entrada Schmitt Trigger quando configurado como interrupção externa.
2: Este buffer é uma entrada Schmitt Trigger quando usado no modo de programação serial.
3: Este buffer é uma entrada Schmitt Trigger quando configurado no modo RC Oscillator e uma entrada CMOS caso contrário.

ÿ 2003 Microchip Technology Inc. DS39582B-página 9


Machine Translated by Google

PIC16F87XA
TABELA 1-3: DESCRIÇÃO DA PINAGEM PIC16F874A/877A
PDIP CLP TQFP QFN E/S/P Amortecedor
Nome do pino Descrição
Alfinete# Alfinete# Alfinete# Alfinete# Modelo Modelo

OSC1 / CLKI 13 14 30 32 ST/CMOS(4) Cristal oscilador ou entrada de relógio externo.


OSC1 EU
Entrada de cristal oscilador ou entrada de fonte de relógio externa.
buffer ST quando configurado em modo RC; caso contrário, CMOS.

CLKI EU
Entrada de fonte de clock externa. Sempre associado à função de
pinos OSC1 (ver pinos OSC1/CLKI, OSC2/CLKO).

OSC2/CLKO 14 15 31 33 — Cristal oscilador ou saída de relógio.


OSC2 O Saída de cristal do oscilador.
Conecta-se ao cristal ou ressonador no modo Crystal
Oscillator.
CLKO O No modo RC, o pino OSC2 emite CLKO, que tem 1/4 da
frequência de OSC1 e denota a taxa de ciclo de instrução.

MCLR/VPP 1 2 18 18 ST Master Clear (entrada) ou tensão de programação (saída).


MCLR EU

Entrada Master Clear (Reset). Este pino é um reset ativo baixo para
o dispositivo.

VPP P Programação de entrada de tensão.

PORTA é uma porta de E/S bidirecional.

RA0/YAN0 2 3 19 19 TTL
RA0 E/S E/S digitais.
AN0 EU

Entrada analógica 0.

RA1/AN1 3 4 20 20 TTL
RA1 E/S E/S digitais.
AN1 EU

Entrada analógica 1.

RA2/AN2/VREF-/CVREF 4 5 21 21 TTL
RA2 E/S E/S digitais.
AN2 EU

Entrada analógica 2.
VREF EU

Entrada de tensão de referência A/D (Baixa).


CVREF O Saída VREF do comparador .

RA3/AN3/VREF+ 5 6 22 22 TTL
RA3 E/S E/S digitais.
AN3 EU

Entrada analógica 3.
VREF+ EU

Entrada de tensão de referência A/D (alta).

RA4/T0CKI/C1OUT 6 7 23 23 ST
RA4 E/S Digital I/O – Dreno aberto quando configurado como saída.

T0CKI EU

Entrada de relógio externo Timer0.


C1OUT O Saída do comparador 1.

RA5/AN4/SS/C2OUT 7 8 24 24 TTL
RA5 E/S E/S digitais.
AN4 EU

Entrada analógica 4.
SS EU

Entrada de seleção do escravo SPI.


C2OUT O Saída do comparador 2.

Legenda: I = entrada O = saída E/S = entrada/saída P = potência


— = Não usado TTL = Entrada TTL ST = Entrada Schmitt Trigger
Nota 1: Este buffer é uma entrada Schmitt Trigger quando configurado como interrupção externa.
2: Este buffer é uma entrada Schmitt Trigger quando usado no modo de programação serial.
3: Este buffer é uma entrada Schmitt Trigger quando configurado no modo RC Oscillator e uma entrada CMOS caso contrário.

DS39582B-página 10 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
TABELA 1-3: DESCRIÇÃO DA PINOUT PIC16F874A/877A (CONTINUAÇÃO)
PDIP CLP TQFP QFN E/S/P Amortecedor
Nome do pino Descrição
Alfinete# Alfinete# Alfinete# Alfinete# Modelo Modelo

PORTB é uma porta de E/S bidirecional. O PORTB pode ser


programado por software para pull-up fraco interno em todas as
entradas.
RB0/INT 33 36 8 9 TTL/ST(1)
RB0 E/S E/S digitais.
INT EU

Interrupção externa.
RB1 34 37 9 10 E/S TTL E/S digitais.
RB2 35 38 10 11 E/S TTL E/S digitais.
RB3/PGM 36 39 11 12 TTL
RB3 E/S E/S digitais.
PGM EU

Pino de habilitação de programação ICSP de baixa tensão.


RB4 37 41 14 14 E/S TTL E/S digitais.
RB5 38 42 15 15 E/S TTL E/S digitais.
RB6/PGC 39 43 16 16 TTL/ST(2)
RB6 E/S E/S digitais.
PGC EU

Depurador no circuito e relógio de programação ICSP.


RB7/PGD 40 44 17 17 TTL/ST(2)
RB7 E/S E/S digitais.
PGD E/S Depurador no circuito e dados de programação ICSP.

Legenda: I = entrada O = saída E/S = entrada/saída P = potência


— = Não usado TTL = Entrada TTL ST = Entrada Schmitt Trigger
Nota 1: Este buffer é uma entrada Schmitt Trigger quando configurado como interrupção externa.
2: Este buffer é uma entrada Schmitt Trigger quando usado no modo de programação serial.
3: Este buffer é uma entrada Schmitt Trigger quando configurado no modo RC Oscillator e uma entrada CMOS caso contrário.

ÿ 2003 Microchip Technology Inc. DS39582B-página 11


Machine Translated by Google

PIC16F87XA
TABELA 1-3: DESCRIÇÃO DA PINOUT PIC16F874A/877A (CONTINUAÇÃO)
PDIP CLP TQFP QFN E/S/P Amortecedor
Nome do pino Descrição
Alfinete# Alfinete# Alfinete# Alfinete# Modelo Modelo

PORTC é uma porta de E/S bidirecional.


RC0/T1OSO/T1CKI 15 16 32 34 ST
RC0 E/S E/S digitais.
T1OSO O Saída do oscilador Timer1.
T1CKI EU

Entrada de relógio externo Timer1.


RC1/T1OSI/CCP2 16 18 35 35 ST
RC1 E/S E/S digitais.
T1OSI EU

Entrada do oscilador Timer1.


PCC2 E/S Entrada Capture2, saída Compare2, saída PWM2.
RC2/CCP1 17 19 36 36 ST
RC2 E/S E/S digitais.
PCC1 E/S Entrada Capture1, saída Compare1, saída PWM1.
RC3/SCK/SCL 18 20 37 37 ST
RC3 E/S E/S digitais.
SCK E/S Entrada/saída de relógio serial síncrona para o modo SPI.

SCL E/S Entrada/saída de relógio serial síncrona para I2C


modo.

RC4/SDI/SDA 23 25 42 42 ST
RC4 E/S E/S digitais.
SDI EU Dados SPI em.
SDA E/S I /O de dados 2C.

RC5/SDO 24 26 43 43 ST
RC5 E/S E/S digitais.
SDO O Saída de dados SPI.

RC6/TX/CK 25 27 44 44 ST
RC6 E/S E/S digitais.
TX O Transmissão assíncrona USART.
CK E/S Relógio síncrono USART1.
RC7/RX/DT 26 29 1 1 ST
RC7 E/S E/S digitais.
RX EU

Recepção assíncrona USART.


TD E/S Dados síncronos USART.

Legenda: I = entrada O = saída E/S = entrada/saída P = potência


— = Não usado TTL = Entrada TTL ST = Entrada Schmitt Trigger
Nota 1: Este buffer é uma entrada Schmitt Trigger quando configurado como interrupção externa.
2: Este buffer é uma entrada Schmitt Trigger quando usado no modo de programação serial.
3: Este buffer é uma entrada Schmitt Trigger quando configurado no modo RC Oscillator e uma entrada CMOS caso contrário.

DS39582B-página 12 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
TABELA 1-3: DESCRIÇÃO DA PINOUT PIC16F874A/877A (CONTINUAÇÃO)
PDIP CLP TQFP QFN E/S/P Amortecedor
Nome do pino Descrição
Alfinete# Alfinete# Alfinete# Alfinete# Modelo Modelo

PORTD é uma porta de E/S bidirecional ou Porta Escrava Paralela


ao fazer interface com um barramento de microprocessador.
RD0/PSP0 19 21 38 38 ST/TTL(3)
RD0 E/S E/S digitais.
PSP0 E/S Dados da Porta Escrava Paralela.

RD1/PSP1 20 22 39 39 ST/TTL(3)
RD1 E/S E/S digitais.
PSP1 E/S Dados da Porta Escrava Paralela.

RD2/PSP2 21 23 40 40 ST/TTL(3)
RD2 E/S E/S digitais.
PSP2 E/S Dados da Porta Escrava Paralela.

RD3/PSP3 22 24 41 41 ST/TTL(3)
RD3 E/S E/S digitais.
PSP3 E/S Dados da Porta Escrava Paralela.

RD4/PSP4 27 30 2 2 ST/TTL(3)
RD4 E/S E/S digitais.
PSP4 E/S Dados da Porta Escrava Paralela.

RD5/PSP5 28 31 3 3 ST/TTL(3)
RD5 E/S E/S digitais.
PSP5 E/S Dados da Porta Escrava Paralela.

RD6/PSP6 29 32 4 4 ST/TTL(3)
RD6 E/S E/S digitais.
PSP6 E/S Dados da Porta Escrava Paralela.

RD7/PSP7 30 33 5 5 ST/TTL(3)
RD7 E/S E/S digitais.
PSP7 E/S Dados da Porta Escrava Paralela.

PORTE é uma porta de E/S bidirecional.


RE0/RD/AN5 8 9 25 25 ST/TTL(3)
RE0 E/S E/S digitais.
RD EU Controle de leitura para a Porta Escrava Paralela.
AN5 EU

Entrada analógica 5.
RE1/WR/AN6 9 10 26 26 ST/TTL(3)
RE1 E/S E/S digitais.
WR EU Controle de gravação para a Porta Escrava Paralela.
AN6 EU

Entrada analógica 6.
RE2/CS/AN7 10 11 27 27 ST/TTL(3)
RE2 E/S E/S digitais.
CS EU

Controle de seleção de chip para Porta Escrava Paralela.


AN7 EU

Entrada analógica 7.

VSS 12, 31 13, 34 6, 29 6, 30, P — Referência de aterramento para pinos lógicos e de E/S.
31

VDD 11, 32 12, 35 7, 28 7, 8, 28, 29 P — Alimentação positiva para pinos lógicos e I/O.

NC - 1, 17, 12,13, 13 — — Esses pinos não estão conectados internamente. Esses pinos
28, 40 33, 34 deve ser deixado desconectado.

Legenda: I = entrada O = saída E/S = entrada/saída P = potência


— = Não usado TTL = Entrada TTL ST = Entrada Schmitt Trigger
Nota 1: Este buffer é uma entrada Schmitt Trigger quando configurado como interrupção externa.
2: Este buffer é uma entrada Schmitt Trigger quando usado no modo de programação serial.
3: Este buffer é uma entrada Schmitt Trigger quando configurado no modo RC Oscillator e uma entrada CMOS caso contrário.

ÿ 2003 Microchip Technology Inc. DS39582B-página 13


Machine Translated by Google

PIC16F87XA
NOTAS:

DS39582B-página 14 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
2.0 ORGANIZAÇÃO DA MEMÓRIA 2.1 Organização da Memória do Programa
Existem três blocos de memória em cada um dos dispositivos Os dispositivos PIC16F87XA possuem um contador de
PIC16F87XA. A memória de programa e a memória de dados programa de 13 bits capaz de endereçar um espaço de memória
possuem barramentos separados para que o acesso simultâneo de programa de 8K palavras x 14 bits. Os dispositivos
possa ocorrer e é detalhado nesta seção. O bloco de memória PIC16F876A/877A possuem 8K palavras x 14 bits de memória
de dados EEPROM é detalhado na Seção 3.0 “EEPROM de de programa Flash, enquanto os dispositivos PIC16F873A/
dados e memória de programa Flash”. 874A possuem 4K palavras x 14 bits. Acessar um local acima
do endereço implementado fisicamente causará um wraparound.
Informações adicionais sobre a memória do dispositivo podem
ser encontradas no PICmicro® Mid-Range MCU Family
Reference Manual (DS33023). O vetor Reset está em 0000h e o vetor de interrupção está em
0004h.

FIGURA 2-1: PIC16F876A/877A FIGURA 2-2: PIC16F873A/874A


MAPA DE MEMÓRIA DO PROGRAMA MAPA DE MEMÓRIA DO PROGRAMA
E EMPILHAMENTO E EMPILHAMENTO

PC<12:0>
PC<12:0>

LIGUE, DEVOLVA 13
LIGUE, DEVOLVA 13
RETFIE, RETLW
RETFIE, RETLW

Nível de pilha 1
Nível de pilha 1

Nível de pilha 2
Nível de pilha 2

Nível de pilha 8
Nível de pilha 8

Redefinir vetor 0000h


Redefinir vetor 0000h

Vetor de interrupção 0004h


Vetor de interrupção 0004h
0005h
0005h
Página 0
Página 0 On-Chip
07FFh
07FFh Programa
08:00h
08:00h Memória
Página 1
Página 1
On-Chip 0FFFh
0FFFh
Programa
1000h
1000h
Memória
Página 2

17FFh

18:00h
Página 3
1FFFh
1FFFh

ÿ 2003 Microchip Technology Inc. DS39582B-página 15


Machine Translated by Google

PIC16F87XA
2.2 Organização da Memória de Dados Cada banco se estende até 7Fh (128 bytes). Quanto mais baixo
locais de cada banco são reservados para o Special
A memória de dados é particionada em vários bancos Registros de Função. Acima dos Registros de Função Especial estão
que contêm os Registros de Uso Geral e os os Registros de Uso Geral, implementados como
Registros de funções especiais. Bits RP1 (Status<6>) e RAM estática. Todos os bancos implementados contêm
RP0 (Status<5>) são os bits de seleção de banco. Registros de Função. Alguns especiais usados com frequência
Os registradores de função de um banco podem ser espelhados em

RP1:RP0 Banco outro banco para redução de código e acesso mais rápido.

00 0 Nota: A descrição da memória de dados EEPROM pode


pode ser encontrado na Seção 3.0 “Dados EEPROM
01 1
e Flash Program Memory” desses dados
10 2 Folha.
11 3
2.2.1 REGISTRO DE PROPÓSITO GERAL
ARQUIVO

O arquivo de registro pode ser acessado diretamente ou


indiretamente, através do File Select Register (FSR).

DS39582B-página 16 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
FIGURA 2-3: MAPA DE ARQUIVO DE REGISTRO PIC16F876A/877A

Arquivo Arquivo Arquivo Arquivo

Endereço Endereço Endereço Endereço

Endereço indireto(*) 00h Endereço indireto(*) 80h Endereço indireto(*) 100h Endereço indireto(*) 180h
TMR0 01h OPTION_REG 81h TMR0 101h OPTION_REG 181h
PCL 02h PCL 82h PCL 102h PCL 182h
STATUS 03h STATUS 83h STATUS 103h STATUS 183h
FSR 04h FSR 84h FSR 104h FSR 184h
TRAZ 05h TRISA 85h 105h 185h
PORTB 06h TRISB 86h PORTB 106h TRISB 186h
PORTO 07h TRISC 87h 107h 187h
PORTD(1) 08h TRISD(1) 88h 108h 188h
PORTA(1) 09h TRÊS(1) 89h 109h 189h
PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah
INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18 Ms
PIR1 0Ch TORTA1 8 canais A DAMA 10 canais EECON1 18 canais

PIR2 0Dh PIE2 8º EEADR 10º EECON2 18º


TMR1L 0Eh PCON 8Eh EEDATH 10 Eh Reservado(2) 18h
TMR1H 0 Fh 8Fh EEADRH 10Fh Reservado(2) 18Fh
T1CON 10h 90h 110h 190h
TMR2 11h SSPCON2 91h 111h 191h
T2CON 12h PR2 92h 112h 192h
SSPBUF 13h SPADD 93h 113h 193h
SSPCON 14h SSPSTAT 94h 114h 194h
CCPR1L 15h 95h 115h 195h
CCPR1H 16h 96h 116 horas 196 horas

CCP1CON 17h Em geral 117h Em geral 197h


97h
Propósito Propósito
RCSTA 18h TXT 98h 118h 198h
Registro Registro
TXREG 19h SPBRG 99h 16 Bytes 119h 16 Bytes 199h
RCREG 1Ah 9Ah 11Ah 19Ah
CCPR2L 1 Sra 9Bh 11Bh 19 Sra
CCPR2H 1 canal CMCON 9 canais 11 canais 19 canais

CCP2CON 1º CVRCON 9 Dh 11 Dh 19 Dh
ENDEREÇO 1Eh MORADA 9Eh 11Eh 19Eh
ADCON0 1Fh ADCON1 9Fh 11Fh 19Fh
20h 120h 1A0h
Ahh
Em geral Em geral Em geral
Propósito Propósito Propósito
Em geral Registro Registro
Registro
Propósito
Registro 80 Bytes 80 Bytes 80 Bytes

96 Bytes EFh 16Fh 1EFh


F0h 170h acessos 1F0h
acessos acessos
70h-7Fh 70h-7Fh 70h - 7Fh
7Fh FF 17Fh 1FFh
Banco 0 Banco 1 Banco 2 Banco 3

Locais de memória de dados não implementados, lidos como '0'.


*
Não é um registro físico.
Nota 1: Esses registros não são implementados no PIC16F876A.
2: Esses registros são reservados; manter esses registros limpos.

ÿ 2003 Microchip Technology Inc. DS39582B-página 17


Machine Translated by Google

PIC16F87XA
FIGURA 2-4: MAPA DE ARQUIVO DE REGISTRO PIC16F873A/874A

Arquivo Arquivo Arquivo Arquivo

Endereço Endereço Endereço Endereço

Endereço indireto(*) 00h Endereço indireto(*) 80h Endereço indireto(*) 100h Endereço indireto(*) 180h
TMR0 01h OPTION_REG 81h TMR0 101h OPTION_REG 181h
PCL 02h PCL 82h PCL 102h PCL 182h
STATUS 03h STATUS 83h STATUS 103h STATUS 183h
FSR 04h FSR 84h FSR 104h FSR 184h
TRAZ 05h TRISA 85h 105h 185h
PORTB 06h TRISB 86h PORTB 106h TRISB 186h
PORTO 07h TRISC 87h 107h 187h
PORTD(1) 08h TRISD(1) 88h 108h 188h
PORTA(1) 09h TRÊS(1) 89h 109h 189h
PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah
INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18 Ms
PIR1 0Ch TORTA1 8 canais A DAMA 10 canais EECON1 18 canais

PIR2 0Dh PIE2 8º EEADR 10º EECON2 18º


TMR1L 0Eh PCON 8Eh EEDATH 10 Eh Reservado(2) 18h
TMR1H 0 Fh 8Fh EEADRH 10Fh Reservado(2) 18Fh
T1CON 10h 90h 110h 190h
TMR2 11h SSPCON2 91h
T2CON 12h PR2 92h
SSPBUF 13h SPADD 93h
SSPCON 14h SSPSTAT 94h
CCPR1L 15h 95h
CCPR1H 16h 96h
CCP1CON 17h 97h
RCSTA 18h TXT 98h
TXREG 19h SPBRG 99h
RCREG 1Ah 9Ah
CCPR2L 1 Sra 9Bh
CCPR2H 1 canal CMCON 9 canais

CCP2CON 1º CVRCON 9 Dh
ENDEREÇO 1Eh MORADA 9Eh
ADCON0 1Fh ADCON1 9Fh
120h 1A0h
20h Ahh

Em geral Em geral
Propósito Propósito acessos acessos
Registro Registro 20h-7Fh A0h - FFh
96 Bytes 96 Bytes 16Fh 1EFh
170h 1F0h

7Fh FF 17Fh 1FFh


Banco 0 Banco 1 Banco 2 Banco 3

Locais de memória de dados não implementados, lidos como '0'.


*
Não é um registro físico.
Nota 1: Esses registros não são implementados no PIC16F873A.
2: Esses registros são reservados; manter esses registros limpos.

DS39582B-página 18 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
2.2.2 REGISTROS DE FUNÇÕES ESPECIAIS Os registradores de função especial podem ser classificados em
dois conjuntos: núcleo (CPU) e periférico. Esses registros
Os registradores de função especial são registradores usados por
associados com as funções principais são descritos em
a CPU e os módulos periféricos para controlar o
detalhe nesta seção. As relacionadas com a operação de
operação desejada do dispositivo. Esses registros são
os recursos periféricos são descritos em detalhes no
implementado como RAM estática. Uma lista desses registros é
seção de recursos periféricos.
dado na Tabela 2-1.

TABELA 2-1: RESUMO DO REGISTRO DE FUNÇÕES ESPECIAIS

Valor em: Detalhes


Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
POR, BOR na página:

Banco 0

00h(3) IDF O endereçamento deste local usa o conteúdo do FSR para endereçar a memória de dados (não um registrador físico) 0000 0000 31, 150
01h TMR0 Registro do Módulo Timer0 xxxx xxxx 55, 150
02h(3) PCL Byte menos significativo do contador de programa (PC) 0000 0000 30, 150

03h(3) STATUS IRP RP1 RP0 PARA PD A PARTIR DE DC C 0001 1xxx 22, 150
04h(3) FSR Ponteiro de endereço de memória de dados indireto xxxx xxxx 31, 150
05h TRAZ — --0x 0000 43, 150
— PORTA Data Latch quando escrito: pinos PORTA quando lidos
06h PORTB PORTB Data Latch quando escrito: pinos PORTB quando lidos xxxx xxxx 45, 150
07h PORTO PORTC Data Latch quando escrito: pinos PORTC quando lidos xxxx xxxx 47, 150
08h(4) PORTA PORTD Data Latch quando escrito: pinos PORTD quando lidos xxxx xxxx 48, 150
09h(4) PORTA — ——— — RE2 RE1 RE0 ---- -xxx 49, 150
0Ah(1,3) PCLATH — ---0 0000 30, 150
— — Buffer de gravação para os 5 bits superiores do contador de programa
0Bh(3) INTCON GIE ISSO É TMR0IE NÃO RBIE TMR0IF INTF RBIF 0000 000x 24, 150
0Ch PIR1 PSPIF(3) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 26, 150
0Dh PIR2 — CMIF — EEIF BCLIF — — CCP2IF -0-0 0--0 28, 150
0Eh TMR1L Registro de retenção para o byte menos significativo do registro TMR1 de 16 bits xxxx xxxx 60, 150
0 Fh TMR1H Registro de retenção para o byte mais significativo do registro TMR1 de 16 bits xxxx xxxx 60, 150

10h T1CON — — T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON --00 0000 57, 150
11h TMR2 Registro do Módulo Timer2 0000 0000 62, 150
12h T2CON — TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 61, 150
13h SSPBUF Buffer de recepção/registro de transmissão de porta serial síncrona xxxx xxxx 79, 150
14h SSPCON WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 82, 82,
150

15h CCPR1L Capturar/comparar/registro PWM 1 (LSB) xxxx xxxx 63, 150


16h CCPR1H Capturar/Comparar/Registro PWM 1 (MSB) xxxx xxxx 63, 150
17h CCP1CON — — CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 --00 0000 64, 150
18h RCSTA ESPANHA RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 112, 150
19h TXREG Registro de Dados de Transmissão USART 0000 0000 118, 150
1Ah RCREG Registro de Dados de Recepção USART 0000 0000 118, 150
1 Sra CCPR2L Capture/Compare/PWM Register 2 (LSB) xxxx xxxx 63, 150
1 canal CCPR2H Capturar/Comparar/Registro PWM 2 (MSB) xxxx xxxx 63, 150
1º CCP2CON — — CCP2X CCP2Y CCP2M3 CCP2M2 CCP2M1 CCP2M0 --00 0000 64, 150
1Eh ENDEREÇO Byte alto do registrador de resultado A/D xxxx xxxx 133, 150

1Fh ADCON0 ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE — ADON 0000 00-0 127, 150

Legenda: x = desconhecido, u = inalterado, q = valor depende da condição, - = não implementado, lido como '0', r = reservado.
Locais sombreados não são implementados, lidos como '0'.
Nota 1: O byte superior do contador de programa não é acessível diretamente. PCLATH é um registrador de retenção para o PC<12:8>, cuja
os conteúdos são transferidos para o byte superior do contador de programa.
2: Bits PSPIE e PSPIF são reservados em dispositivos PIC16F873A/876A; sempre mantenha esses bits claros.
3: Esses registradores podem ser endereçados de qualquer banco.
4: PORTD, PORTE, TRISD e TRISE não são implementados em dispositivos PIC16F873A/876A, lidos como '0'.
5: Bit 4 do EEADRH implementado apenas nos dispositivos PIC16F876A/877A.

ÿ 2003 Microchip Technology Inc. DS39582B-página 19


Machine Translated by Google

PIC16F87XA
TABELA 2-1: RESUMO DO REGISTRO DE FUNÇÕES ESPECIAIS (CONTINUAÇÃO)
Valor em: Detalhes
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
POR, BOR na página:

Banco 1

80h(3) IDF O endereçamento deste local usa o conteúdo do FSR para endereçar a memória de dados (não um registrador físico) 0000 0000 31, 150
81h OPTION_REG RBPU INTEDG T0CS 82h(3) PCL T0SE PSA PS2 PS1 PS0 1111 1111 23, 150

Byte menos significativo do contador de programa (PC) 0000 0000 30, 150

83h(3) STATUS IRP RP1 RP0 PARA PD A PARTIR DE DC C 0001 1xxx 22, 150
84h(3) FSR Ponteiro de endereço de memória de dados indireto xxxx xxxx 31, 150
85h TRISA — --11 1111 43, 150
— Registro de Direção de Dados PORTA
86h TRISB Registro de Direção de Dados PORTB 1111 1111 45, 150
87h TRISC Registro de Direção de Dados PORTC 1111 1111 47, 150
88h(4) TRISD 89h Registro de Direção de Dados PORTD 1111 1111 48, 151
(4) TRISE IBF OBF IBOV PSPMODE — PORTE bits de direção de dados 0000 -111 50, 151
8Ah(1,3) PCLATH — ---0 0000 30, 150
— — Buffer de gravação para os 5 bits superiores do contador de programa
8Bh(3) INTCON GIE ISSO É TMR0IE NÃO RBIE TMR0IF INTF RBIF 0000 000x 24, 150
8 canais TORTA1 PSPIE(2) ADIE RCIE ESSA SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 25, 151
8º PIE2 — CMIE — EEIE BCLIE — — CCP2IE -0-0 0--0 27, 151

8Eh PCON — ——— — — POR VINHO ---- --qq 29, 151


8Fh — —
— Não implementado
90h — —
— Não implementado
91h SSPCON2 GCEN ACKSTAT ACKDT ACKEN RCEN CANETA RSEN SEN 0000 0000 83, 151
92h PR2 Registro do Período do Timer2 1111 1111 62, 151
93h SPADD Registro de Endereço da Porta Serial Síncrona (modo I2C ) 0000 0000 79, 151

94h SSPSTAT COLÉGIO CKE D/A P S R/W UA BF 0000 0000 79, 151
95h — —
— Não implementado
96h — —
— Não implementado
97h — —
— Não implementado
98h TXT CSRC TX9 CHEN SINCRONIZAÇÃO — BRGH TRMT TX9D 0000 -010 111, 151

99h SPBRG Registro do gerador de taxa de transmissão 0000 0000 113, 151
9Ah — —
— Não implementado
9Bh — —
— Não implementado
9 canais CMCON C2OUT C1OUT C2INV C1INV CEI CM2 CM1 CM0 0000 0111 135, 151
9 Dh CVRCON CVREN CVROE CVRR — CVR3 CVR2 CVR1 CVR0 000- 0000 141, 151
9Eh MORADA Byte baixo do registrador de resultado A/D xxxx xxxx 133, 151
9Fh ADCON1 ADFM ADCS2 — — PCFG3 PCFG2 PCFG1 PCFG0 00-- 0000 128, 151

Legenda: x = desconhecido, u = inalterado, q = valor depende da condição, - = não implementado, lido como '0', r = reservado.
Locais sombreados não são implementados, lidos como '0'.
Nota 1: O byte superior do contador de programa não é acessível diretamente. PCLATH é um registrador de retenção para o PC<12:8>, cuja
os conteúdos são transferidos para o byte superior do contador de programa.
2: Bits PSPIE e PSPIF são reservados em dispositivos PIC16F873A/876A; sempre mantenha esses bits claros.
3: Esses registradores podem ser endereçados de qualquer banco.
4: PORTD, PORTE, TRISD e TRISE não são implementados em dispositivos PIC16F873A/876A, lidos como '0'.
5: Bit 4 do EEADRH implementado apenas nos dispositivos PIC16F876A/877A.

DS39582B-página 20 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
TABELA 2-1: RESUMO DO REGISTRO DE FUNÇÕES ESPECIAIS (CONTINUAÇÃO)
Valor em: Detalhes
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
POR, BOR na página:

Banco 2

100h(3) IDF O endereçamento deste local usa o conteúdo do FSR para endereçar a memória de dados (não um registrador físico) 0000 0000 31, 150
101h TMR0 Registro do Módulo Timer0 xxxx xxxx 55, 150
102h(3) PCL Byte menos significativo do contador de programa (PC) 0000 0000 30, 150

103h(3) STATUS IRP RP1 RP0 PARA PD A PARTIR DE DC C 0001 1xxx 22, 150
104h(3) FSR Ponteiro de endereço de memória de dados indireto xxxx xxxx 31, 150
105h — —
— Não implementado
106h PORTB PORTB Data Latch quando escrito: pinos PORTB quando lidos xxxx xxxx 45, 150
107h — —
— Não implementado
108h — —
— Não implementado
109h — —
— Não implementado
10Ah(1,3) PCLATH — ---0 0000 30, 150
— — Buffer de gravação para os 5 bits superiores do contador de programa
10Bh(3) INTCON GIE ISSO É TMR0IE NÃO RBIE TMR0IF INTF RBIF 0000 000x 24, 150
10Ch EEDATA Byte baixo do registrador de dados EEPROM xxxx xxxx 39, 151
10Dh EEADR Byte baixo do registrador de endereço EEPROM xxxx xxxx 39, 151
10Eh EDATH — --xx xxxx 39, 151
— Registrador de Dados EEPROM High Byte
10Fh EEADRH — ---- xxxx 39, 151
— — —(5) Byte alto do registrador de endereço EEPROM
Banco 3

180h(3) IDF O endereçamento deste local usa o conteúdo do FSR para endereçar a memória de dados (não um registrador físico) 0000 0000 31, 150
181h OPTION_REG RBPU INTEDG T0CS 182h(3) PCL T0SE PSA PS2 PS1 PS0 1111 1111 23, 150

Byte menos significativo do contador de programa (PC) 0000 0000 30, 150

183h(3) ESTADO IRP RP1 RP0 PARA PD A PARTIR DE DC C 0001 1xxx 22, 150
184h(3) FSR Ponteiro de endereço de memória de dados indireto xxxx xxxx 31, 150
185h — —
— Não implementado
186h TRISB Registro de Direção de Dados PORTB 1111 1111 45, 150
187h — —
— Não implementado
188h — —
— Não implementado
189h — —
— Não implementado
18Ah(1,3) PCLATH — ---0 0000 30, 150
— — Buffer de gravação para os 5 bits superiores do contador de programa
18Bh(3) INTCON GIE ISSO É TMR0IE NÃO RBIE TMR0IF INTF RBIF 0000 000x 24, 150
18Ch EECON1 EPGD — — — WRERR WREN WR RD x --- x000 34, 151
18º EECON2 EEPROM Control Register 2 (não é um registrador físico) ---- ---- 39, 151
18h - Reservado; manter claro 0000 0000 —

18Fh - Reservado; manter claro 0000 0000 —

Legenda: x = desconhecido, u = inalterado, q = valor depende da condição, - = não implementado, lido como '0', r = reservado.
Locais sombreados não são implementados, lidos como '0'.
Nota 1: O byte superior do contador de programa não é acessível diretamente. PCLATH é um registrador de retenção para o PC<12:8>, cuja
os conteúdos são transferidos para o byte superior do contador de programa.
2: Bits PSPIE e PSPIF são reservados em dispositivos PIC16F873A/876A; sempre mantenha esses bits claros.
3: Esses registradores podem ser endereçados de qualquer banco.
4: PORTD, PORTE, TRISD e TRISE não são implementados em dispositivos PIC16F873A/876A, lidos como '0'.
5: Bit 4 do EEADRH implementado apenas nos dispositivos PIC16F876A/877A.

ÿ 2003 Microchip Technology Inc. DS39582B-página 21


Machine Translated by Google

PIC16F87XA
2.2.2.1 Registro de Status Por exemplo, CLRF STATUS, limpará os três
bits e defina o bit Z. Isso deixa o registro de Status como
O registrador Status contém o status aritmético do
000u u1uu (onde u = inalterado).
ALU, o status Reset e os bits de seleção de banco para dados
memória. Recomenda-se, portanto, que apenas BCF, BSF,
As instruções SWAPF e MOVWF são usadas para alterar o
O registrador de Status pode ser o destino de qualquer
Registro de status porque essas instruções não afetam
instrução, como com qualquer outro registro. Se o registrador de
Status for o destino de uma instrução que afeta o os bits Z, C ou DC do registrador de Status. Para outro
instruções que não afetam nenhum bit de status, consulte
Z, DC ou C, então a escrita nestes três bits é desabilitada. Esses bits
Seção 15.0 “Resumo do Conjunto de Instruções”.
são definidos ou apagados de acordo com o
lógica do dispositivo. Além disso, os bits TO e PD não são Nota: Os bits C e DC funcionam como um empréstimo
gravável, portanto, o resultado de uma instrução com o e dígito emprestado bit, respectivamente, na
O registro de status como destino pode ser diferente de subtração. Veja o SUBLW e o SUBWF
pretendido. instruções para exemplos.

CADASTRO 2-1: REGISTRO DE STATUS (ENDEREÇO 03h, 83h, 103h, 183h)


R/W-0 R/W-0 R/W-0 R-1 R-1 L/Lx R/Lx R/Lx

IRP RP1 RP0 PARA PD A PARTIR DE DC C

pedaço 7 bit 0

pedaço 7 IRP: bit Register Bank Select (usado para endereçamento indireto)
1 = Banco 2, 3 (100h-1FFh)
0 = Banco 0, 1 (00h-FFh)
bocado 6-5 RP1:RP0: Bits de seleção do banco de registradores (usados para endereçamento direto)

11 = Banco 3 (180h-1FFh)
10 = Banco 2 (100h-17Fh)
01 = banco 1 (80h-FFh)
00 = Banco 0 (00h-7Fh)
Cada banco tem 128 bytes.
bocado 4 PARA: Bit de tempo limite

1 = Após energização, instrução CLRWDT ou instrução SLEEP


0 = Ocorreu um tempo limite WDT

parte 3 PD: Bit de desligamento

1 = Após energização ou pela instrução CLRWDT


0 = Por execução da instrução SLEEP
parte 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
pedaço 1 DC: bit de transporte/empréstimo de dígito (instruções ADDWF, ADDLW, SUBLW,
SUBWF) (para empréstimo, a polaridade é invertida)
1 = Ocorreu um carry-out do 4º bit de baixa ordem do resultado
0 = Nenhum carry-out do 4º bit de baixa ordem do resultado
bit 0 C: Carry/borrow bit (instruções ADDWF, ADDLW, SUBLW, SUBWF)
1 = Ocorreu um transporte do bit mais significativo do resultado
0 = Não ocorreu carry-out do bit mais significativo do resultado

Nota: Para empréstimo, 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 alta ou baixa do registrador de origem.

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

DS39582B-página 22 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
2.2.2.2 OPTION_REG Cadastro Nota: Para obter uma atribuição de pré-escalonador 1:1 para
O registro OPTION_REG é um registro legível e gravável registrador TMR0, atribua o prescaler a
registrador, que contém vários bits de controle para configurar o temporizador do cão de guarda.

o pré-escalador TMR0/pós-escalador WDT (registro atribuível único


conhecido também como prescaler), o
Interrupção INT, TMR0 e os pull-ups fracos em PORTB.

REGISTRO 2-2: OPTION_REG REGISTRO (ENDEREÇO 81h, 181h)


R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1

RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0

pedaço 7 bit 0

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


1 = pull-ups PORTB estão desabilitados
0 = pull-ups PORTB são habilitados por valores de trava de porta individual
bocado 6 INTEDG: Interromper o bit de seleção de borda

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


0 = Interromper na borda descendente do pino RB0/INT
pedaço 5 T0CS: Bit de seleção da fonte do relógio TMR0

1 = Transição no pino RA4/T0CKI


0 = Relógio do ciclo de instrução interno (CLKO)
bocado 4 T0SE: Bit de seleção de borda de origem TMR0
1 = Incremento na transição de alto para baixo no pino RA4/T0CKI
0 = Incremento na transição de baixo para alto no pino RA4/T0CKI
parte 3 PSA: bit de atribuição do pré-escalador
1 = Prescaler é atribuído ao WDT
0 = Prescaler é atribuído ao módulo Timer0
pouco 2-0 PS2:PS0: bits de seleção de taxa do pré-escalador

Valor de Bit Taxa TMR0 Taxa WDT

000 1: 2 1: 1
001 1: 4 1: 2
010 1:8 1: 4
011 1: 16 1:8
100 1: 32 1: 16
101 1: 64 1: 32
110 1: 128 1: 64
111 1: 256 1: 128

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

Nota: Ao usar a Programação ICSP de Baixa Tensão (LVP) e os pull-ups em PORTB são
habilitado, o bit 3 no registro TRISB deve ser desenergizado para desabilitar o pull-up no RB3
e garantir o bom funcionamento do dispositivo

ÿ 2003 Microchip Technology Inc. DS39582B-página 23


Machine Translated by Google

PIC16F87XA
2.2.2.3 Registro INTCON Observação: Bits sinalizadores de interrupção são definidos quando uma interrupção

O registrador INTCON é um registrador legível e gravável, que contém condição ocorre independentemente do estado de sua
vários bits de habilitação e flag para o bit de habilitação correspondente ou o global
Estouro de registro TMR0, mudança de porta RB e externo bit de habilitação, GIE (INTCON<7>). Software do usuário
Interrupções do pino RB0/INT. deve garantir o sinalizador de interrupção apropriado
bits são limpos antes de habilitar uma interrupção.

REGISTRO 2-3: REGISTRO INTCON (ENDEREÇO 0Bh, 8Bh, 10Bh, 18Bh)


R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/Lx

GIE ASSIM TMR0IE NÃO RBIE TMR0IF INTF RBIF

pedaço 7 bit 0

pedaço 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
bocado 6 PEIE: bit de habilitação de interrupção periférica

1 = Habilita todas as interrupções de periféricos não mascarados


0 = Desabilita todas as interrupções periféricas
pedaço 5 TMR0IE: bit de habilitação de interrupção de estouro TMR0

1 = Habilita a interrupção TMR0


0 = Desabilita a interrupção TMR0
bocado 4 INTE: Bit de habilitação de interrupção externa RB0/INT

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


0 = Desabilita a interrupção externa RB0/INT
parte 3 RBIE: Bit de habilitação de interrupção de alteração de porta RB

1 = Habilita a interrupção de mudança de porta RB


0 = Desabilita a interrupção de mudança de porta RB
parte 2 TMR0IF: Bit sinalizador de interrupção de estouro TMR0

1 = O registrador TMR0 transbordou (deve ser apagado no software)


0 = registrador TMR0 não estourou
pedaço 1 INTF: Bit de sinalização de interrupção externa RB0/INT

1 = Ocorreu a 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 sinalização de interrupção de alteração de porta RB

1 = Pelo menos um dos pinos RB7:RB4 mudou de estado; uma condição de incompatibilidade continuará a ser definida
o pouco. A leitura de PORTB encerrará a condição de incompatibilidade e permitirá que o bit seja apagado
(deve ser apagado no software).
0 = Nenhum dos pinos RB7:RB4 mudou de estado

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

DS39582B-página 24 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
2.2.2.4 Registro PIE1
Nota: O bit PEIE (INTCON<6>) deve ser configurado para
O registrador PIE1 contém os bits de habilitação individuais para habilitar qualquer interrupção periférica.
as interrupções periféricas.

REGISTRO 2-4: REGISTRO PIE1 (ENDEREÇO 8Ch)


R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

PSPIE(1) ADIE RCIE ESSA SSPIE CCP1IE TMR2IE TMR1IE

pedaço 7 bit 0

pedaço 7 PSPIE: bit de habilitação de interrupção de leitura/gravação da porta paralela escrava (1)

1 = Habilita a interrupção de leitura/gravação do PSP


0 = Desabilita a interrupção de leitura/gravação do PSP

Nota 1: PSPIE é reservado em dispositivos PIC16F873A/876A; sempre mantenha este bit claro.

bocado 6 ADIE: bit de habilitação de interrupção do conversor A/D

1 = Habilita a interrupção do conversor A/D


0 = Desabilita a interrupção do conversor A/D

pedaço 5 RCIE: USART Receive Interrupt Enable bit

1 = Habilita a interrupção de recebimento USART


0 = Desabilita a interrupção de recebimento USART
bocado 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

parte 3 SSPIE: bit de habilitação de interrupção da porta serial síncrona

1 = Habilita a interrupção SSP


0 = Desativa a interrupção SSP

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

1 = Habilita a interrupção CCP1


0 = Desabilita a interrupção CCP1
pedaço 1 TMR2IE: bit de habilitação de interrupção de correspondência entre TMR2 e PR2

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


0 = Desabilita a interrupção de correspondência TMR2 para PR2

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

1 = Habilita a interrupção de estouro TMR1


0 = Desabilita a interrupção de estouro TMR1

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

ÿ 2003 Microchip Technology Inc. DS39582B-página 25


Machine Translated by Google

PIC16F87XA
2.2.2.5 Registro PIR1 Observação: Bits sinalizadores de interrupção são definidos quando uma interrupção

O registrador PIR1 contém os bits de flag individuais para condição ocorre independentemente do estado de sua
as interrupções periféricas. bit de habilitação correspondente ou o global
bit de habilitação, GIE (INTCON<7>). Software do usuário
deve garantir os bits de interrupção apropriados
são claros antes de habilitar uma interrupção.

REGISTRO 2-5: REGISTRO PIR1 (ENDEREÇO 0Ch)


R/W-0 R/W-0 R-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0

PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF

pedaço 7 bit 0

pedaço 7 PSPIF: Bit de sinalização de interrupção de leitura/gravação da porta paralela escrava (1)

1 = Ocorreu uma operação de leitura ou escrita (deve ser apagada no software)


0 = Nenhuma leitura ou gravação ocorreu
Nota 1: PSPIF é reservado em dispositivos PIC16F873A/876A; sempre mantenha este bit claro.

bocado 6 ADIF: Bit sinalizador de interrupção do conversor A/D


1 = Uma conversão A/D concluída
0 = A conversão A/D não está completa
pedaço 5 RCIF: USART Receive Interrupt Flag bit
1 = O buffer de recepção USART está cheio
0 = O buffer de recebimento USART está vazio
bocado 4 TXIF: Bit 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

parte 3 SSPIF: bit sinalizador de interrupção da porta serial síncrona (SSP)


1 = A condição de interrupção SSP ocorreu e deve ser apagada no software antes de retornar
da Rotina de Serviço de Interrupção. As condições que definirão este bit são:
• SPI – Ocorreu uma transmissão/recepção.
• I2C Slave – Ocorreu uma transmissão/recepção.
• Mestre I2C
- Ocorreu uma transmissão/recepção.
- A condição de partida iniciada foi concluída pelo módulo SSP.
- A condição de parada iniciada foi concluída pelo módulo SSP.
- A condição de reinicialização iniciada foi concluída pelo módulo SSP.
- A condição de reconhecimento iniciada foi concluída pelo módulo SSP.
- Ocorreu uma condição de partida enquanto o módulo SSP estava inativo (sistema multimestre).
- Ocorreu uma condição de parada enquanto o módulo SSP estava ocioso (sistema multimestre).
0 = Nenhuma condição de interrupção SSP ocorreu
parte 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.

pedaço 1 TMR2IF: Bit de sinalização de interrupção de correspondência de TMR2 para PR2

1 = ocorreu a correspondência de TMR2 para PR2 (deve ser apagada no software)


0 = Nenhuma correspondência TMR2 para PR2 ocorreu

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


1 = registrador TMR1 estourado (deve ser apagado no software)
0 = registrador TMR1 não estourou

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

DS39582B-página 26 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
2.2.2.6 Registro PIE2
Nota: O bit PEIE (INTCON<6>) deve ser configurado para
O registrador PIE2 contém os bits de habilitação individuais para habilitar qualquer interrupção periférica.
a interrupção periférica CCP2, a colisão de barramento SSP
interrupção, interrupção da operação de gravação EEPROM e a
interrupção do comparador.

REGISTRO 2-6: REGISTRO PIE2 (ENDEREÇO 8Dh)


U-0 R/W-0 U-0 R/W-0 R/W-0 U-0 U-0 R/W-0

— CMIE — EEIE BCLIE — — CCP2IE

pedaço 7 bit 0

pedaço 7 Não implementado: Leia como '0'


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

1 = Habilita a interrupção do comparador


0 = Desativa a interrupção do comparador
pedaço 5 Não implementado: Leia como '0'
bocado 4 EEIE: Bit de habilitação de interrupção da operação de gravação EEPROM

1 = Ativar interrupção de gravação EEPROM


0 = Desativa a interrupção de gravação da EEPROM

parte 3 BCLIE: Bit de habilitação de interrupção de colisão de barramento

1 = Ativar interrupção de colisão de barramento


0 = Desativar interrupção de colisão de barramento

pouco 2-1 Não implementado: Leia como '0'


bit 0 CCP2IE: bit de habilitação de interrupção CCP2
1 = Habilita a interrupção CCP2
0 = Desabilita a interrupção CCP2

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

ÿ 2003 Microchip Technology Inc. DS39582B-página 27


Machine Translated by Google

PIC16F87XA
2.2.2.7 Registro PIR2
Nota: Os bits de flag de interrupção são definidos quando uma interrupção
O registrador PIR2 contém os bits de flag para o CCP2 condição ocorre independentemente do estado de
interrupção, a interrupção de colisão de barramento SSP, EEPROM seu bit de habilitação correspondente ou o global
interrupção da operação de escrita e a interrupção do comparador. bit de habilitação, GIE (INTCON<7>). Do utilizador
software deve garantir a
bits de sinalização de interrupção são limpos antes de
habilitando uma interrupção.

REGISTRO 2-7: REGISTRO PIR2 (ENDEREÇO 0Dh)


U-0 R/W-0 U-0 R/W-0 R/W-0 U-0 U-0 R/W-0

— CMIF — EEIF BCLIF — — CCP2IF

pedaço 7 bit 0

pedaço 7 Não implementado: Leia como '0'


bocado 6 CMIF: Bit de sinalização de interrupção do comparador

1 = A entrada do comparador foi alterada (deve ser apagada no software)


0 = A entrada do comparador não mudou
pedaço 5 Não implementado: Leia como '0'
bocado 4 EEIF: Bit sinalizador de interrupção da operação de gravação 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 está concluída ou não foi iniciada
parte 3 BCLIF: Bit de sinalização de interrupção de colisão de barramento

1 = Ocorreu uma colisão de barramento no SSP quando configurado para o modo I2C Master
0 = Nenhuma colisão de ônibus ocorreu

pouco 2-1 Não implementado: Leia como '0'


bit 0 CCP2IF: Bit sinalizador de interrupção CCP2
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 usado.

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

DS39582B-página 28 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
2.2.2.8 Registro PCON Nota: BOR é desconhecido no Power-on Reset. Isto

O registrador Power Control (PCON) contém bits de flag deve ser definido pelo usuário e verificado
para permitir a diferenciação entre um Power-on Reset Reinicializações subsequentes para ver se BOR está claro,
(POR), um Brown-out Reset (BOR), um Watchdog Reset indicando que ocorreu um blecaute. o
(WDT) e um MCLR Reset externo. O bit de status BOR é um “não me importo” e não é
previsível se o circuito brown-out estiver desabilitado
(limpando o bit BODEN no
palavra de configuração).

REGISTRO 2-8: REGISTRO PCON (ENDEREÇO 8Eh)


U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-1
— — — — — - POR Há

pedaço 7 bit 0

bocado 7-2 Não implementado: Leia como '0'


pedaço 1 POR: Bit de status de reinicialização de inicialização

1 = Nenhuma reinicialização de inicialização ocorreu

0 = Ocorreu um Power-on Reset (deve ser definido no software após ocorrer um Power-on Reset)
bit 0 BOR: bit de status de reinicialização de brown-out

1 = Não ocorreu nenhuma reinicialização de brown-out

0 = Ocorreu um Brown-out Reset (deve ser definido no software após ocorrer um Brown-out Reset)

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

ÿ 2003 Microchip Technology Inc. DS39582B-página 29


Machine Translated by Google

PIC16F87XA
2.3 PCL e PCLATH
Nota 1: Não há bits de status para indicar condições de estouro
de pilha ou de estouro de pilha de baixo.
O Program Counter (PC) tem 13 bits de largura. O byte baixo vem do
registrador PCL, que é um registrador legível e gravável. Os bits 2: Não há instruções/mnemônicos chamados PUSH ou
superiores (PC<12:8>) não são legíveis, mas podem ser escritos POP. São ações que ocorrem a partir da execução
indiretamente através do registrador PCLATH. Em qualquer Reset, os das instruções CALL, RETURN, RETLW e RETFIE
bits superiores do PC serão apagados. A Figura 2-5 mostra as duas ou da vetorização para um endereço de interrupção.
situações para o carregamento do PC. O exemplo superior na figura
mostra como o PC é carregado em uma gravação para PCL
(PCLATH<4:0> ÿ PCH). O exemplo inferior na figura mostra como o 2.4 Paginação da Memória do Programa
PC é carregado durante uma instrução CALL ou GOTO (PCLATH<4:3>
ÿ PCH). Todos os dispositivos PIC16F87XA são capazes de endereçar um
bloco de palavras contínuo de 8K de memória de programa. As
instruções CALL e GOTO fornecem apenas 11 bits de endereço para
FIGURA 2-5: CARREGAMENTO DO PC EM permitir a ramificação dentro de qualquer página de memória de

SITUAÇÕES DIFERENTES
programa de 2K. Ao fazer uma instrução CALL ou GOTO, os 2 bits
superiores do endereço são fornecidos por PCLATH<4:3>. Ao fazer
uma instrução CALL ou GOTO, o usuário deve garantir que os bits de
PCH PCL
seleção de página sejam programados de forma que a página de
12 87 0
Instrução com memória de programa desejada seja endereçada. Se um retorno de
computador
PCL como
Destino uma instrução CALL (ou interrupção) for executado, todo o PC de 13
PCLATH<4:0> 8 bits será retirado da pilha. Portanto, a manipulação dos bits
5 VAI
PCLATH<4:3> não é necessária para as instruções RETURN (que
POPs o endereço da pilha).
PCLATH

PCH PCL Nota: O conteúdo do registrador PCLATH permanece inalterado


12 11 10 87 0 após a execução de uma instrução RETURN ou
RETFIE. O usuário deve reescrever o conteúdo do
computador IR, LIGAR
registro PCLATH para quaisquer chamadas de
PCLATH<4:3> 11
2 subrotinas subsequentes ou instruções GOTO.
Código de operação <10:0>

PCLATH O Exemplo 2-1 mostra a chamada de uma sub-rotina na página 1 da


memória de programa. Este exemplo assume que PCLATH é salvo e
restaurado pela Rotina de Serviço de Interrupção (se as interrupções
2.3.1 GOTO COMPUTADO forem usadas).
Um GOTO calculado é realizado adicionando um deslocamento ao
contador de programa (ADDWF PCL). Ao fazer uma leitura de tabela EXEMPLO 2-1: CHAMADA DE UMA SUB-ROTINA
usando um método GOTO computado, deve-se ter cuidado se a NA PÁGINA 1 DA PÁGINA 0
localização da tabela cruzar um limite de memória PCL (cada bloco ORG 0x500
de 256 bytes). Consulte a nota de aplicação, AN556, “Implementando BCF PCLATH, 4
uma leitura de tabela” BSF PCLATH,3 ;Selecione a página 1 ;(800h-FFFh)
(DS00556).
CALL SUB1_P1 ;Chamada subrotina na ;página 1 (800h-
2.3.2 PILHA : FFFh)
:
A família PIC16F87XA possui uma pilha de hardware de 8 níveis de ORG 0x900 ;página 1 (800h-FFFh)
profundidade x 13 bits de largura. O espaço da pilha não faz parte do SUB1_P1
programa ou do espaço de dados e o ponteiro da pilha não é legível : ;chamada subrotina ;página 1
ou gravável. O PC é empurrado para a pilha quando uma instrução (800h-FFFh)
CALL é executada ou uma interrupção causa um desvio. A pilha é :
POP'ed no caso de execução de uma instrução RETURN, RETLW ou RETORNA ;voltou para

RETFIE. ;Chamada subrotina ;na


página 0 ;(000h-7FFh)
PCLATH não é afetado por uma operação PUSH ou POP.

A pilha funciona como um buffer circular. Isso significa que após a


pilha ter sido empurrada oito vezes, o nono push sobrescreve o valor
que foi armazenado desde o primeiro push. O décimo push substitui
o segundo push (e assim por diante).

DS39582B-página 30 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
2,5 Endereçamento Indireto, INDF e Um programa simples para limpar locais de RAM 20h-2Fh
usando endereçamento indireto é mostrado no Exemplo 2-2.
Registros FSR
O registro INDF não é um registro físico. Endereçamento EXEMPLO 2-2: ENDEREÇO INDIRETO
o registrador INDF causará endereçamento indireto.
MOVLW 0x20 ;inicializar ponteiro
O endereçamento indireto é possível por meio do registro INDF. MOVWF FSR ;para RAM
Qualquer instrução usando o registrador INDF PRÓXIMO CLRF IDF ;limpar registro INDF
acessa o registro apontado pelo File Select Register, FSR. Lendo o INCF FSR,F ;inc ponteiro
BTFSS FSR,4 ;tudo feito?
próprio registro INDF, indiretamente
GOTO NEXT; não está claro próximo
(FSR = 0) lerá 00h. Escrevendo no registrador INDF
PROSSEGUIR
indiretamente resulta em uma não operação (embora os bits de status
: ;sim continua
pode ser afetado). Um endereço efetivo de 9 bits é obtido
concatenando o registrador FSR de 8 bits e o bit IRP
(Status<7>) conforme mostrado na Figura 2-6.

FIGURA 2-6: ENDEREÇO DIRETO/INDIRETO

Endereçamento direto Endereçamento indireto

RP1:RP0 6 De Opcode 0 IRP 7 Registro FSR 0

Selecione o banco Selecione o local Seleção de banco Seleção de local

00 01 10 11

00h 80h 100h 180h

Dados
Memória(1)

7Fh FF 17Fh 1FFh

Banco 0 Banco 1 Banco 2 Banco 3

Nota 1: Para detalhes do mapa do arquivo de registro, veja a Figura 2-3.

ÿ 2003 Microchip Technology Inc. DS39582B-página 31


Machine Translated by Google

PIC16F87XA
NOTAS:

DS39582B-página 32 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
3.0 EEPROM DE DADOS E MEMÓRIA DE 3.1 EEADR e EEADRH
PROGRAMA FLASH O par de registradores EEADRH:EEADR pode endereçar até um
máximo de 256 bytes de EEPROM de dados ou até um máximo de
A memória de programa de dados EEPROM e Flash é legível e
8K palavras de EEPROM de programa. Ao selecionar um valor de
gravável durante a operação normal (em toda a faixa VDD ). Essa
endereço de dados, apenas o LSByte do endereço é escrito no
memória não é mapeada diretamente no espaço do arquivo de
registrador EEADR. Ao selecionar um valor de endereço de
registro. Em vez disso, ele é endereçado indiretamente por meio
programa, o MSByte do endereço é escrito no registrador EEADRH
dos registradores de função especial. Existem seis SFRs usados
e o LSByte é gravado no registrador EEADR.
para ler e escrever nesta memória:
• EECON1
Se o dispositivo contiver menos memória do que o alcance de
• EECON2
endereço completo do par de registradores de endereço, os bits
• EDATA
mais significativos dos registradores não serão implementados. Por
• EEDATH exemplo, se o dispositivo possui 128 bytes de EEPROM de dados,
• EEADR o bit mais significativo do EEADR não é implementado no acesso à
• EEADRH EEPROM de dados.

Ao fazer interface com o bloco de memória de dados, o EEDATA


mantém os dados de 8 bits para leitura/gravação e o EEADR 3.2 Registros EECON1 e EECON2
mantém o endereço da localização da EEPROM que está sendo acessada. EECON1 é o registrador de controle para acessos à memória.
Esses dispositivos possuem 128 ou 256 bytes de EEPROM de
O bit de controle, EEPGD, determina se o acesso será um programa
dados (dependendo do dispositivo), com faixa de endereços de 00h
ou acesso à memória de dados. Quando limpo, como quando
a FFh. Em dispositivos com 128 bytes, os endereços de 80h a FFh
reiniciado, quaisquer operações subsequentes operarão na memória
não são implementados e serão envolvidos no início da memória
de dados. Quando definido, quaisquer operações subsequentes
EEPROM de dados. Ao gravar em locais não implementados, a
operarão na memória do programa.
bomba de carga no chip será desligada.
Os bits de controle, RD e WR, iniciam leitura e gravação ou
apagamento, respectivamente. Esses bits não podem ser apagados,
Ao fazer interface com o bloco de memória de programa, os
apenas definidos em software. Eles são limpos no hardware na
registradores EEDATA e EEDATH formam uma palavra de dois
bytes que contém os dados de 14 bits para leitura/gravação e os conclusão da operação de leitura ou gravação. A incapacidade de
limpar o bit WR no software evita o término acidental e prematuro
registradores EEADR e EEADRH formam uma palavra de dois bytes
de uma operação de gravação.
que contém o endereço de 13 bits do local de memória do programa
que está sendo acessado. Esses dispositivos possuem 4 ou 8K O bit WREN, quando definido, permitirá uma operação de escrita ou
palavras de programa Flash, com faixa de endereços de 0000h a apagamento. Ao ligar, o bit WREN está limpo. O bit WRERR é
0FFFh para o PIC16F873A/874A e 0000h a 1FFFh para o definido quando uma operação de gravação (ou apagamento) é
PIC16F876A/877A. Os endereços acima do intervalo do respectivo interrompida por um MCLR ou um WDT Time-out Reset durante a
dispositivo serão agrupados no início da memória do programa. operação normal. Nestas situações, após o Reset, o usuário pode
verificar o bit WRERR e reescrever a localização. Os dados e
endereço permanecerão inalterados nos registros EEDATA e EEADR.
A memória de dados EEPROM permite leitura e escrita de byte
único. A memória de programa Flash permite leituras de uma única
palavra e gravações de blocos de quatro palavras. As operações de O bit sinalizador de interrupção, EEIF no registrador PIR2, é definido
gravação na memória do programa executam automaticamente uma quando a gravação é concluída. Deve ser limpo no software.
gravação antes de apagar em blocos de quatro palavras. Uma EECON2 não é um registro físico. A leitura de EECON2 lerá todos
escrita de byte na memória EEPROM de dados apaga os '0's. O registrador EECON2 é usado exclusivamente na sequência
automaticamente a localização e grava os novos dados (erase-before-write). de escrita da EEPROM.
O tempo de gravação é controlado por um temporizador no chip. As
Nota: O mecanismo de autoprogramação da memória de
tensões de gravação/exclusão são geradas por uma bomba de
programa Flash foi alterado. Nos dispositivos
carga no chip, classificada para operar na faixa de tensão do
PIC16F87X anteriores, a programação Flash era
dispositivo para operações de byte ou palavra.
feita em ciclos de apagamento/gravação de uma
Quando o dispositivo está protegido por código, a CPU pode única palavra. Os dispositivos PIC18F87XA mais
continuar a ler e gravar dados na memória EEPROM. recentes usam um ciclo de apagamento/gravação
Dependendo das configurações dos bits de proteção contra de quatro palavras. Consulte a Seção 3.6 “Gravando
gravação, o dispositivo pode ou não ser capaz de gravar na Memória de Programa Flash” para obter mais informações.
determinados blocos da memória do programa; no entanto, as
leituras da memória do programa são permitidas. Quando protegido
por código, o programador do dispositivo não pode mais acessar os
dados ou a memória do programa; isso NÃO inibe leituras ou gravações internas.

ÿ 2003 Microchip Technology Inc. DS39582B-página 33


Machine Translated by Google

PIC16F87XA
REGISTRO 3-1: REGISTRO EECON1 (ENDEREÇO 18Ch)
R/Lx U-0 U-0 U-0 R/Lx R/W-0 R/S-0 R/S-0

EPGD — — — WRERR WREN WR RD

pedaço 7 bit 0

pedaço 7 EPGD: Bit de seleção de EEPROM de programa/dados


1 = Acessa a memória do programa
0 = Acessa a memória de dados
Lê '0' após um POR; este bit não pode ser alterado enquanto uma operação de gravação estiver em andamento.
bocado 6-4 Não implementado: Leia como '0'
parte 3 WRERR: Bit de sinalização de erro EEPROM
1 = Uma operação de gravação é encerrada prematuramente (qualquer MCLR ou qualquer WDT Reset durante
Operação)
0 = A operação de gravação foi concluída
parte 2 WREN: bit de habilitação de gravação de EEPROM

1 = Permite ciclos de gravação


0 = Inibe a gravação na EEPROM

pedaço 1 WR: bit de controle de gravação

1 = Inicia um ciclo de gravação. O bit é apagado pelo hardware quando a gravação é concluída. O bit WR
só pode ser definido (não apagado) no software.
0 = O ciclo de gravação na EEPROM está completo
bit 0 RD: bit de controle de leitura

1 = Inicia uma leitura de EEPROM; RD é limpo no hardware. O bit RD só pode ser definido (não
desmarcado) no software.
0 = Não inicia uma leitura de EEPROM

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

DS39582B-página 34 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
3.3 Leitura de dados de memória EEPROM Os passos para escrever na memória de dados EEPROM são:

1. Se a etapa 10 não for implementada, verifique o bit WR


Para ler um local de memória de dados, o usuário deve escrever o
para ver se uma gravação está em andamento.
endereço para o registrador EEADR, limpe o bit de controle EEPGD
2. Escreva o endereço para EEADR. Certifique-se de que o
(EECON1<7>) e então defina o bit de controle RD
(EECON1<0>). Os dados estão disponíveis no próximo endereço não é maior que o tamanho da memória de
o dispositivo.
ciclo no registro EEDATA; portanto, pode ser lido
na próxima instrução (veja o Exemplo 3-1). A EEDATA irá 3. Escreva o valor de dados de 8 bits a ser programado em
mantenha esse valor até outra leitura ou até que seja gravado o registro EEDATA.
pelo usuário (durante uma operação de gravação). 4. Limpe o bit EEPGD para apontar para os dados EEPROM

Os passos para ler a memória de dados EEPROM são: memória.

1. Escreva o endereço para EEADR. Certifique-se de que o 5. Configure o bit WREN para habilitar as operações do programa.

endereço não é maior que o tamanho da memória de 6. Desabilite as interrupções (se habilitadas).
o dispositivo. 7. Execute a sequência especial de cinco instruções:

2. Limpe o bit EEPGD para apontar para os dados EEPROM • Escreva 55h para EECON2 em duas etapas (primeiro
memória. para W, depois para EECON2)

3. Configure o bit RD para iniciar a operação de leitura. • Escreva AAh para EECON2 em duas etapas (primeiro

4. Leia os dados do registro EEDATA. para W, então para EECON2)


• Defina o bit WR

EXEMPLO 3-1: LEITURA DE EEPROM DE DADOS 8. Habilite interrupções (se estiver usando interrupções).
BSF ESTADO,RP1 ; 9. Limpe o bit WREN para desabilitar o programa
BCF ESTADO,RP0 ; Banco 2 operações.
MOVF DATA_EE_ADDR,W ; Memória de dados 10. Na conclusão do ciclo de gravação, o bit WR
MOVWF EEADR ; Endereço para ler
é apagado e o bit de sinalização de interrupção EEIF é definido.
BSF ESTADO,RP0 ; Banco 3
(EEIF deve ser apagado pelo firmware.) Se a etapa 1 for
BCF EECON1,EEPGD ; Apontar para dados
não implementado, então o firmware deve verificar
; memória
BSF EECON1, RD ; Leitura EE
para EEIF ser definido, ou WR para limpar, para indicar o
BCF ESTADO,RP0 ; Banco 2 final do ciclo do programa.
MOVF EEDATA, W ; W = EEDATA
EXEMPLO 3-2: ESCRITA DE EEPROM DE DADOS
STATUS BSF,RP1 ;
3.4 Escrevendo na memória EEPROM de dados
STATUS BSF,RP0
Para escrever uma localização de dados EEPROM, o usuário deve primeiro BTFSC EECON1,WR ;Aguarde a escrita
GOTO $-1 ;para completar
escreva o endereço no registrador EEADR e os dados no
STATUS BCF, RP0 ;Banco 2
o registro EEDATA. Em seguida, o usuário deve seguir um
MOVF DATA_EE_ADDR,W ;Memória de dados
seqüência de gravação específica para iniciar a gravação para cada byte.
MOVWF EEADR ;Endereço para escrever
A gravação não será iniciada se a sequência de gravação não for MOVF DATA_EE_DATA,W ;Valor da Memória de Dados
exatamente seguido (escreva 55h para EECON2, escreva AAh para MOVWF EEDATA ;escrever

EECON2, então defina o bit WR) para cada byte. Nós fortemente STATUS BSF,RP0 ;Banco 3
BCF EECON1,EEPGD ;Apontar para DADOS
recomendamos que as interrupções sejam desabilitadas durante este
;memória
segmento de código (veja o Exemplo 3-2).
BSF EECON1, WREN ;Ativar gravações
Além disso, o bit WREN em EECON1 deve ser definido como
habilitar gravação. Este mecanismo evita acidentes BCF INTCON, GIE ;Desabilita INTs.
grava em dados EEPROM devido a erros (inesperados) MOVLW 55h ;
MOVWF EECON2 ;Escrever 55h
execução de código (ou seja, programas perdidos). O usuário deve
MOVLW AAh ;
mantenha o bit WREN sempre limpo, exceto quando
Requeridos
Seqüência

MOVWF EECON2 ;Escrever AAh


atualização da EEPROM. O bit WREN não é apagado
BSF EECON1,WR ;Defina o bit WR para
por hardware
;começa a escrever
Após uma sequência de gravação ter sido iniciada, limpar o BSF INTCON, GIE ;Habilita INTs.
O bit WREN não afetará este ciclo de gravação. O bit WR BCF EECON1, WREN ;Desativar gravações

ser inibido de ser definido, a menos que o bit WREN seja definido.
Na conclusão do ciclo de escrita, o bit WR é
desmarcado no hardware e o EE Write Complete
O bit de sinalização de interrupção (EEIF) é definido. O usuário pode tanto
habilite esta interrupção ou pesquise este bit. O FEIE deve ser
apagado por software.

ÿ 2003 Microchip Technology Inc. DS39582B-página 35


Machine Translated by Google

PIC16F87XA
3.5 Lendo a Memória do Programa Flash que a instrução “BSF EECON1,RD” seja ignorada.
Os dados estão disponíveis no próximo ciclo no
Para ler um local de memória de programa, o usuário deve escrever registradores EEDATA e EEDATH; portanto, pode ser
dois bytes do endereço para o EEADR e EEADRH leia como dois bytes nas instruções a seguir. EEDATA
registradores, defina o bit de controle EEPGD (EECON1<7>) e e os registradores EEDATH manterão esse valor até que outro
em seguida, defina o bit de controle RD (EECON1<0>). Uma vez que a leitura lido ou até que seja gravado pelo usuário (durante uma gravação
bit de controle é definido, o controlador Flash da memória do programa Operação).
usará os próximos dois ciclos de instrução para ler os dados.
Isso faz com que essas duas instruções sigam imediatamente

EXEMPLO 3-3: LEITURA DO PROGRAMA FLASH


BSF ESTADO, RP1 ;
BCF ESTADO, RP0 ; Banco 2
MOVLW MS_PROG_EE_ADDR ;
MOVWF EEADRH ; MS Byte do endereço do programa para ler
MOVLW LS_PROG_EE_ADDR ;
MOVWF EEADR ; LS Byte do endereço do programa para ler
BSF ESTADO, RP0 ; Banco 3
BSF EECON1, EPGD ; Aponte para a memória do PROGRAMA
BSF EECON1, RD ; Leitura EE
;
Requeridos
Seqüência NOP
NOP ; Quaisquer instruções aqui são ignoradas como programa
; a memória é lida no segundo ciclo após BSF EECON1,RD
;
BCF ESTADO, RP0 ; Banco 2
MOVF EEDATA, W. ; W = LS Byte do Programa EEDATA
DADOS DO MOVWF ;
MOVF EEDATH, W ; W = MS Byte do Programa EEDATA
DADOS MOVWF ;

DS39582B-página 36 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
3.6 Gravando na Memória de Programa Flash Para transferir dados dos registradores de buffer para o programa
memória, o EEADR e o EEADRH devem apontar para o último
A memória de programa Flash só pode ser gravada se o localização no bloco de quatro palavras (EEADR<1:0> = 11).
endereço de destino está em um segmento de memória que é Então a seguinte sequência de eventos deve ser
não protegido contra gravação, conforme definido nos bits WRT1:WRT0 de executado:
a palavra de configuração do dispositivo (Registro 14-1). Instantâneo
1. Configure o bit de controle EPGD (EECON1<7>).
a memória do programa deve ser escrita em blocos de quatro palavras. UMA
bloco consiste em quatro palavras com endereços sequenciais, 2. Escreva 55h, depois AAh, para EECON2 (Flash
com um limite inferior definido por um endereço, onde seqüência de programação).
EEADR<1:0> = 00. Ao mesmo tempo, todos os blocos gravam em 3. Defina o bit de controle WR (EECON1<1>) para iniciar o
memória de programa são feitas como operações de apagar e escrever. operação de gravação.
A operação de gravação é alinhada pela borda e não pode
O usuário deve seguir a mesma sequência específica para iniciar a
ocorrem além das fronteiras.
escrita para cada palavra do bloco de programa, escrevendo cada palavra
Para escrever dados de programa, primeiro eles devem ser carregados no de programa em sequência (00,01,10,11).
registradores de buffer (veja a Figura 3-1). Isso é realizado Quando a escrita é realizada na última palavra
escrevendo primeiro o endereço de destino no EEADR e (EEADR<1:0> = 11), o bloco de quatro palavras é
EEADRH e, em seguida, gravando os dados no EEDATA e apagado automaticamente e o conteúdo do buffer
EEDATH. Após configurar o endereço e os dados, registradores são escritos na memória do programa.
então a seguinte sequência de eventos deve ser
Após a instrução “BSF EECON1,WR”, o processador
executado:
requer dois ciclos para configurar a operação de apagar/gravar.
1. Configure o bit de controle EPGD (EECON1<7>). O usuário deve colocar duas instruções NOP após o WR
2. Escreva 55h, depois AAh, para EECON2 (Flash bit está definido. Como os dados estão sendo gravados em registradores de buffer,

seqüência de programação). a escrita das três primeiras palavras do bloco aparece


ocorrer imediatamente. O processador irá parar internamente
3. Configure o bit de controle WR (EECON1<1>).
operações para os 4 ms típicos, apenas durante o ciclo em
Todos os quatro locais de registro de buffer DEVEM ser escritos com que o apagamento ocorre (ou seja, a última palavra do
dados corretos. Se apenas uma, duas ou três palavras estão sendo bloco de quatro palavras). Este não é o modo de suspensão, pois os relógios
escrito no bloco de quatro palavras, então uma leitura de
e os periféricos continuarão a funcionar. Após a escrita
a(s) localização(ões) da memória do programa que não está(ão) sendo gravada(s) em
ciclo, o processador retomará a operação com o terceiro
deve ser realizado. Isso pega os dados dos locais do programa que não instrução após a instrução de escrita EECON1. Se o
estão sendo gravados e os carrega no sequência é executada para qualquer outro local, a ação
Registros EEDATA e EEDATH. Então a sequência de é ignorado.
eventos para transferir dados para os registradores de buffer devem ser
executado.

FIGURA 3-1: BLOQUEAR ESCRITAS NA MEMÓRIA DO PROGRAMA FLASH


75 07 0
Quatro palavras de
EEDATH A DAMA
Flash são apagados,
6 8 então todos os buffers
são transferidos
para
piscar automaticamente
Primeira palavra do bloco
depois desta palavra
ser escrito está escrito

14 14 14 14

EEADR<1:0>=00 EEADR<1:0>= 01 EEADR<1:0> = 10 EEADR<1:0> = 11

Registro de buffer Registro de buffer Registro de buffer Registro de buffer

Memória do programa

ÿ 2003 Microchip Technology Inc. DS39582B-página 37


Machine Translated by Google

PIC16F87XA
Um exemplo da sequência completa de escrita de quatro palavras
é mostrado no Exemplo 3-4. O endereço inicial é carregado
no par de registradores EEADRH:EEADR; as quatro palavras
de dados são carregados usando endereçamento indireto.

EXEMPLO 3-4: ESCREVER NA MEMÓRIA DO PROGRAMA FLASH


; Esta rotina de gravação assume o seguinte:
;
; 1. Um endereço inicial válido (os bits menos significativos = '00') é carregado em ADDRH:ADDRL
; 2. Os 8 bytes de dados são carregados, começando no endereço em DATADDR
; 3. ADDRH, ADDRL e DATADDR estão todos localizados na memória de dados compartilhada 0x70 - 0x7f
;
BSF ESTADO,RP1 ;
BCF ESTADO,RP0 ; Banco 2
MOVF ADDRH,W ; Carregar endereço inicial
MOVWF EEADRH ;
MOVF ADDRL, W. ;
MOVWF EEADR ;
MOVF DATAADDR,W ; Carregar endereço de dados inicial
MOVWF FSR ;
LOOP MOVF IDF,W ; Carregar o primeiro byte de dados no inferior
MOVWF EEDATA ;
INCF FSR,F ; Próximo byte
MOVF INDF,W ; Carregar o segundo byte de dados na parte superior
MOVWF EEDATH ;
INCF FSR,F ;
BSF ESTADO,RP0 ; Banco 3
BSF EECON1, EPGD ; Aponte para a memória do programa
BSF EECON1, WREN ; Ativar gravações
BCF INTCON, GIE ; Desabilitar interrupções (se estiver usando)
MOVLW 55h ; Início da sequência de gravação necessária:
MOVWF EECON2 ; Escreva 55h
MOVLW AAh ;
MOVWF EECON2 ; Escreva AAh
Requeridos
Seqüência
BSF EECON1, WR ; Defina o bit WR para iniciar a gravação
NOP ; Quaisquer instruções aqui são ignoradas como processador
; pára para iniciar a sequência de gravação
NOP ; o processador irá parar aqui e aguardar a conclusão da gravação; depois que o processador de
gravação continua com a 3ª instrução
BCF EECON1, WREN ; Desativar gravações
BSF INTCON, GIE ; Ativar interrupções (se estiver usando)
BCF ESTADO,RP0 ; Banco 2
INCF EEADR,F ; Incrementar endereço
MOVF EEADR, W ; Verifique se os dois bits inferiores do endereço são '00'
ANDLW 0x03 ; Indica quando quatro palavras foram programadas
XORLW 0x03 ;
BTFSC STATUS, Z ; Sair se mais de quatro palavras,
IR PARA LOOP ; Continuar se menos de quatro palavras

DS39582B-página 38 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
3.7 Proteção contra gravação espúria 3.8 Operação durante o Code-Protect
Existem condições em que o dispositivo não deve gravar Quando a EEPROM de dados é protegida por código, o microcontrolador
para a memória de programa de dados EEPROM ou Flash. Para pode ler e escrever na EEPROM normalmente.
proteger contra gravações espúrias, vários mecanismos No entanto, todo acesso externo à EEPROM é
foram incorporados. Ao ligar, WREN é apagado. Desativado. Acesso de gravação externo à memória do programa
Além disso, o temporizador de inicialização (duração de 72 ms) evita também está desabilitado.

EEPROM escrever.
Quando a memória do programa é protegida por código, o
A sequência de início de gravação e o bit WREN juntos microcontrolador pode ler e gravar na memória do programa normalmente,
ajudar a evitar uma gravação acidental durante o blecaute, bem como executar instruções. As gravações do dispositivo podem
falha de energia ou mau funcionamento do software. ser inibido seletivamente para regiões da memória dependendo do
ajuste dos bits WR1:WR0 da configuração
word (consulte a Seção 14.1 “Bits de configuração” para informações
adicionais). O acesso externo à memória também é
Desativado.

TABELA 3-1: REGISTROS/BITS ASSOCIADOS A EEPROM DE DADOS E


MEMÓRIAS DO PROGRAMA FLASH
Valor ativado Valor em
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Ligar todos os outros
Redefinir Reinicializações

10 canais EEDATA EEPROM/Flash Data Register Low Byte xxxx xxxx uuuu uuuu

10º EEADR EEPROM/Flash Address Register Low Byte xxxx xxxx uuuu uuuu

10 Eh EEDATH — — EEPROM/Flash Data Register High Byte xxxx xxxx ---0 q000
10Fh EEADRH — — — EEPROM/Flash Address Register High Byte xxxx xxxx ---- ----

18 canais EECON1 EEPGD — — — WRERR WREN WR RD x--- x000 ---0 q000


18º EECON2 EEPROM Control Register 2 (não é um registro físico)
---- ---- ---- ----

0Dh PIR2 — CMIF — EEIF BCLIF — — CCP2IF -0-0 0--0 -0-0 0--0

8º PIE2 — CMIE — EEIE BCLIE — — CCP2IE -0-0 0--0 -0-0 0--0

Legenda: x = desconhecido, u = inalterado, - = não implementado, lido como '0', q = valor depende da condição.
As células sombreadas não são usadas por dados EEPROM ou memória de programa Flash.

ÿ 2003 Microchip Technology Inc. DS39582B-página 39


Machine Translated by Google

PIC16F87XA
NOTAS:

DS39582B-página 40 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
4.0 PORTAS E/S EXEMPLO 4-1: INICIALIZANDO PORTA
BCF ESTADO, RP0 ;
Alguns pinos para essas portas de E/S são multiplexados com um
BCF ESTADO, RP1; Banco0
função alternativa para os recursos periféricos no
CLRF TRAZ ; Inicialize o PORTA por
dispositivo. Em geral, quando um periférico é habilitado, esse
; saída de limpeza
O pino não pode ser usado como um pino de E/S de uso geral. ; travas de dados
BSF ESTADO, RP0 ; Selecione o banco 1
Informações adicionais sobre portas de E/S podem ser encontradas no
MOVLW 0x06 ; Configurar todos os pinos
Manual de referência de médio alcance PICmicro™ (DS33023).
MOVWF ADCON1 ; como entradas digitais
MOVLW 0xCF ; Valor usado para ;
4.1 PORTA e o Registo TRISA inicializar dados; direção

PORTA é uma porta bidirecional de 6 bits de largura. O registrador de


MOVWF TRISA ; Definir RA <3:0> como entradas
direção de dados correspondente é TRISA. Definir um
; RA<5:4> como saídas
O bit TRISA (= 1) fará com que o pino PORTA correspondente ; TRISA<7:6>são sempre
uma entrada (ou seja, coloque o driver de saída correspondente em um ; leia como '0'.
Modo de alta impedância). Limpar um bit TRISA (= 0)
faça do pino PORTA correspondente uma saída (ou seja, coloque
o conteúdo da trava de saída no pino selecionado). FIGURA 4-1: DIAGRAMA DE BLOCOS DE

A leitura do registrador PORTA lê o status do


RA3: PINOS RA0
pinos, enquanto escrever para ele irá escrever para a trava da porta. Tudo Dados Trava de dados

operações de gravação são operações de leitura-modificação-gravação. Ônibus


D Q
Portanto, uma gravação em uma porta implica que os pinos da porta são
lido, o valor é modificado e então escrito na porta VDD
WR
trava de dados. TRAZ
CKQ
P
Pino de E/S (1)
O pino RA4 é multiplexado com o relógio do módulo Timer0
entrada para se tornar o pino RA4/T0CKI. O RA4/T0CKI Trinco TRIS

pino é uma entrada Schmitt Trigger e uma saída de drenagem aberta. N


D Q
Todos os outros pinos PORTA têm níveis de entrada TTL e full
Drivers de saída CMOS. WR
TRISA
Outros pinos PORTA são multiplexados com entradas analógicas CKQ VSS
Analógico
e a entrada analógica VREF para ambos os conversores A/D
Entrada
e os comparadores. O funcionamento de cada pino é Modo

selecionado limpando/definindo os bits de controle apropriados


nos registradores ADCON1 e/ou CMCON. RD
TRISA
TTL
Nota: Em um Power-on Reset, esses pinos são configurados como
Entrada
entradas analógicas e lidos como '0'. Amortecedor

Q D
Os comparadores estão desligados (digitais)
Estado.

O registrador TRISA controla a direção da porta DENTRO

mesmo quando estão sendo usados como entradas analógicas.


O usuário deve garantir que os bits no registrador TRISA sejam
RD PORTA
mantidos ajustados ao usá-los como entradas analógicas.

Para conversor ou comparador A/D

Nota 1: Os pinos de E/S possuem diodos de proteção para VDD e VSS.

ÿ 2003 Microchip Technology Inc. DS39582B-página 41


Machine Translated by Google

PIC16F87XA
FIGURA 4-2: DIAGRAMA DE BLOCO DO PIN RA4/T0CKI

CMCON<2:0> = x01 ou 011


C1OUT

Trava de dados
Barramento de dados 1
DQ

PORTA WR N Pino de E/S (1)


CKQ 0

Trinco TRIS VSS


DQ

WR TRISA Schmitt
CKQ
Acionar
Entrada
Amortecedor

RD TRISA

QD

DENTRO
DENTRO

RD PORTA

Entrada de relógio TMR0

Nota 1: O pino de E/S possui diodos de proteção somente para VSS .

FIGURA 4-3: DIAGRAMA DE BLOCO DO PINO RA5

CMCON<2:0> = 011 ou 101


C2OUT

Trava de dados
Barramento de dados 1 VDD
DQ

PORTA WR P
CKQ 0

Trinco TRIS
N Pino de E/S (1)
DQ
Analógico
Modo IIP
WR TRISA
CKQ
VSS TTL
Entrada
Amortecedor

RD TRISA

QD

DENTRO
DENTRO

RD PORTA

Conversor A/D ou Entrada SS

Nota 1: O pino de E/S possui diodos de proteção para VDD e VSS.

DS39582B-página 42 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
TABELA 4-1: FUNÇÕES DA PORTA

Nome Bit# Buffer Função

RA0/YAN0 bit 0 TTL Entrada/saída ou entrada analógica.


RA1/AN1 bit 1 TTL Entrada/saída ou entrada analógica.
RA2/AN2/VREF-/CVREF bit 2 TTL Entrada/saída ou entrada analógica ou VREF- ou CVREF.
RA3/AN3/VREF+ bit 3 TTL Entrada/saída ou entrada analógica ou VREF+.
RA4/T0CKI/C1OUT bocado 4 Entrada/saída ST ou entrada de relógio externo para Timer0 ou saída do comparador.
A saída é do tipo dreno aberto.
RA5/AN4/SS/C2OUT bit 5 TTL Entrada/saída ou entrada analógica ou entrada de seleção de escravo para porta serial
síncrona ou saída do comparador.
Legenda: TTL = entrada TTL, ST = entrada Schmitt Trigger

TABELA 4-2: RESUMO DOS REGISTOS ASSOCIADOS A PORTA

Valor em
Valor em:
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

05h PORTA - - RA5 RA4 RA3 RA2 RA1 RA0 --0x 0000 --0u 0000
85h TRISA — — Registro de Direção de Dados PORTA --11 1111 --11 1111
9 canais CMCON C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0 0000 0111 0000 0111
9 Dh CVRCON CVREN CVROE CVRR — CVR3 CVR2 CVR1 CVR0 000- 0000 000- 0000
9Fh ADCON1 ADFM ADCS2 — — PCFG3 PCFG2 PCFG1 PCFG0 00-- 0000 00-- 0000

Legenda: x = desconhecido, u = inalterado, - = locais não implementados lidos como '0'. As células sombreadas não são usadas pelo PORTA.

Nota: Ao usar o módulo SSP no modo SPI Slave e SS habilitado, o conversor A/D deve ser configurado para um dos
os seguintes modos, onde PCFG3:PCFG0 = 0100, 0101, 011x, 1101, 1110, 1111.

ÿ 2003 Microchip Technology Inc. DS39582B-página 43


Machine Translated by Google

PIC16F87XA
4.2 PORTB e o Registro TRISB Essa interrupção pode despertar o dispositivo do modo de suspensão. O
usuário, na Rotina de Serviço de Interrupção, pode limpar a interrupção
PORTB é uma porta bidirecional de 8 bits de largura. O registrador de da seguinte maneira:
direção de dados correspondente é TRISB. Definir um bit TRISB (= 1) fará
a) Qualquer leitura ou gravação de PORTB. Isso vai acabar com o
com que o pino PORTB correspondente seja uma entrada (ou seja,
condição de incompatibilidade.
coloque o driver de saída correspondente em um modo de alta impedância).
Apagar um bit TRISB (= 0) fará com que o pino PORTB correspondente b) Apague o bit de flag RBIF.

seja uma saída (ou seja, coloque o conteúdo da trava de saída no pino Uma condição de incompatibilidade continuará a definir o bit de sinalização RBIF.
selecionado). A leitura de PORTB encerrará a condição de incompatibilidade e permitirá
Três pinos de PORTB são multiplexados com a função In-Circuit Debugger que o bit de sinalização RBIF seja apagado.
e Low-Voltage Programming: RB3/PGM, RB6/PGC e RB7/PGD. As O recurso de interrupção na alteração é recomendado para a operação de
funções alternativas desses pinos estão descritas na Seção 14.0 ativação ao pressionar a tecla e operações em que PORTB é usado
“Recursos Especiais da CPU”. apenas para o recurso de interrupção na alteração. A sondagem de
PORTB não é recomendada ao usar o recurso de interrupção na alteração.
Cada um dos pinos PORTB tem um pull-up interno fraco. Um único bit de
controle pode ativar todos os pull-ups. Isto é feito limpando o bit RBPU Esse recurso de interrupção na incompatibilidade, juntamente com pull-
(OPTION_REG<7>). O pull-up fraco é desligado automaticamente quando ups configuráveis por software nesses quatro pinos, permite uma interface
o pino da porta é configurado como saída. Os pull-ups são desabilitados fácil com um teclado e possibilita o despertar ao pressionar a tecla.
em um Power-on Reset. Consulte a nota de aplicação, AN552, “Implementando o Despertar ao
Toque de Tecla”
(DS00552).
FIGURA 4-4: DIAGRAMA DE BLOCOS DE
RB0/INT é um pino de entrada de interrupção externa e é configurado
PINS RB3:RB0 usando o bit INTEDG (OPTION_REG<6>).
VDD RB0/INT é discutido em detalhes na Seção 14.11.1 “Interrupção INT”.
RBPU(2)
Fraco
P
Puxar para cima

Trava de dados
Barramento de dados
DQ FIGURA 4-5: DIAGRAMA DE BLOCOS DE
Pino de E/S (1) PINS RB7:RB4
Porta WR
CK
VDD
Trinco TRIS
RBPU(2)
Fraco
DQ P
TTL Puxar para cima

WR TRIS Entrada Trava de dados


CK Amortecedor Barramento de dados
D Q

Pino de E/S (1)


Porta WR
CK
RD TRIS
Trinco TRIS
D Q
Q D
Porta RD WR TRIS TTL
CK
DENTRO
Entrada
Amortecedor ST
Amortecedor
RB0/INT
RB3/PGM
RD TRIS
Robusto
Gatilho Schmitt Porta RD
Amortecedor QD
Porta RD
Nota 1: Os pinos de E/S possuem proteção de diodo para VDD e VSS. DENTRO Q1
conjunto RBIF
2: Para habilitar pull-ups fracos, defina o(s) bit(s) TRIS apropriado(s)
e limpe o bit RBPU (OPTION_REG<7>).

QD
Quatro dos pinos PORTB, RB7:RB4, possuem um recurso de interrupção
De outro Porta RD
na mudança. Apenas os pinos configurados como entradas podem causar pinos RB7:RB4 DENTRO

esta interrupção (ou seja, qualquer pino RB7:RB4 configurado como uma Q3

saída é excluído da comparação de interrupção na mudança). Os pinos RB7: RB6

de entrada (de RB7:RB4) são comparados com o valor antigo travado na No modo de programação serial

última leitura de PORTB. As saídas de “incompatibilidade” de RB7:RB4


Nota 1: Os pinos de E/S possuem proteção de diodo para VDD e VSS.
são combinadas em OR para gerar a interrupção de mudança de porta RB
2: Para habilitar pull-ups fracos, defina o(s) bit(s) TRIS apropriado(s)
com o bit de flag RBIF (INTCON<0>). e limpe o bit RBPU (OPTION_REG<7>).

DS39582B-página 44 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
TABELA 4-3: FUNÇÕES DA PORTA

Nome Pedaço# Amortecedor Função

RB0/INT bit 0 TTL/ST(1) Pino de entrada/saída ou entrada de interrupção externa. Pull-up fraco programável por software
interno.
RB1 pedaço 1 TTL Pino de entrada/saída. Pull-up fraco programável por software interno.
RB2 bit 2 TTL Pino de entrada/saída. Pull-up fraco programável por software interno.
RB3/PGM(3) bit 3 TTL Pino de entrada/saída ou pino de programação no modo LVP. Pull-up fraco programável
por software interno.
RB4 bocado 4 TTL Pino de entrada/saída (com interrupção na mudança). Pull-up fraco programável por software
interno.
RB5 pedaço 5 TTL Pino de entrada/saída (com interrupção na mudança). Pull-up fraco programável por software
interno.
RB6/PGC bocado 6 TTL/ST(2) Pino de entrada/saída (com interrupção na mudança) ou pino do depurador no circuito.
Pull-up fraco programável por software interno. Relógio de programação serial.
RB7/PGD pedaço 7 TTL/ST(2) Pino de entrada/saída (com interrupção na mudança) ou pino do depurador no circuito.
Pull-up fraco programável por software interno. Dados de programação serial.

Legenda: TTL = entrada TTL, ST = entrada Schmitt Trigger


Nota 1: Este buffer é uma entrada Schmitt Trigger quando configurado como interrupção externa.
2: Este buffer é uma entrada Schmitt Trigger quando usado no modo de programação serial ou depurador no circuito.
3: A programação ICSP de baixa tensão (LVP) é habilitada por padrão, o que desabilita a função RB3 I/O. O LVP deve ser desabilitado
para habilitar o RB3 como um pino de E/S e permitir compatibilidade máxima com outros dispositivos de médio alcance de 28 pinos
e 40 pinos.

TABELA 4-4: RESUMO DOS REGISTOS ASSOCIADOS A PORTB

Valor em
Valor em:
Endereço Nome Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

06h, 106h PORTB 86h, RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx xxxx uuuu uuuu

186h TRISB PORTB Registro de Direção de Dados 81h, 181h OPTION_REG 1111 1111 1111 1111

RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111

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

ÿ 2003 Microchip Technology Inc. DS39582B-página 45


Machine Translated by Google

PIC16F87XA
4.3 PORTC e o Registro TRISC FIGURA 4-7: DIAGRAMA DE BLOCO DA PORTA

PORTC é uma porta bidirecional de 8 bits de largura. O


(SAÍDA PERIFÉRICA
registrador de direção de dados correspondente é TRISC. Definir OVERRIDE) RC<4:3>
um bit TRISC (= 1) fará com que o pino PORTC correspondente
Seleção de Porta/Periférico(2)
seja uma entrada (ou seja, coloque o driver de saída
correspondente em um modo de alta impedância). Apagar um Saída de dados periféricos
0 VDD
bit TRISC (= 0) fará com que o pino PORTC correspondente
Barramento de dados
seja uma saída (ou seja, coloque o conteúdo da trava de saída no pino selecionado). DQ P
Porta WR 1
O PORTC é multiplexado com várias funções periféricas (Tabela CKQ
4-5). Os pinos PORTC possuem buffers de entrada Schmitt Trava de dados
Trigger. E/S
DQ pino(1)
Quando o módulo I2C está habilitado, os pinos PORTC<4:3>
WR TRIS
podem ser configurados com níveis normais de I2C , ou com CKQ N
níveis SMBus, usando o bit CKE (SSPSTAT<6>). Trinco TRIS
VSS
Ao habilitar funções periféricas, deve-se tomar cuidado na
definição de bits TRIS para cada pino PORTC. Alguns periféricos RD TRIS
Schmitt
substituem o bit TRIS para fazer de um pino uma saída, Acionar
enquanto outros periféricos substituem o bit TRIS para fazer de Periférico
VOCÊ(3)
QD
um pino uma entrada. Como a substituição de bit TRIS está em Schmitt
vigor enquanto o periférico está habilitado, instruções de leitura/ Acionar
DENTRO com
modificação de gravação (BSF, BCF, XORWF) com TRISC SMBBus
Porta RD 0 Níveis
como destino devem ser evitadas. O usuário deve consultar a
Entrada SSP
seção de periféricos correspondente para as configurações
corretas dos bits TRIS. 1

CKE
FIGURA 4-6: DIAGRAMA DE BLOCO DA PORTA SSPSTAT<6>

(SAÍDA PERIFÉRICA
Nota 1: Os pinos de E/S possuem proteção de diodo para VDD e VSS.
OVERRIDE) RC<2:0>, 2: O sinal Port/Peripheral Select seleciona entre os dados da
RC<7:5> porta e a saída periférica.
3: OE Periférico (Habilitação de Saída) só é ativado se
A seleção de periféricos está ativa.
Seleção de Porta/Periférico(2)

Saída de dados periféricos VDD


0
Barramento de dados
DQ
P
Porta WR 1
CKQ

Trava de dados
E/S
DQ pino(1)

WR TRIS CKQ N
Trinco TRIS
VSS

RD TRIS
Schmitt
Acionar
Periférico
VOCÊ(3)
QD

DENTRO

Porta RD

Entrada periférica

Nota 1: Os pinos de E/S possuem proteção de diodo para VDD e VSS.


2: O sinal de seleção de porta/periférico seleciona entre as portas
dados e saída periférica.
3: OE Periférico (Habilitação de Saída) só é ativado se
A seleção de periféricos está ativa.

DS39582B-página 46 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
TABELA 4-5: FUNÇÕES PORTC

Nome Bit# Tipo de Buffer Função

RC0/T1OSO/T1CKI bit 0 ST Pino da porta de entrada/saída ou saída do oscilador Timer1/entrada do relógio Timer1.
RC1/T1OSI/CCP2 pedaço 1 ST Pino da porta de entrada/saída ou entrada do oscilador Timer1 ou entrada/entrada Capture2
Saída Compare2/saída PWM2.
RC2/CCP1 parte 2 ST Pino da porta de entrada/saída ou entrada Capture1/saída Compare1/
Saída PWM1.
RC3/SCK/SCL parte 3 ST O RC3 também pode ser o relógio serial síncrono para os modos SPI e I 2C.

RC4/SDI/SDA bocado 4 ST RC4 também pode ser os dados SPI em (modo SPI) ou dados I/O (modo I2C ).
RC5/SDO pedaço 5 ST Pino da porta de entrada/saída ou saída de dados da porta serial síncrona.
RC6/TX/CK bocado 6 ST Pino da porta de entrada/saída ou transmissão assíncrona USART ou
relógio síncrono.
RC7/RX/DT pedaço 7 ST Pino da porta de entrada/saída ou recebimento assíncrono USART ou
dados síncronos.

Legenda: ST = entrada do gatilho Schmitt

TABELA 4-6: RESUMO DOS REGISTOS ASSOCIADOS A PORTC

Valor em
Valor em:
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

07h PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx uuuu uuuu

87h Registro de Direção de Dados TRISC PORTC 1111 1111 1111 1111

Legenda: x = desconhecido, u = inalterado

ÿ 2003 Microchip Technology Inc. DS39582B-página 47


Machine Translated by Google

PIC16F87XA
4.4 Registros PORTD e TRISD FIGURA 4-8: DIAGRAMA DE BLOCO PORTD
(NO MODO DE PORTA DE E/S)
Nota: PORTD e TRISD não são implementados
nos dispositivos de 28 pinos. Dados Trava de dados
Ônibus
D Q
PORTD é uma porta de 8 bits com entrada Schmitt Trigger
WR
Pino de E/S (1)
tampões. Cada pino é configurável individualmente como uma entrada Porta
CK
ou saída.

PORTD pode ser configurado como um 8-bit wide Trinco TRIS

porta do microprocessador (Parallel Slave Port) definindo DQ

bit de controle, PSPMODE (TRISE<4>). Neste modo, o WR


TRIS Schmitt
buffers de entrada são TTL. CK
Acionar
Entrada
Amortecedor

RD
TRIS

Q D

DENTRO
DENTRO

Porta RD

Nota 1: Os pinos de E/S possuem diodos de proteção para VDD e VSS.

TABELA 4-7: FUNÇÕES PORTD

Nome Pedaço# Tipo de buffer Função

RD0/PSP0 bit 0 ST/TTL(1) Pino da porta de entrada/saída ou bit 0 da porta paralela escrava.
RD1/PSP1 pedaço 1 ST/TTL(1) Pino da porta de entrada/saída ou bit 1 da porta paralela escrava.
RD2/PSP2 bit2 ST/TTL(1) Pino da porta de entrada/saída ou bit da porta paralela escrava 2.
RD3/PSP3 parte 3 ST/TTL(1) Pino da porta de entrada/saída ou bit da porta paralela escrava 3.
RD4/PSP4 bocado 4 ST/TTL(1) Pino da porta de entrada/saída ou bit da porta paralela escrava 4.
RD5/PSP5 pedaço 5 ST/TTL(1) Pino da porta de entrada/saída ou bit da porta paralela escrava 5.
RD6/PSP6 bocado 6 ST/TTL(1) Pino da porta de entrada/saída ou bit da porta paralela escrava 6.
RD7/PSP7 pedaço 7 ST/TTL(1) Pino da porta de entrada/saída ou bit da porta paralela escrava 7.

Legenda: ST = entrada Schmitt Trigger, TTL = entrada TTL Nota 1: Os

buffers de entrada são Schmitt Triggers quando em modo I/O e buffers TTL quando em modo Parallel Slave Port.

TABELA 4-8: RESUMO DOS REGISTOS ASSOCIADOS A PORTD


Valor ativado
Valor em:
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

08h PORTA RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 xxxx xxxx uuuu uuuu

88h Registro de Direção de Dados TRISD PORTD 1111 1111 1111 1111

89h TRISE IBF OBF IBOV PSPMODE — PORTA Bits de direção de dados 0000 -111 0000 -111

Legenda: x = desconhecido, u = inalterado, - = não implementado, lido como '0'. As células sombreadas não são usadas pelo PORTD.

DS39582B-página 48 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
4.5 Registro PORTE e TRISE FIGURA 4-9: DIAGRAMA DE BLOCO DE PORTA
(NO MODO DE PORTA DE E/S)
Nota: PORTE e TRISE não são implementados nos dispositivos de
28 pinos. Dados Trava de dados
Ônibus
O PORTE possui três pinos (RE0/RD/AN5, RE1/WR/AN6 e RE2/CS/ DQ

AN7) que são configuráveis individualmente como entradas ou saídas. WR


Pino de E/S (1)
Porta
Esses pinos possuem buffers de entrada Schmitt Trigger. CK

Trinco TRIS
Os pinos PORTE tornam-se as entradas de controle de E/S para a porta DQ
do microprocessador quando o bit PSPMODE (TRISE<4>) é definido.
WR
Neste modo, o usuário deve certificar-se de que os bits TRISE<2:0> TRIS Schmitt
CK
estejam configurados e que os pinos estejam configurados como entradas Acionar
Entrada
digitais. Além disso, certifique-se de que o ADCON1 esteja configurado
Amortecedor

para E/S digital. Neste modo, os buffers de entrada são TTL.


RD
TRIS

O registro 4-1 mostra o registro TRISE que também controla a operação


da Porta Escrava Paralela.
Q D
Os pinos PORTE são multiplexados com entradas analógicas. Quando
selecionados para entrada analógica, esses pinos serão lidos como '0's. DENTRO
DENTRO

TRISE controla a direção dos pinos RE, mesmo quando estão sendo Porta RD
usados como entradas analógicas. O usuário deve certificar-se de manter
os pinos configurados como entradas ao usá-los como entradas
analógicas. Nota 1: Os pinos de E/S possuem diodos de proteção para VDD e VSS.

Nota: Em um Power-on Reset, esses pinos são configurados como


entradas analógicas e lidos como '0'.

TABELA 4-9: FUNÇÕES DE PORTA

Nome Bit# Tipo de Buffer Função

Pino da porta de E/S ou entrada de controle de leitura no modo Porta Escrava Paralela ou entrada
analógica: RD 1 = Inativo 0 = Operação de leitura. O conteúdo do registro PORTD é enviado para os
RE0/RD/AN5 bit 0 ST/TTL(1) pinos PORTD I/O (se o chip for selecionado).

Pino da porta de E/S ou entrada de controle de gravação no modo Porta Escrava Paralela ou entrada
analógica: WR 1 = Inativo 0 = Operação de gravação. O valor dos pinos de E/S PORTD é travado no
RE1/WR/AN6 bit 1 ST/TTL(1) registro PORTD (se o chip for selecionado).

Pino da porta de E/S ou entrada de controle de seleção de chip no modo de porta paralela escrava ou entrada analógica:
CS
RE2/CS/AN7 bit 2 ST/TTL(1)
1 = O dispositivo não está selecionado
0 = O dispositivo está selecionado

Legenda: ST = entrada Schmitt Trigger, TTL = entrada TTL Nota 1: Os


buffers de entrada são Schmitt Triggers quando em modo I/O e buffers TTL quando em modo Parallel Slave Port.

ÿ 2003 Microchip Technology Inc. DS39582B-página 49


Machine Translated by Google

PIC16F87XA
TABELA 4-10: RESUMO DOS REGISTOS ASSOCIADOS À PORTE

Valor em
Valor em:
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

09h PORTÃO - - - - — RE2 RE1 RE0 ---- -xxx ---- -uuu

89h TRÊS IBF OBF IBOV PSPMODE — PORTA Data Direction bits 0000 -111 0000 -111

9Fh ADCON1 ADFM ADCS2 — — PCFG3 PCFG2 PCFG1 PCFG0 00-- 0000 00-- 0000

Legenda: x = desconhecido, u = inalterado, - = não implementado, lido como '0'. As células sombreadas não são usadas pelo PORTE.

REGISTRO 4-1: REGISTRO TRISE (ENDEREÇO 89h)


R-0 R-0 R/W-0 R/W-0 U-0 R/W-1 R/W-1 R/W-1

IBF OBF IBOV PSPMODE — Bit 2 Bit 1 Bit 0

pedaço 7 bit 0

Bits de Status/Controle da Porta Escrava Paralela:

pedaço 7 IBF: bit de status completo do buffer de entrada

1 = Uma palavra foi recebida e está esperando para ser lida pela CPU
0 = Nenhuma palavra foi recebida
bocado 6 OBF: bit de status completo do buffer de saída

1 = O buffer de saída ainda contém uma palavra escrita anteriormente


0 = O buffer de saída foi lido
pedaço 5 IBOV: Bit de detecção de estouro de buffer de entrada (no modo microprocessador)

1 = Ocorreu uma escrita quando uma palavra inserida anteriormente não foi lida (deve ser apagada em
Programas)
0 = Não ocorreu estouro

bocado 4 PSPMODE: Bit de seleção do modo de porta paralela escrava


1 = PORTD funciona no modo de porta paralela escrava
0 = funções PORTD no modo de E/S de uso geral
parte 3 Não implementado: Leia como '0'
Bits de direção de dados PORTE:

parte 2 Bit 2: Bit de controle de direção para pino RE2/CS/AN7

1 = Entrada
0 = Saída
pedaço 1 Bit 1: Bit de controle de direção para pino RE1/WR/AN6

1 = Entrada
0 = Saída
bit 0 Bit 0: Bit de controle de direção para pino RE0/RD/AN5

1 = Entrada
0 = Saída

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

DS39582B-página 50 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
4.6 Porta Escrava Paralela Quando não estiver no modo PSP, os bits IBF e OBF são mantidos
limpos. No entanto, se o bit de sinalizador IBOV foi definido
A Porta Escrava Paralela (PSP) não é implementada no PIC16F873A anteriormente, ele deve ser limpo no firmware.
ou PIC16F876A.
Uma interrupção é gerada e travada no bit de sinalização PSPIF
PORTD opera como uma Porta Escrava Paralela de 8 bits de largura, quando uma operação de leitura ou gravação é concluída.
ou porta de microprocessador, quando o bit de controle PSPMODE PSPIF deve ser apagado pelo usuário no firmware e a interrupção
(TRISE<4>) é definido. No modo Slave, é legível e gravável de forma pode ser desabilitada apagando o bit de habilitação de interrupção
assíncrona pelo mundo externo através do pino de entrada de PSPIE (PIE1<7>).
controle RD, RE0/RD/AN5, e pino de entrada de controle WR, RE1/
WR/AN6.
FIGURA 4-10: PORTO E PORTO
O PSP pode interagir diretamente com um barramento de dados de DIAGRAMA DE BLOCO
microprocessador de 8 bits. O microprocessador externo pode ler ou
(PORTO ESCRAVO PARALELO)
gravar a trava PORTD como uma trava de 8 bits.
A configuração do bit PSPMODE permite que o pino da porta RE0/
RD/AN5 seja a entrada RD, RE1/WR/AN6 seja a entrada WR e RE2/ Barramento de dados

DQ
CS/AN7 seja a entrada CS (Seleção de Chip). Para esta
WR
funcionalidade, os bits de direção de dados correspondentes do pino RDx
Porta
CK
registrador TRISE (TRISE<2:0>) devem ser configurados como
entradas (set). Os bits de configuração da porta A/D, PCFG3:PCFG0 TTL
(ADCON1<3:0>), devem ser configurados para configurar os pinos
Q D
RE2:RE0 como E/S digital.

Na verdade, existem duas travas de 8 bits: uma para saída de dados Porta RD DENTRO
DENTRO

e outra para entrada de dados. O usuário grava dados de 8 bits na


trava de dados PORTD e lê os dados da trava do pino da porta
Um pouco de PORTD
(observe que eles têm o mesmo endereço). Neste modo, o registro
TRISD é ignorado, pois o dispositivo externo está controlando a Definir sinalizador de interrupção

direção do fluxo de dados. PSPIF (PIR1<7>)

Uma gravação no PSP ocorre quando as linhas CS e WR são


detectadas pela primeira vez como baixas. Quando as linhas CS ou
WR ficam altas (acionadas por nível), o bit de flag de status do buffer
de entrada cheio (IBF) (TRISE<7>) é definido no ciclo de clock Q4, Ler
TTL RD
seguindo o próximo ciclo Q2, para sinalizar que a gravação está
concluída (Figura 4-11). O bit sinalizador de interrupção, PSPIF Seleção de Chip
TTL CS
(PIR1<7>), também é definido no mesmo ciclo de clock Q4. O IBF só
pode ser apagado lendo a trava de entrada PORTD. Escreva
O bit de flag de status Input Buffer Overflow (IBOV) (TRISE<5>) é TTL WR

definido se uma segunda gravação no PSP for tentada quando o


byte anterior não tiver sido lido do buffer. Nota 1: Os pinos de E/S possuem diodos de proteção para VDD e VSS.

Uma leitura do PSP ocorre quando as linhas CS e RD são detectadas


pela primeira vez como baixas. O bit de flag de status do buffer de
saída cheio (OBF) (TRISE<6>) é apagado imediatamente (Figura
4-12), indicando que a trava PORTD está esperando para ser lida
pelo barramento externo. Quando o pino CS ou RD fica alto
(disparado por nível), o bit de sinalização de interrupção PSPIF é
definido no ciclo de clock Q4, seguindo o próximo ciclo Q2, indicando
que a leitura está completa. O OBF permanece baixo até que os
dados sejam gravados no PORTD pelo firmware do usuário.

ÿ 2003 Microchip Technology Inc. DS39582B-página 51


Machine Translated by Google

PIC16F87XA
FIGURA 4-11: FORMAS DE ONDA DE ESCRITA DE PORTA ESCRAVO PARALELA

Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4

CS

WR

RD

PORTE<7:0>

IBF

OBF

PSPIF

FIGURA 4-12: LEITURA DE FORMAS DE ONDA DE PORTA ESCRAVO PARALELA

Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4

CS

WR

RD

PORTE<7:0>

IBF

OBF

PSPIF

TABELA 4-11: REGISTROS ASSOCIADOS À PORTA ESCRAVO PARALELA

Valor em
Valor em:
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

08h Trava de dados da porta PORTD quando gravado; Pinos de porta quando lidos xxxx xxxx uuuu uuuu

09h PORTÃO - - - - — RE2 RE1 RE0 ---- -xxx ---- -uuu

89h TRÊS IBF OBF IBOV PSPMODE — PORT bits de direção de dados 0000 -111 0000 -111

0Ch PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000

8 canais TORTA1 PSPIE(1) RCIE DE FRANGO ESSA SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000

9Fh ADCON1 ADFM ADCS2 — — PCFG3 PCFG2 PCFG1 PCFG0 00-- 0000 00-- 0000

Legenda: x = desconhecido, u = inalterado, - = não implementado, lido como '0'. As células sombreadas não são usadas pela Porta Escrava Paralela.
Nota 1: Os bits PSPIE e PSPIF são reservados no PIC16F873A/876A; sempre mantenha esses bits claros.

DS39582B-página 52 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
5.0 MÓDULO DE TEMPORIZADOR0 O modo contador é selecionado configurando o bit T0CS
(OPTION_REG<5>). No modo Contador, o Timer0 será incrementado
O temporizador/contador do módulo Timer0 possui os seguintes em cada borda ascendente ou descendente do pino RA4/T0CKI. A
recursos:
borda de incremento é determinada pelo bit Timer0 Source Edge
• temporizador/contador de 8 bits Select, T0SE (OPTION_REG<4>). O bit de limpeza T0SE seleciona a
• Legível e gravável borda ascendente. Restrições na entrada de relógio externo são
discutidas em detalhes na Seção 5.2 “Usando Timer0 com um
• Prescaler programável por software de 8 bits •
Relógio Externo”.
Seleção de relógio interno ou externo

• Interrupção no overflow de FFh a 00h • Seleção


O prescaler é mutuamente compartilhado exclusivamente entre o
de borda para relógio externo módulo Timer0 e o Watchdog Timer. O prescaler não é legível ou
A Figura 5-1 é um diagrama de blocos do módulo Timer0 e do gravável. A seção 5.3 “Prescaler” detalha a operação do prescaler.
prescaler compartilhado com o WDT.
Informações adicionais sobre o módulo Timer0 estão disponíveis no
PICmicro® Mid-Range MCU Family Reference Manual (DS33023).
5.1 Interrupção do Temporizador0

A interrupção TMR0 é gerada quando o registrador TMR0 transborda


O modo temporizador é selecionado limpando o bit T0CS de FFh para 00h. Este estouro ativa o bit TMR0IF (INTCON<2>). A
(OPTION_REG<5>). No modo Timer, o módulo Timer0 incrementará interrupção pode ser mascarada limpando o bit TMR0IE (INTCON<5>).
a cada ciclo de instrução (sem prescaler). Se o registrador TMR0 for O bit TMR0IF deve ser apagado no software pelo módulo Timer0
escrito, o incremento é inibido para os dois ciclos de instrução seguintes. Interrupt Service Routine antes de reativar esta interrupção. A
interrupção TMR0 não pode despertar o processador da suspensão,
O usuário pode contornar isso escrevendo um valor ajustado no pois o temporizador é desligado durante a suspensão.
registro TMR0.

FIGURA 5-1: DIAGRAMA DE BLOCOS DO PRÉ-CALLER TIMER0/WDT

CLKO (= ESCURO/4)
Barramento de dados

8
M
0 1
pino RA4/T0CKI
DENTRO
M
Sincronização
X
DENTRO

1 0 2
TMR0 Reg
X
Ciclos

T0SE
T0CS
PSA Definir o bit de sinalização
TMR0IF no estouro

PRÉ-CALCADOR

0
Pré-escalador de 8 bits
M
DENTRO

1 X
cão de guarda 8
Cronômetro

8-para-1 MUX PS2:PS0

PSA

0 1
Bit de habilitação WDT

MUX PSA

WDT
Tempo esgotado

Nota: T0CS, T0SE, PSA, PS2:PS0 são (OPTION_REG<5:0>).

ÿ 2003 Microchip Technology Inc. DS39582B-página 53


Machine Translated by Google

PIC16F87XA
5.2 Usando Timer0 com um relógio O módulo Timer0 significa que não há prescaler para o
externo Watchdog Timer e vice-versa. Este pré-escalador não é
legível ou gravável (consulte a Figura 5-1).
Quando nenhum prescaler é usado, a entrada de clock externa é
Os bits PSA e PS2:PS0 (OPTION_REG<3:0>)
o mesmo que a saída do prescaler. A sincronização
determinar a atribuição do prescaler e a proporção do prescale.
de T0CKI com os relógios de fase internos é obtido pela amostragem
da saída do prescaler no Q2 e Quando atribuído ao módulo Timer0, todas as instruções
Q4 ciclos dos relógios de fase internos. Portanto, é escrevendo no registrador TMR0 (por exemplo, CLRF 1, MOVWF 1,
necessário que o T0CKI seja alto por pelo menos 2 TOSC (e BSF 1,x....etc.) limpará o prescaler. Quando atribuído
um pequeno atraso RC de 20 ns) e baixo por pelo menos 2 TOSC para WDT, uma instrução CLRWDT limpará o prescaler
(e um pequeno atraso RC de 20 ns). Consulte a parte elétrica juntamente com o Watchdog Timer. O pré-escalador não é
legível ou gravável.
especificação do dispositivo desejado.

Nota: Gravando no TMR0 quando o prescaler é


5.3 Pré-escalador atribuído a Timer0 limpará o prescaler
contar, mas não mudará o prescaler
Existe apenas um prescaler disponível que é mutuamente
atribuição.
compartilhado exclusivamente entre o módulo Timer0 e o
Cronômetro de cão de guarda. Uma atribuição de pré-escalador para o

REGISTRO 5-1: OPTION_REG REGISTRO


R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1

RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0

pedaço 7 bit 0

pedaço 7 RBPU

bocado 6 INTEG

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

1 = Transição no pino T0CKI


0 = Relógio do ciclo de instrução interno (CLKO)
bocado 4 T0SE: Bit de seleção de borda de origem TMR0
1 = Incremento na transição de alto para baixo no pino T0CKI
0 = Incremento na transição de baixo para alto no pino T0CKI
parte 3 PSA: bit de atribuição do pré-escalador
1 = Prescaler é atribuído ao WDT
0 = Prescaler é atribuído ao módulo Timer0
pouco 2-0 PS2:PS0: bits de seleção de taxa do pré-escalador

Valor de Bit Taxa TMR0 Taxa WDT


000 1: 2 1: 1
001 1: 4 1: 2
010 1:8 1: 4
011 1: 16 1:8
100 1: 32 1: 16
101 1: 64 1: 32
110 1: 128 1: 64
111 1: 256 1: 128

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

Nota: Para evitar uma reinicialização involuntária do dispositivo, a sequência de instruções mostrada na
O Manual de Referência da Família PICmicro® Mid-Range MCU (DS33023) deve ser executado ao
alterar a atribuição do prescaler de Timer0 para WDT. este
seqüência deve ser seguida mesmo se o WDT estiver desabilitado.

DS39582B-página 54 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
TABELA 5-1: REGISTROS ASSOCIADOS A TIMER0
Valor em
Valor em:
Endereço Nome Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

01h, 101h TMR0 Registro do Módulo Timer0 xxxx xxxx uuuu uuuu

0Bh,8Bh, INTCON GIE PEIE TMR0IE INTE RBIE TMR0IF INTF RBIF 0000 000x 0000 000u
10Bh,18Bh

81h,181h OPTION_REG RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111

Legenda: x = desconhecido, u = inalterado, - = locais não implementados lidos como '0'. As células sombreadas não são usadas pelo Timer0.

ÿ 2003 Microchip Technology Inc. DS39582B-página 55


Machine Translated by Google

PIC16F87XA
NOTAS:

DS39582B-página 56 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
6.0 MÓDULO DE TEMPORIZADOR 1 No modo Timer, Timer1 incrementa cada instrução
ciclo. No modo Contador, ele incrementa a cada subida
O módulo Timer1 é um temporizador/contador de 16 bits que consiste borda da entrada de clock externa.
de dois registradores de 8 bits (TMR1H e TMR1L) que são
Timer1 pode ser ativado/desativado configurando/limpando
legível e gravável. O par de registradores TMR1
bit de controle, TMR1ON (T1CON<0>).
(TMR1H:TMR1L) aumenta de 0000h a FFFFh
e rola para 0000h. A interrupção TMR1, se habilitada, O Timer1 também possui uma “entrada de reset” interna. Esta redefinição
é gerado no estouro que é travado na interrupção pode ser gerado por qualquer um dos dois módulos CCP
bit de sinalizador, TMR1IF (PIR1<0>). Esta interrupção pode ser (Seção 8.0 “Módulos de Captura/Comparação/PWM”).
ativado/desativado configurando/limpando a interrupção TMR1 O registro 6-1 mostra o registro de controle do Timer1.
bit de habilitação, TMR1IE (PIE1<0>). Quando o oscilador Timer1 está habilitado (T1OSCEN é
Timer1 pode operar em um dos dois modos: set), o RC1/T1OSI/CCP2 e RC0/T1OSO/T1CKI
pinos tornam-se entradas. Ou seja, o valor TRISC<1:0> é
• Como um temporizador
ignorado e esses pinos são lidos como '0'.
• Como contador
Informações adicionais sobre módulos temporizadores estão disponíveis em
O modo de operação é determinado pela seleção do relógio
a referência da família de MCU de médio alcance PICmicro®
bit, TMR1CS (T1CON<1>).
Manual (DS33023).

REGISTRO 6-1: T1CON: REGISTRO DE CONTROLE TIMER1 (ENDEREÇO 10h)


U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

— — T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON

pedaço 7 bit 0

bocado 7-6 Não implementado: Leia como '0'


bocado 5-4 T1CKPS1:T1CKPS0: Timer1 Input Clock Prescale Select bits

11 = valor de pré-escala 1:8


10 = 1:4 valor de pré-escala
01 = valor de pré-escala 1:2
00 = 1:1 valor de pré-escala
parte 3 T1OSCEN: Bit de controle de habilitação do oscilador Timer1

1 = O oscilador está habilitado

0 = O oscilador está desligado (o inversor do oscilador é desligado para eliminar o consumo de energia)
parte 2 T1SYNC: Bit de controle de sincronização de entrada de relógio externo do Timer1
Quando TMR1CS = 1:
1 = Não sincroniza a entrada do relógio externo
0 = Sincroniza a entrada do relógio externo
Quando TMR1CS = 0:

Este bit é ignorado. Timer1 usa o relógio interno quando TMR1CS = 0.


pedaço 1 TMR1CS: Bit de seleção da fonte do relógio do Timer1

1 = Relógio externo do pino RC0/T1OSO/T1CKI (na borda de subida)


0 = Relógio interno (ESCURO/4)
bit 0 TMR1ON: Temporizador1 em bit

1 = Ativa o Temporizador1
0 = Pára o temporizador1

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

ÿ 2003 Microchip Technology Inc. DS39582B-página 57


Machine Translated by Google

PIC16F87XA
6.1 Funcionamento do Timer1 no Modo Timer 6.2 Operação do Contador do Temporizador1
O modo temporizador é selecionado limpando o bit TMR1CS O Timer1 pode operar no modo Síncrono ou Assíncrono, dependendo
(T1CON<1>). Neste modo, o relógio de entrada para o temporizador da configuração do bit TMR1CS.
é FOSC/4. O bit de controle de sincronização, T1SYNC (T1CON<2>),
não tem efeito, pois o relógio interno está sempre sincronizado.
Quando o Timer1 está sendo incrementado por meio de uma fonte
externa, os incrementos ocorrem em uma borda de subida. Após o
Timer1 ser habilitado no modo Contador, o módulo deve primeiro ter
uma borda descendente antes que o contador comece a incrementar.

FIGURA 6-1: BORDA DE INCREMENTO DO TIMER1

T1CKI

(Padrão Alto)

T1CKI

(Baixo padrão)

Nota: As setas indicam incrementos do contador.

6.3 Operação do Timer1 no Modo de Contador Se T1SYNC for desenergizado, a entrada do relógio externo será

Sincronizado sincronizada com os relógios de fase internos. A sincronização é


feita após a etapa de prescaler. O estágio de prescaler é um contador
O modo contador é selecionado configurando o bit TMR1CS. Neste de ondulação assíncrono.
modo, o temporizador é incrementado em cada borda de subida da
Nesta configuração, durante o modo Sleep, o Timer1 não será
entrada de clock no pino RC1/T1OSI/CCP2 quando o bit T1OSCEN
incrementado mesmo se o relógio externo estiver presente, pois o
é definido, ou no pino RC0/T1OSO/T1CKI quando o bit T1OSCEN é
circuito de sincronização está desligado. O prescaler, no entanto,
apagado.
continuará a incrementar.

FIGURA 6-2: DIAGRAMA DE BLOCO DO TIMER1

Definir bit de sinalização

TMR1IF ativado
Transbordar Sincronizado
TMR1 0
Entrada de relógio

TMR1H TMR1L
1
TMR1ON
Ligado desligado
T1SYNC
T1OSC
RC0/T1OSO/T1CKI 1
Pré- Sincronizar
T1OSCEN ESCURO/4 escalador 1, 2, 4, 8 a
Permitir interno 0
RC1/T1OSI/CCP2(2) Oscilador(1) Relógio 2
Relógio Q
T1CKPS1:T1CKPS0
TMR1CS

Nota 1: Quando o bit T1OSCEN é apagado, o inversor é desligado. Isso elimina o dreno de energia.

DS39582B-página 58 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
6.4 Operação do Timer1 no Modo TABELA 6-1: SELEÇÃO DE CAPACITOR PARA

Contador Assíncrono O OSCILADOR DO TEMPORIZADOR1

Tipo de Osc Frequencia. C1 C2


Se o bit de controle T1SYNC (T1CON<2>) estiver definido, o
a entrada do relógio não está sincronizada. O temporizador continua a LP 32 kHz 33 pF 33 pF
incremento assíncrono aos relógios de fase internos. 100 kHz 15 pF 15 pF
O cronômetro continuará a funcionar durante a suspensão e pode
200 kHz 15 pF 15 pF
gerar uma interrupção no estouro que vai acordar
o processador. No entanto, cuidados especiais na Esses valores são apenas para orientação de projeto.
software são necessários para ler/escrever o temporizador.
Cristais testados:
No modo Contador Assíncrono, Timer1 não pode ser
32,768 kHz Epson C-001R32,768K-A ± 20 PPM
usado como base de tempo para capturar ou comparar operações.
100 kHz Epson C-2 100,00 KC-P ± 20 PPM
6.4.1 TEMPORIZADOR DE LEITURA E ESCRITA 1 IN 200 kHz STD XTL 200.000 kHz ± 20 PPM
MODO CONTADOR ASSÍNCRONO
Nota 1: A capacitância mais alta aumenta a estabilidade do oscilador,
Lendo TMR1H ou TMR1L enquanto o temporizador está em execução mas também aumenta o tempo de inicialização.
de um relógio assíncrono externo garantirá uma
read (cuidado no hardware). No entanto, o usuário 2: Como cada ressonador/cristal possui características
deve-se ter em mente que ler o temporizador de 16 bits em dois próprias, o usuário deve consultar o fabricante do
valores de 8 bits em si, apresenta alguns problemas, uma vez que o ressonador/cristal para valores adequados dos
temporizador pode estourar entre as leituras. componentes externos.
Para gravações, é recomendado que o usuário simplesmente pare
o temporizador e escreva os valores desejados. Uma contenção de
escrita pode ocorrer escrevendo nos registradores do temporizador enquanto o 6.6 Redefinindo o temporizador1 usando um CCP
registrador está aumentando. Isso pode produzir um
Saída do gatilho
valor imprevisível no registro do temporizador.

A leitura do valor de 16 bits requer alguns cuidados. Se o módulo CCP1 ou CCP2 estiver configurado em Comparar
Exemplos 12-2 e 12-3 no PICmicro® Mid-Range modo para gerar um “gatilho de evento especial”
Manual de referência da família MCU (DS33023) mostra como (CCP1M3:CCP1M0 = 1011), este sinal será resetado
Temporizador1.
para ler e escrever Timer1 quando estiver rodando em
Modo assíncrono.
Nota: Os acionadores de eventos especiais do CCP1
e os módulos CCP2 não definirão interrupção
6.5 Temporizador1 Oscilador
bit de sinalizador, TMR1IF (PIR1<0>).

Um circuito oscilador de cristal é embutido entre os pinos T1OSI O Timer1 deve ser configurado para o modo Timer ou Synchronized
(entrada) e T1OSO (saída do amplificador). Ele é habilitado por Counter para aproveitar esse recurso.
ajuste do bit de controle, T1OSCEN (T1CON<3>). O oscilador oscilador Se o Timer1 estiver sendo executado no modo Contador Assíncrono,
é um oscilador de baixa potência, classificado até 200 kHz. Isto esta operação de reinicialização pode não funcionar.
continuará a funcionar durante a suspensão. É destinado principalmente No caso de uma gravação no Timer1 coincidir com um
para uso com um cristal de 32 kHz. A Tabela 6-1 mostra o
acionador de evento especial de CCP1 ou CCP2, a gravação
seleção do capacitor para o oscilador Timer1.
ter precedência.
O oscilador Timer1 é idêntico ao oscilador LP.
Neste modo de operação, o par de registradores CCPRxH:CCPRxL
O usuário deve fornecer um atraso de tempo de software para garantir
torna-se efetivamente o registrador de período para
partida correta do oscilador. Temporizador1.

ÿ 2003 Microchip Technology Inc. DS39582B-página 59


Machine Translated by Google

PIC16F87XA
6.7 Reinicialização do par de registros do Timer1 6.8 Temporizador1 Pré-escalonador
(TMR1H, TMR1L)
O contador do pré-escalador é apagado nas gravações no
Os registros TMR1H e TMR1L não são redefinidos para 00h em um registradores TMR1H ou TMR1L.
POR, ou qualquer outro Reset, exceto pelo CCP1 e
Acionadores de eventos especiais CCP2.

O registro T1CON é redefinido para 00h em um Power-on Reset,


ou um Brown-out Reset, que desliga o temporizador e
deixa uma pré-escala 1:1. Em todas as outras Reinicializações, o registro
não é afetado.

TABELA 6-2: REGISTROS ASSOCIADOS AO TIMER1 COMO TEMPORIZADOR/CONTADOR


Valor ativado
Valor em:
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

0Bh,8Bh, INTCON GIE PEIE TMR0IE NÃO RBIE TMR0IF INTF RBIF 0000 000x 0000 000u
10Bh, 18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000

8 canais TORTA1 PSPIE(1) RCIE DE FRANGO ESSA SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000

0Eh Registro de retenção TMR1L para o byte menos significativo do registro TMR1 de 16 bits xxxx xxxx uuuu uuuu

0 Fh Registro de retenção TMR1H para o byte mais significativo do registro TMR1 de 16 bits xxxx xxxx uuuu uuuu

10h T1CON — — T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON --00 0000 --uuuuuu

Legenda: x = desconhecido, u = inalterado, - = não implementado, lido como '0'. As células sombreadas não são usadas pelo módulo Timer1.
Nota 1: Os bits PSPIE e PSPIF são reservados nos dispositivos de 28 pinos; sempre mantenha esses bits claros.

DS39582B-página 60 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
7.0 MÓDULO DO TEMPORIZADOR 2 O registro 7-1 mostra o registro de controle do Timer2.

Informações adicionais sobre módulos temporizadores estão disponíveis em


Timer2 é um timer de 8 bits com um prescaler e um
a referência da família de MCU de médio alcance PICmicro®
pós-escalador. Pode ser usado como base de tempo PWM para o
Manual (DS33023).
Modo PWM do(s) módulo(s) CCP. O registro TMR2
é legível e gravável e é apagado em qualquer dispositivo
FIGURA 7-1: DIAGRAMA DE BLOCO DO TEMPORIZADOR 2
Redefinir.

O clock de entrada (FOSC/4) tem uma opção de pré-escala de Define o sinalizador


TMR2
bit TMR2IF
1:1, 1:4 ou 1:16, selecionados por bits de controle Saída(1)

T2CKPS1:T2CKPS0 (T2CON<1:0>).
Redefinir Pré-escalador
O módulo Timer2 possui um registrador de período de 8 bits, PR2. Registro TMR2 ESCURO/4
1:1, 1:4, 1:16
Timer2 incrementa a partir de 00h até corresponder a PR2 e
Pós-escalador 2
em seguida, redefine para 00h no próximo ciclo de incremento. PR2 é Comparador
1:1 a 1:16 EQ
um registrador legível e gravável. O registro PR2 é T2CKPS1:
inicializado para FFh após a reinicialização. 4 T2CKPS0
PR2 Reg

A saída de correspondência do TMR2 passa por um 4-bit T2OUTPS3:


T2OUTPS0
postscaler (que fornece uma escala de 1:1 a 1:16 inclusive)
para gerar uma interrupção TMR2 (travada no bit de flag, Nota 1: A saída do registrador TMR2 pode ser selecionada pelo software pelo
TMR2IF (PIR1<1>)). Módulo SSP como um relógio baud.

Timer2 pode ser desligado limpando o bit de controle, TMR2ON


(T2CON<2>), para minimizar o consumo de energia.

REGISTRO 7-1: T2CON: REGISTRO DE CONTROLE TIMER2 (ENDEREÇO 12h)


U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

— TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0

pedaço 7 bit 0

pedaço 7 Não implementado: Leia como '0'


bocado 6-3 TOUTPS3:TOUTPS0: Bits de seleção de pós- escala de saída do Timer2

0000 = 1:1 pós-escala


0001 = 1:2 pós-escala
0010 = 1:3 pós-escala


1111 = 1:16 pós-escala


parte 2 TMR2ON: Temporizador2 em bit

1 = Temporizador2 está ligado

0 = Temporizador2 está desligado

pouco 1-0 T2CKPS1:T2CKPS0: Timer2 Clock Prescale Select bits

00 = Prescaler é 1
01 = Prescaler é 4
1x = Prescaler é 16

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

ÿ 2003 Microchip Technology Inc. DS39582B-página 61


Machine Translated by Google

PIC16F87XA
7.1 Temporizador2 Pré-escalonador e Pós-escalonador 7.2 Saída do TMR2
Os contadores do pré-escalador e pós-escalador são apagados A saída do TMR2 (antes do postscaler) é alimentada ao
quando qualquer um dos seguintes ocorrer: módulo SSP, que opcionalmente o utiliza para gerar o
relógio de turno.
• uma gravação no registro TMR2

• uma gravação no registrador T2CON

• qualquer reinicialização de dispositivo (POR, MCLR Reset, WDT


Redefinir ou BOR)

TMR2 não é apagado quando T2CON é escrito.

TABELA 7-1: REGISTROS ASSOCIADOS A TIMER2 COMO TEMPORIZADOR/CONTADOR


Valor ativado
Valor em:
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

0Bh, 8Bh, INTCON GIE PEIE TMR0IE NÃO RBIE TMR0IF INTF RBIF 0000 000x 0000 000u
10Bh, 18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000

8 canais TORTA1 PSPIE(1) ADIE RCIE ESSA SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000

11h Registro do Módulo TMR2 Timer2 0000 0000 0000 0000

12h T2CON — TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 -000 0000

92h PR2 Registro do Período do Timer2 1111 1111 1111 1111

Legenda: x = desconhecido, u = inalterado, - = não implementado, lido como '0'. As células sombreadas não são usadas pelo módulo Timer2.
Nota 1: Os bits PSPIE e PSPIF são reservados em dispositivos de 28 pinos; sempre mantenha esses bits claros.

DS39582B-página 62 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
8.0 MÓDULOS DE CAPTURA/COMPARAÇÃO/PWM Módulo CCP2:

O Registro 2 de Captura/Comparação/PWM (CCPR2) é composto por


dois registros de 8 bits: CCPR2L (byte baixo) e
Cada módulo Capture/Compare/PWM (CCP) contém CCPR2H (byte alto). O registrador CCP2CON controla
um registrador de 16 bits que pode operar como: o funcionamento do PCC2. O acionador de evento especial é
• Registro de captura de 16 bits gerado por uma correspondência de comparação e redefinirá o Timer1

• Registro de comparação de 16 bits e iniciar uma conversão A/D (se o módulo A/D estiver
ativado).
• Registro do Ciclo de Trabalho PWM Mestre/Escravo
Informações adicionais sobre os módulos CCP estão disponíveis em
Ambos os módulos CCP1 e CCP2 são idênticos em
a referência da família de MCU de médio alcance PICmicro®
operação, com exceção da operação do
Manual (DS33023) e na nota de aplicação AN594,
gatilho de evento especial. A Tabela 8-1 e a Tabela 8-2 mostram o
“Usando o(s) Módulo(s) CCP” (DS00594).
recursos e interações do(s) módulo(s) CCP. Dentro
nas seções a seguir, a operação de um módulo CCP
TABELA 8-1: MODO CCP - TEMPORIZADOR
é descrito em relação ao CCP1. A CCP2 opera o
igual a CCP1, exceto onde indicado. RECURSOS NECESSÁRIOS
Módulo CCP1: Modo PCC Recurso de temporizador

Capture/Compare/PWM Register 1 (CCPR1) é composto por dois Capturar Temporizador1

registradores de 8 bits: CCPR1L (low byte) e Comparar Temporizador1

CCPR1H (byte alto). O registrador CCP1CON controla PWM Temporizador2

o funcionamento do PCC1. O acionador de evento especial é


gerado por uma correspondência de comparação e redefinirá o Timer1.

TABELA 8-2: INTERAÇÃO DE DOIS MÓDULOS CCP

Modo CCPx Modo CCPy Interação

Capturar Capturar a mesma base de tempo TMR1

Capturar Comparar A comparação deve ser configurada para o acionador de evento especial que limpa o TMR1

Compare Compare A(s) comparação(ões) deve(m) ser configurada(s) para o acionador de evento especial que limpa o TMR1
PWM PWM Os PWMs terão a mesma frequência e taxa de atualização (interrupção TMR2)
PWM Capturar Nenhum

Comparar PWM Nenhum

ÿ 2003 Microchip Technology Inc. DS39582B-página 63


Machine Translated by Google

PIC16F87XA
REGISTRO 8-1: CCP1CON REGISTRO/CCP2CON REGISTER (ENDEREÇO 17h/1Dh)
U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
— — CCPxX CCPxY CCPxM3 CCPxM2 CCPxM1 CCPxM0

pedaço 7 bit 0

bocado 7-6 Não implementado: Leia como '0'


bocado 5-4 CCPxX:CCPxY: PWM bits menos significativos

Modo de captura:
Não usado.

Modo de comparação:
Não usado.

Modo PWM:
Esses bits são os dois LSbs do ciclo de trabalho PWM. Os oito MSbs são encontrados no CCPRxL.
pouco 3-0 CCPxM3:CCPxM0: bits de seleção de modo CCPx

0000 = Capturar/Comparar/PWM desabilitado (reinicia o módulo CCPx)


0100 = Modo de captura, cada borda de queda
0101 = Modo de captura, cada borda de subida
0110 = Modo de captura, a cada 4 borda de subida
0111 = Modo de captura, a cada 16 bordas de subida
1000 = Modo de comparação, define a saída na correspondência (o bit CCPxIF está definido)
1001 = Modo de comparação, saída limpa na correspondência (bit CCPxIF está definido)
1010 = Modo de comparação, gera interrupção de software na correspondência (bit CCPxIF é definido, pino CCPx é
não afetado)
1011 = Modo de comparação, acionar evento especial (bit CCPxIF está definido, pino CCPx não é afetado); PCC1
reinicia TMR1; O CCP2 reinicializa o TMR1 e inicia uma conversão A/D (se o módulo A/D estiver
ativado)
11xx = modo PWM

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

DS39582B-página 64 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
8.1 Modo de Captura 8.1.2 SELEÇÃO DO MODO TIMER1

No modo Capture, CCPR1H:CCPR1L captura o valor de 16 bits O Timer1 deve estar em execução no modo Timer ou no modo
do registrador TMR1 quando ocorre um evento no pino RC2/ Synchro nized Counter, para que o módulo CCP use o recurso
CCP1. Um evento é definido como um dos seguintes: de captura. No modo Contador Assíncrono, a operação de
captura pode não funcionar.

• Cada borda de descida 8.1.3 INTERRUPÇÃO DO SOFTWARE


• Cada borda de subida
Quando o modo de captura é alterado, uma interrupção de
• Cada 4ª borda de subida captura falsa pode ser gerada. O usuário deve manter o bit
• Cada 16ª borda de subida CCP1IE (PIE1<2>) limpo para evitar falsas interrupções e deve
O tipo de evento é configurado pelos bits de controle, limpar o bit sinalizador, CCP1IF, após qualquer mudança no
CCP1M3:CCP1M0 (CCPxCON<3:0>). Quando uma captura é modo de operação.
feita, o bit de flag de solicitação de interrupção, CCP1IF
8.1.4 PRÉ-CALCADOR CCP
(PIR1<2>), é definido. O sinalizador de interrupção deve ser
apagado no software. Se ocorrer outra captura antes que o valor Existem quatro configurações de prescaler, especificadas pelos
no registro CCPR1 seja lido, o valor capturado antigo é bits CCP1M3:CCP1M0. Sempre que o módulo CCP é desligado
sobrescrito pelo novo valor. ou o módulo CCP não está no modo Capture, o contador do
prescaler é apagado. Qualquer Reinicialização limpará o
8.1.1 CONFIGURAÇÃO DO PIN CCP contador do prescaler.
No modo de captura, o pino RC2/CCP1 deve ser configurado Alternar de um prescaler de captura para outro pode gerar uma
como uma entrada definindo o bit TRISC<2>. interrupção. Além disso, o contador do prescaler não será
apagado, portanto, a primeira captura pode ser de um prescaler
Nota: Se o pino RC2/CCP1 estiver configurado como saída,
diferente de zero. O Exemplo 8-1 mostra o método recomendado
uma gravação na porta pode causar uma condição
para alternar entre prescalers de captura. Este exemplo também
de captura.
limpa o contador do prescaler e não irá gerar a interrupção
“falsa”.
FIGURA 8-1: MODO DE CAPTURA
BLOCO DE OPERAÇÃO EXEMPLO 8-1: MUDANÇA ENTRE
DIAGRAMA CAPTURA DE PRÉ-ESCALADORES
CLRF CCP1CON ; Desligue o módulo CCP
Definir bit de sinalização CCP1IF
(PIR1<2>) MOVLW NEW_CAPT_PS ; Carregue o W reg com ; o novo pré-
Prescaler
escalador; mover valor e CCP ON
÷ 1, 4, 16
pino RC2/
CCPR1H CCPR1L MOVWF CCP1CON ; Carregue o CCP1CON com isso; valor
CCP1

e Capturar
Permitir
Detecção de borda

TMR1H TMR1L
CCP1CON<3:0>
Perguntas

ÿ 2003 Microchip Technology Inc. DS39582B-página 65


Machine Translated by Google

PIC16F87XA
8.2 Modo Comparar 8.2.2 SELEÇÃO DO MODO TIMER1

No modo Comparar, o valor do registro CCPR1 de 16 bits é O Timer1 deve estar em execução no modo Timer ou no modo
constantemente comparado com o valor do par de registros TMR1. Synchronized Counter, se o módulo CCP estiver usando o recurso
Quando ocorre uma correspondência, o pino RC2/CCP1 é: de comparação. No modo Contador Assíncrono, a operação de
comparação pode não funcionar.
• Dirigido alto •
Dirigido baixo 8.2.3 MODO DE INTERRUPÇÃO DO SOFTWARE
• Permanece inalterado Quando o modo Generate Software Interrupt é escolhido, o pino
A ação no pino é baseada no valor dos bits de controle, CCP1 não é afetado. O bit CCPIF é setado, causando uma
CCP1M3:CCP1M0 (CCP1CON<3:0>). Ao mesmo tempo, o bit de interrupção CCP (se habilitada).
flag de interrupção CCP1IF é definido.
8.2.4 GATILHO DE EVENTO ESPECIAL
FIGURA 8-2: MODO COMPARAR Neste modo, é gerado um trigger de hardware interno que pode
BLOCO DE OPERAÇÃO ser usado para iniciar uma ação.
DIAGRAMA A saída de disparo de evento especial do CCP1 reinicializa o par
de registradores TMR1. Isso permite que o registrador CCPR1 seja
O disparo de evento especial
irá: resetar o Timer1, mas não definir o bit de sinalização de interrupção TMR1IF efetivamente um registrador de período programável de 16 bits
(PIR1<0>) e definir o bit GO/DONE (ADCON0<2>). para o Timer1.

Acionador de evento especial A saída de disparo de evento especial do CCP2 reinicializa o par
de registradores TMR1 e inicia uma conversão A/D (se o módulo A/
Definir bit de sinalização CCP1IF
D estiver habilitado).
(PIR1<2>)
pino RC2/ CCPR1H CCPR1L Observação: O disparo de evento especial dos módulos CCP1
CCP1
QS
e CCP2 não definirá o bit de sinalização de
Resultado
Lógica Combine
Comparador interrupção TMR1IF (PIR1<0>).
R

TRISC<2> TMR1H TMR1L


Ativar saída CCP1CON<3:0>
Seleção de modo

8.2.1 CONFIGURAÇÃO DO PIN CCP

O usuário deve configurar o pino RC2/CCP1 como saída limpando


o bit TRISC<2>.

Nota: Apagar o registro CCP1CON forçará a trava de saída de


comparação RC2/CCP1 ao nível baixo padrão. Este
não é o
Trava de dados de E/S PORTC.

DS39582B-página 66 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
8.3 Modo PWM (PWM) 8.3.1 PERÍODO PWM

No modo Pulse Width Modulation, o pino CCPx produz uma saída O período PWM é especificado escrevendo no registrador PR2. O

PWM de resolução de até 10 bits. Como o pino CCP1 é multiplexado período PWM pode ser calculado usando a seguinte fórmula:

com a trava de dados PORTC, o bit TRISC<2> deve ser limpo para
tornar o pino CCP1 uma saída. Período PWM = [(PR2) + 1] • 4 • TOSC •
(Valor de pré-escala TMR2)

Nota: Apagar o registro CCP1CON forçará a trava de saída CCP1 A frequência PWM é definida como 1/[período PWM].
PWM para o nível baixo padrão. Esta não é a trava de Quando TMR2 é igual a PR2, os três eventos a seguir ocorrem no
dados de E/S PORTC.
próximo ciclo de incremento:
• TMR2 é limpo
A Figura 8-3 mostra um diagrama de blocos simplificado do módulo
• O pino CCP1 está definido (exceção: se o ciclo de trabalho
CCP no modo PWM.
PWM = 0%, o pino CCP1 não será definido) • O ciclo de
Para obter um procedimento passo a passo sobre como configurar o trabalho PWM é travado de CCPR1L em
módulo CCP para operação PWM, consulte a Seção 8.3.3 CCPR1H
“Configuração para operação PWM”.
Nota: O pós-escalador Timer2 (consulte a Seção 7.1 “Prescaler
e Postscaler Timer2”) não é usado na determinação
FIGURA 8-3: BLOCO PWM SIMPLIFICADO
da frequência PWM. O postscaler pode ser usado
DIAGRAMA
para ter uma taxa de atualização do servo em uma
CCP1CON<5:4> frequência diferente da saída PWM.
Registros de Ciclo de Trabalho

CCPR1L

8.3.2 CICLO DE SERVIÇO PWM

O ciclo de trabalho PWM é especificado escrevendo no registrador


CCPR1L e nos bits CCP1CON<5:4>. Resolução de até 10 bits está
CCPR1H (Escravo)
disponível. O CCPR1L contém os oito MSbs e o CCP1CON<5:4>
RC2/CCP1
contém os dois LSbs. Este valor de 10 bits é representado por
Comparador RQ
CCPR1L:CCP1CON<5:4>. A seguinte equação é usada para calcular
o ciclo de trabalho PWM no tempo:
TMR2 (Nota 1)
S
Ciclo de trabalho PWM =(CCPR1L:CCP1CON<5:4>) •
TRISC<2> TOSC • (Valor de Pré-escala TMR2)
Comparador
Limpar CCPR1L e CCP1CON<5:4> podem ser gravados a qualquer momento,
temporizador,
pino CCP1 e trava DC mas o valor do ciclo de trabalho não é travado em CCPR1H até que
PR2
ocorra uma correspondência entre PR2 e TMR2 (ou seja, o período
está completo). No modo PWM, CCPR1H é um registrador somente
Nota 1: O temporizador de 8 bits é concatenado com o relógio Q interno de
leitura.
2 bits, ou 2 bits do prescaler, para criar uma base de tempo de
10 bits.
O registrador CCPR1H e um latch interno de 2 bits são usados para
buffer duplo do ciclo de trabalho PWM. Esse buffer duplo é essencial
Uma saída PWM (Figura 8-4) tem uma base de tempo (período) e um
para uma operação PWM sem falhas.
tempo em que a saída permanece alta (ciclo de trabalho). A frequência
do PWM é o inverso do período (1/período).
Quando o CCPR1H e o latch de 2 bits correspondem ao TMR2,
concatenado com um relógio Q interno de 2 bits ou 2 bits do pré-

FIGURA 8-4: SAÍDA PWM escalador TMR2, o pino CCP1 é limpo.

A resolução máxima de PWM (bits) para uma determinada frequência


Período
de PWM é dada pela seguinte fórmula.

EQUAÇÃO 8-1:

Ciclo de trabalho ESCURO )


Resolução = log(FPWM bits
TMR2 = PR2
log(2)

TMR2 = Ciclo de Trabalho

Nota: Se o valor do ciclo de trabalho PWM for maior que o período


TMR2 = PR2
PWM, o pino CCP1 não será apagado.

ÿ 2003 Microchip Technology Inc. DS39582B-página 67


Machine Translated by Google

PIC16F87XA
8.3.3 CONFIGURAÇÃO PARA OPERAÇÃO PWM

As etapas a seguir devem ser seguidas ao configurar


o módulo CCP para operação PWM:

1. Defina o período PWM escrevendo no registro PR2.


2. Defina o ciclo de trabalho PWM gravando no
Registro CCPR1L e bits CCP1CON<5:4>.
3. Torne o pino CCP1 uma saída limpando o
TRISC<2> bits.

4. Defina o valor de pré-escala TMR2 e ative o Timer2


escrevendo para T2CON.
5. Configure o módulo CCP1 para operação PWM.

TABELA 8-3: EXEMPLO DE FREQUÊNCIAS E RESOLUÇÕES PWM A 20 MHz

Frequência PWM 1,22 kHz 4,88 kHz 19,53 kHz 78,12 kHz 156,3 kHz 208,3 kHz

Pré-escalador do temporizador (1, 4, 16) 16 4 1 1 1 1


Valor PR2 0xFFh 0xFFh 0xFFh 0x3Fh 0x1Fh 0x17h

Resolução máxima (bits) 10 10 10 8 7 5,5

TABELA 8-4: REGISTROS ASSOCIADOS À CAPTURA, COMPARAÇÃO E TEMPORIZADOR1

Valor ativado
Valor em:
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

0Bh,8Bh, INTCON GIE PEIE TMR0IE NÃO RBIE TMR0IF INTF RBIF 0000 000x 0000 000u
10Bh, 18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000

0Dh PIR2 — — — — — — — CCP2IF ---- ---0 ---- ---0

8 canais TORTA1 PSPIE(1) ADIE RCIE ESSA SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000

8º PIE2 — — — — — — — CCP2IE ---- ---0 ---- ---0

87h Registro de Direção de Dados TRISC PORTC 1111 1111 1111 1111

0Eh Registro de retenção TMR1L para o byte menos significativo do registro TMR1 de 16 bits xxxx xxxx uuuu uuuu

0 Fh Registro de retenção TMR1H para o byte mais significativo do registro TMR1 de 16 bits xxxx xxxx uuuu uuuu

10h T1CON — — T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON --00 0000 --uuuuuu

15h CCPR1L Captura/Comparação/Registro PWM 1 (LSB) xxxx xxxx uuuu uuuu

16h CCPR1H Capture/Compare/PWM Register 1 (MSB) xxxx xxxx uuuu uuuu

17h CCP1CON — — CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 --00 0000 --00 0000

1 Sra CCPR2L Capture/Compare/PWM Register 2 (LSB) xxxx xxxx uuuu uuuu

1 canal CCPR2H Capture/Compare/PWM Register 2 (MSB) xxxx xxxx uuuu uuuu

1º CCP2CON — — CCP2X CCP2Y CCP2M3 CCP2M2 CCP2M1 CCP2M0 --00 0000 --00 0000

Legenda: x = desconhecido, u = inalterado, - = não implementado, lido como '0'. As células sombreadas não são usadas pelo Capture e Timer1.
Nota 1: O PSP não é implementado em dispositivos de 28 pinos; sempre mantenha esses bits claros.

DS39582B-página 68 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
TABELA 8-5: REGISTROS ASSOCIADOS A PWM E TIMER2
Valor em
Valor em:
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

0Bh,8Bh, INTCON GIE PEIE TMR0IE NÃO RBIE TMR0IF INTF RBIF 0000 000x 0000 000u
10Bh, 18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000

0Dh PIR2 — — — — — — — CCP2IF ---- ---0 ---- ---0

8 canais TORTA1 PSPIE(1) ADIE RCIE ESSA SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000

8º PIE2 — — — — — — — CCP2IE ---- ---0 ---- ---0

87h Registro de Direção de Dados TRISC PORTC 1111 1111 1111 1111

11h TMR2 Registro do Módulo Timer2 0000 0000 0000 0000

92h PR2 Registro de Período do Módulo Timer2 1111 1111 1111 1111

12h T2CON — TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 -000 0000

15h CCPR1L Captura/Comparação/Registro PWM 1 (LSB) xxxx xxxx uuuu uuuu

16h CCPR1H Capture/Compare/PWM Register 1 (MSB) xxxx xxxx uuuu uuuu

17h CCP1CON — — CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 --00 0000 --00 0000

1 Sra CCPR2L Capture/Compare/PWM Register 2 (LSB) xxxx xxxx uuuu uuuu

1 canal CCPR2H Capture/Compare/PWM Register 2 (MSB) xxxx xxxx uuuu uuuu

1º CCP2CON — — CCP2X CCP2Y CCP2M3 CCP2M2 CCP2M1 CCP2M0 --00 0000 --00 0000

Legenda: x = desconhecido, u = inalterado, - = não implementado, lido como '0'. As células sombreadas não são usadas por PWM e Timer2.
Nota 1: Bits PSPIE e PSPIF são reservados em dispositivos de 28 pinos; sempre mantenha esses bits claros.

ÿ 2003 Microchip Technology Inc. DS39582B-página 69


Machine Translated by Google

PIC16F87XA
NOTAS:

DS39582B-página 70 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
9.0 MESTRE SÍNCRONO FIGURA 9-1: DIAGRAMA DE BLOCOS MSSP
(MODO SPI)
PORTA SERIAL (MSSP)
MÓDULO interno
Barramento de dados

Ler Escreva
9.1 Visão geral do módulo SSP mestre
(MSSP)
SSPBUF direito
O módulo Master Synchronous Serial Port (MSSP) é uma interface
serial, útil para comunicação com outros dispositivos periféricos
ou microcontroladores. Esses dispositivos periféricos podem ser
EEPROMs seriais, registradores de deslocamento, drivers de Registro SSPSR
exibição, conversores A/D, etc. O módulo MSSP pode operar em RC4/SDI/SDA bit0 Mudança

um dos dois modos: Relógio

• Interface Periférica Serial (SPI) • Circuito RC5/SDO OE periférico


Interintegrado (I2C)
- Modo mestre completo
Controle SS
- Modo escravo (com chamada de endereço geral) Permitir
A interface I2C suporta os seguintes modos em hardware: RA5/AN4/
SS/C2OUT
Borda
Selecionar
• Modo mestre
• Modo Multi-Mestre 2
• Modo escravo Seleção do relógio

SSPM3:SSPM0
9.2 Registros de Controle Ensino Médio: CKE
4
2 (Saída TMR2 2 )
O módulo MSSP possui três registradores associados.
Borda
Estes incluem um registrador de status (SSPSTAT) e dois Selecionar
Prescaler TOSC 4,
registradores de controle (SSPCON e SSPCON2). O uso desses RC3/SCK/SCL
16, 64
registradores e seus bits de configuração individuais diferem
significativamente, dependendo se o módulo MSSP é operado no Dados para TX/RX em SSPSR
bit TRIS
modo SPI ou I2C .

Detalhes adicionais são fornecidos nas seções individuais.

Nota: Quando o SPI está no modo Slave com o controle do


9.3 Modo SPI pino SS habilitado (SSPCON<3:0> = 0100), o
estado do pino SS pode afetar o estado lido de
O modo SPI permite que 8 bits de dados sejam transmitidos de volta do bit TRISC<5>. O sinal Peripheral OE do
forma síncrona e recebidos simultaneamente. Todos os quatro módulo SSP em PORTC controla o estado que é
modos de SPI são suportados. Para realizar a comunicação, lido de volta do bit TRISC<5> (consulte a Seção
normalmente são usados três pinos: 4.3 “PORTC e o Registro TRISC” para obter
• Saída de Dados Serial (SDO) – RC5/SDO • informações sobre PORTC). Se instruções Read-

Entrada de Dados Serial (SDI) – RC4/SDI/SDA Modify-Write, como BSF, forem executadas no
registrador TRISC enquanto o pino SS estiver alto,
• Relógio Serial (SCK) – RC3/SCK/SCL
isso fará com que o bit TRISC<5> seja definido,
Além disso, um quarto pino pode ser usado no modo de operação desabilitando assim a saída SDO.
Slave:

• Seleção de Escravo (SS) - RA5/AN4/SS/C2OUT

A Figura 9-1 mostra o diagrama de blocos do módulo MSSP ao


operar no modo SPI.

ÿ 2003 Microchip Technology Inc. DS39582B-página 71


Machine Translated by Google

PIC16F87XA
9.3.1 REGISTRO SSPSR é o registrador de deslocamento usado para deslocamento de dados em ou
Fora. SSPBUF é o registro de buffer para o qual os bytes de dados
O módulo MSSP possui quatro registradores para o modo SPI
são escritos ou lidos.
Operação. Estes são:
Nas operações de recebimento, SSPSR e SSPBUF juntos
• Registro de Controle MSSP (SSPCON)
criar um receptor de buffer duplo. Quando SSPSR
• Registro de Status MSSP (SSPSTAT)
recebe um byte completo, é transferido para SSPBUF
• Registro de buffer de recepção/transmissão serial e a interrupção SSPIF é definida.
(SSPBUF)
Durante a transmissão, o SSPBUF não é armazenado em buffer duplo.
• MSSP Shift Register (SSPSR) - Não acessível diretamente Uma gravação no SSPBUF gravará tanto no SSPBUF
e SSPSR.
SSPCON e SSPSTAT são o controle e status

registradores em operação no modo SPI. O registro SSPCON é legível e


gravável. Os seis bits inferiores do

SSPSTAT são somente leitura. Os dois bits superiores do


SSPSTAT são leitura/gravação.

REGISTRO 9-1: SSPSTAT: REGISTRO DE STATUS MSSP (MODO SPI) (ENDEREÇO 94h)
R/W-0 R/W-0 R-0 R-0 R-0 R-0 R-0 R-0

COLÉGIO CKE D/A P S R/W UA BF

pedaço 7 bit 0

pedaço 7 SMP: bit de amostra


Modo SPI Mestre:

1 = Dados de entrada amostrados no final do tempo de saída de


dados 0 = Dados de entrada amostrados no meio do tempo de saída de dados
Modo escravo SPI:
O SMP deve ser apagado quando o SPI é usado no modo Escravo.

bocado 6 CKE: bit de seleção do relógio SPI


1 = A transmissão ocorre na transição do estado de relógio ativo para ocioso
0 = A transmissão ocorre na transição do estado de relógio inativo para ativo

Nota: A polaridade do estado do relógio é definida pelo bit CKP (SSPCON1<4>).


pedaço 5 D/A: Bit de dados/endereço

Usado somente no modo I2C .


bocado 4 P: Bit de

parada Usado somente no modo I2C . Este bit é apagado quando o módulo MSSP é desabilitado, SSPEN é apagado.
parte 3 S: bit inicial

Usado apenas no modo I2C .


parte 2 R/W: Ler/Gravar informações de bit Usado

somente no modo I2C .


pedaço 1 UA: bit de endereço de atualização

Usado apenas no modo I2C .


bit 0 BF: Bit de status completo do buffer (somente no modo de recepção)

1 = Recebimento completo, SSPBUF está cheio 0 =


Recebimento não concluído, SSPBUF está vazio

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

DS39582B-página 72 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
REGISTRO 9-2: SSPCON1: REGISTRO DE CONTROLE MSSP 1 (MODO SPI) (ENDEREÇO 14h)
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0

pedaço 7 bit 0

pedaço 7 WCOL: bit de detecção de colisão de gravação (somente no modo de transmissão)

1 = O registrador SSPBUF é escrito enquanto ainda está transmitindo a palavra anterior. (Devemos ser
apagado no software.)
0 = Sem colisão

bocado 6 SSPOV: bit indicador de estouro de recebimento


Modo escravo SPI:
1 = Um novo byte é recebido enquanto o registrador SSPBUF ainda contém os dados anteriores. Em caso
de estouro, os dados no SSPSR são perdidos. O overflow só pode ocorrer no modo Slave. O usuário
deve ler o SSPBUF, mesmo que apenas transmitindo dados, para evitar o estouro de configuração. (Devemos ser
apagado no software.)
0 = Sem estouro

Nota: No modo Master, o bit de overflow não é definido, pois cada nova recepção (e
transmissão) é iniciada escrevendo para o registrador SSPBUF.

pedaço 5 SSPEN: bit de habilitação da porta serial síncrona


1 = Habilita a porta serial e configura SCK, SDO, SDI e SS como pinos da porta serial
0 = Desativa a porta serial e configura esses pinos como pinos de porta de E/S

Nota: Quando habilitados, estes pinos devem estar devidamente configurados como entrada ou saída.

bocado 4 CKP: bit de seleção de polaridade do relógio

1 = O estado ocioso para o relógio é um nível alto


0 = O estado ocioso para o relógio é um nível baixo

pouco 3-0 SSPM3:SSPM0: Bits de seleção do modo de porta serial síncrona


0101 = modo SPI Slave, clock = pino SCK. Controle de pino SS desabilitado. SS pode ser usado como pino de E/S.
0100 = modo SPI Slave, clock = pino SCK. Controle de pino SS habilitado.
0011 = modo SPI Master, clock = saída TMR2/2 0010 = modo SPI
Master, clock = FOSC/64 0001 = modo SPI Master, clock = FOSC/
16 0000 = modo SPI Master, clock = FOSC/4

Nota: As combinações de bits não especificamente listadas aqui são reservadas ou implementadas em
I modo 2C apenas.

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

ÿ 2003 Microchip Technology Inc. DS39582B-página 73


Machine Translated by Google

PIC16F87XA
9.3.2 OPERAÇÃO Registro SSPBUF durante a transmissão/recepção de dados
será ignorado e o bit de detecção de colisão de gravação, WCOL
Ao inicializar o SPI, várias opções precisam ser
(SSPCON<7>), será definido. O software do usuário deve limpar
Especificadas. Isso é feito programando o
o bit WCOL para que possa ser determinado se a(s) seguinte(s)
bits de controle (SSPCON<5:0> e SSPSTAT<7:6>).
gravação(ões) no registrador SSPBUF foi concluída
Esses bits de controle permitem que o seguinte seja especificado:
com sucesso.
• Modo Master (SCK é a saída do relógio)
Quando o software aplicativo espera receber
• Modo escravo (SCK é a entrada do relógio)
dados válidos, o SSPBUF deve ser lido antes do próximo
• Polaridade do Relógio (estado ocioso do SCK) byte de dados a ser transferido é gravado no SSPBUF. Amortecedor
• Fase de Amostra de Entrada de Dados (meio ou fim dos dados Bit completo, BF (SSPSTAT<0>), indica quando SSPBUF
tempo de saída) foi carregado com os dados recebidos (transmissão
• Clock Edge (dados de saída na borda de subida/descida de está completo). Quando o SSPBUF é lido, o bit BF é
SCK) limpo. Esses dados podem ser irrelevantes se o SPI for apenas um
transmissor. Geralmente, a interrupção MSSP é usada para
• Taxa de clock (somente modo Master)
determinar quando a transmissão/recepção foi concluída. O SSPBUF
• Modo Slave Select (somente modo Slave)
deve ser lido e/ou escrito. Se o
O MSSP consiste em um registrador de deslocamento de transmissão/recepção método de interrupção não será usado, então o software
(SSPSR) e um registrador de buffer (SSPBUF). O SSPSR polling pode ser feito para garantir que uma colisão de gravação não
desloca os dados para dentro e para fora do dispositivo, MSb primeiro. o não ocorre. O Exemplo 9-1 mostra o carregamento do
O SSPBUF contém os dados que foram gravados no SSPSR SSPBUF (SSPSR) para transmissão de dados.
até que os dados recebidos estejam prontos. Uma vez que os oito bits de
O SSPSR não é diretamente legível ou gravável e pode
dados foram recebidos, esse byte é movido para o
somente ser acessado pelo endereçamento do registro SSPBUF.
Cadastro SSPBUF. Então, o bit de detecção de buffer cheio, BF
Além disso, o registro de status MSSP (SSPSTAT)
(SSPSTAT<0>), e o bit sinalizador de interrupção, SSPIF, são indica as várias condições de status.
definir. Este buffer duplo dos dados recebidos
(SSPBUF) permite que o próximo byte inicie a recepção antes
lendo os dados que acabaram de ser recebidos. Qualquer escrita para o

EXEMPLO 9-1: CARREGANDO O REGISTRO SSPBUF (SSPSR)


LOOP BTFSS SSPSTAT, BF ;Os dados foram recebidos (transmissão completa)?
SUTIÃ LOOP

MOVF SSPBUF, W ;Não ;WREG reg = conteúdo do SSPBUF


MOVWF RXDATA ;Salvar na RAM do usuário, se os dados forem significativos
MOVF TXDATA, W ;W reg = conteúdo de TXDATA
MOVWF SSPBUF ;Novos dados para enviar

DS39582B-página 74 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
9.3.3 HABILITANDO E/S SPI 9.3.4 CONEXÃO TÍPICA
Para habilitar a porta serial, o bit SSP Enable, SSPEN A Figura 9-2 mostra uma conexão típica entre dois
(SSPCON<5>), deve ser definido. Para redefinir ou microcontroladores. O controlador mestre (Processador 1)
reconfigurar o modo SPI, limpe o bit SSPEN, reinicialize os inicia a transferência de dados enviando o sinal SCK.
registros SSPCON e, em seguida, defina o bit SSPEN. Isso Os dados são deslocados de ambos os registradores de
configura os pinos SDI, SDO, SCK e SS como pinos de deslocamento em sua borda de clock programada e
porta serial. Para que os pinos se comportem como a travados na borda oposta do clock. Ambos os processadores
função de porta serial, alguns devem ter seus bits de devem ser programados para a mesma Polaridade do
Relógio
direção de dados (no registrador TRIS) devidamente programados. Aquilo é: (CKP), então ambos os controladores enviariam e
• SDI é controlado automaticamente pelo módulo SPI • receberiam dados ao mesmo tempo. Se os dados são
significativos (ou dados fictícios) depende do software de
SDO deve ter o bit TRISC<5> limpo
aplicação. Isso leva a três cenários para transmissão de dados:
• SCK (modo mestre) deve ter TRISC<3> bit
limpo • Master envia dados – Slave envia dados fictícios •
Master envia dados – Slave envia dados
• SCK (modo escravo) deve ter TRISC<3> bit definido
• SS deve ter TRISC<4> bit definido • Mestre envia dados fictícios - Escravo envia dados

Qualquer função de porta serial que não seja desejada


pode ser substituída programando o registro de direção de
dados correspondente (TRIS) para o valor oposto.

FIGURA 9-2: CONEXÃO MESTRE/ESCRAVO SPI

Mestre SPI SSPM3:SSPM0 = 00xxb SPI Slave SSPM3:SSPM0 = 010xb

SDO SDI

Buffer de entrada serial Buffer de entrada serial


(SSPBUF) (SSPBUF)

SDI SDO
Registro de deslocamento Registro de deslocamento

(SSPSR) (SSPSR)

MSb LSb MSb LSb

Relógio de série
SCK SCK

PROCESSADOR 1 PROCESSADOR 2

ÿ 2003 Microchip Technology Inc. DS39582B-página 75


Machine Translated by Google

PIC16F87XA
9.3.5 MODO MESTRE Figura 9-3, Figura 9-5 e Figura 9-6, onde o MSB
é transmitido primeiro. No modo Master, a taxa de clock SPI
O mestre pode iniciar a transferência de dados a qualquer momento
porque controla o SCK. O mestre determina (taxa de bits) é programável pelo usuário para ser um dos
Segue:
quando o escravo (Processador 2, Figura 9-2) deve
transmissão de dados pelo protocolo de software. • FOSC/4 (ou TCY)

No modo Master, os dados são transmitidos/recebidos como • FOSC/16 (ou 4 • TCY)


assim que o registrador SSPBUF for escrito. Se o SPI for • FOSC/64 (ou 16 • TCY)
só vai receber, a saída SDO pode ser • Saída do temporizador2/2
desabilitado (programado como entrada). O SSPSR
Isso permite uma taxa de dados máxima (em 40 MHz) de
registrador continuará a mudar no sinal presente no
10,00Mbps.
Pino SDI na taxa de clock programada. Como cada byte é
recebido, ele será carregado no registro SSPBUF como A Figura 9-3 mostra as formas de onda para o modo Master.
se um byte normal recebido (interrompe e bits de status Quando o bit CKE é definido, os dados SDO são válidos antes
ajustado adequadamente). Isso pode ser útil no receptor há uma borda de clock no SCK. A mudança de entrada
aplicativos como um modo “Line Activity Monitor”. amostra é mostrada com base no estado do bit SMP. o
momento em que o SSPBUF é carregado com o
A polaridade do clock é selecionada pela programação apropriada dados são mostrados.
do bit CKP (SSPCON<4>). Isso então daria
formas de onda para comunicação SPI como mostrado em

FIGURA 9-3: FORMA DE ONDA DO MODO SPI (MODO MESTRE)

Escrever para
SSPBUF

SCK
(CKP = 0
CKE = 0)

SCK
(CKP = 1
CKE = 0)
4 Relógio
Modos
SCK
(CKP = 0
CKE = 1)

SCK
(CKP = 1
CKE = 1)

SDO
pedaço 7 bocado 6 pedaço 5 bocado 4 parte 3 parte 2 pedaço 1 bit 0
(CKE = 0)

SDO
pedaço 7 bocado 6 pedaço 5 bocado 4 parte 3 parte 2 pedaço 1 bit 0
(CKE = 1)

SDI

(ensino médio = 0)
pedaço 7 bit 0

Entrada
Amostra
(ensino médio = 0)

SDI
(ensino médio = 1)
pedaço 7 bit 0

Entrada
Amostra
(ensino médio = 1)

SSPIF

Próximo ciclo do quarto trimestre


SSPSR para
após Q2ÿ
SSPBUF

DS39582B-página 76 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
9.3.6 MODO ESCRAVO o pino SS fica alto, o pino SDO não é mais acionado mesmo se estiver
no meio de um byte transmitido e se torna uma saída flutuante.
No modo Slave, os dados são transmitidos e recebidos à medida que
Resistores pull-up/pull-down externos podem ser desejáveis,
os pulsos de clock externos aparecem no SCK. Quando o último bit é
dependendo da aplicação.
travado, o bit sinalizador de interrupção SSPIF é definido.

Enquanto estiver no modo Slave, o clock externo é fornecido pela fonte Nota 1: Quando o SPI estiver no modo Slave com o controle do

de clock externa no pino SCK. Este relógio externo deve atender aos pino SS habilitado (SSPCON<3:0> = 0100), o módulo

tempos mínimos de alta e baixa conforme especificado nas SPI será reinicializado se o pino SS estiver configurado
para VDD.
especificações elétricas.
2: Se o SPI for usado no Modo Escravo com CKE definido,
Enquanto estiver no modo Sleep, o escravo pode transmitir/receber
dados. Quando um byte é recebido, o dispositivo desperta do modo de então o controle do pino SS deve ser habilitado.

suspensão.
Quando o módulo SPI é reinicializado, o contador de bits é forçado a
9.3.7 SELEÇÃO DE ESCRAVO
'0'. Isso pode ser feito forçando o pino SS para um nível alto ou limpando
SINCRONIZAÇÃO o bit SSPEN.

O pino SS permite um modo escravo síncrono. O SPI deve estar no Para emular a comunicação de dois fios, o pino SDO pode ser
modo Slave com o controle do pino SS habilitado (SSPCON<3:0> = conectado ao pino SDI. Quando o SPI precisa operar como receptor, o
04h). O pino não deve ser colocado em nível baixo para que o pino SS pino SDO pode ser configurado como entrada. Isso desativa as
funcione como uma entrada. A trava de dados deve ser alta. Quando o transmissões do SDO.
pino SS está baixo, a transmissão e recepção são habilitadas e o pino O SDI sempre pode ser deixado como entrada (função SDI), pois não
SDO é acionado. Quando pode criar um conflito de barramento.

FIGURA 9-4: FORMA DE ONDA DE SINCRONIZAÇÃO DE ESCRAVO

SS

SCK
(CKP = 0
CKE = 0)

SCK
(CKP = 1
CKE = 0)

Escrever para

SSPBUF

SDO pedaço 7 bocado 6 pedaço 7 bit 0

SDI bit 0
(ensino médio = 0)
pedaço 7 pedaço 7

Entrada
Amostra
(ensino médio = 0)

SSPIF
Interromper
Bandeira
Próximo Q4 Ciclo
SSPSR para
após Q2ÿ
SSPBUF

ÿ 2003 Microchip Technology Inc. DS39582B-página 77


Machine Translated by Google

PIC16F87XA
FIGURA 9-5: FORMA DE ONDA DO MODO SPI (MODO ESCRAVO COM CKE = 0)

SS
Opcional

SCK
(CKP = 0
CKE = 0)

SCK
(CKP = 1
CKE = 0)

Escrever para
SSPBUF

SDO pedaço 7 bocado 6 pedaço 5 bocado 4 parte 3 parte 2 pedaço 1 bit 0

SDI

(ensino médio = 0)
pedaço 7 bit 0

Entrada
Amostra
(ensino médio = 0)

SSPIF
Interromper
Bandeira

Próximo ciclo do quarto trimestre


SSPSR para após Q2ÿ
SSPBUF

FIGURA 9-6: FORMA DE ONDA DO MODO SPI (MODO ESCRAVO COM CKE = 1)

SS
Não opcional

SCK
(CKP = 0
CKE = 1)

SCK
(CKP = 1
CKE = 1)

Escrever para
SSPBUF

SDO pedaço 7 bocado 6 pedaço 5 bocado 4 parte 3 parte 2 pedaço 1 bit 0

SDI
(ensino médio = 0)
pedaço 7 bit 0

Entrada
Amostra
(ensino médio = 0)

SSPIF
Interromper
Bandeira

Próximo ciclo do quarto trimestre

após Q2ÿ
SSPSR para
SSPBUF

DS39582B-página 78 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
9.3.8 OPERAÇÃO DE SONO 9.3.10 COMPATIBILIDADE DO MODO BUS

No modo Master, todos os relógios do módulo são interrompidos e o A Tabela 9-1 mostra a compatibilidade entre o
transmissão/recepção permanecerá nesse estado até que o modos SPI padrão e os estados do CKP e
dispositivo sai do modo de suspensão. Depois que o dispositivo retornar bits de controle CKE.
modo normal, o módulo continuará a transmitir/
receber dados. TABELA 9-1: MODOS DE BUS SPI
No modo Slave, o registrador SPI Transmit/Receive Shift Estado dos bits de controle
Modo SPI padrão
opera de forma assíncrona com o dispositivo. Isso permite que o
Terminologia CKP CKE
dispositivo a ser colocado em modo de suspensão e os dados a serem
deslocado para o registrador SPI Transmit/Receive Shift. 0, 0 0 1
Quando todos os 8 bits forem recebidos, a interrupção MSSP
0, 1 0 0
bit sinalizador será definido e, se ativado, acordará o dispositivo
do Sono. 1, 0 1 1

1, 1 1 0
9.3.9 EFEITOS DE UM RESET
Há também um bit SMP que controla quando os dados são
Um Reset desabilita o módulo MSSP e encerra o
amostrado.
transferência atual.

TABELA 9-2: REGISTROS ASSOCIADOS À OPERAÇÃO SPI

Valor ativado
Valor ativado
Nome Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

INTCON GIE/ assim/ TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 0000 000x 0000 000u
ENTENDI AMARELO

PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000
TORTA1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000

Registro de Direção de Dados TRISC PORTC 1111 1111 1111 1111

Buffer de recepção/registro de transmissão de porta serial síncrona SSPBUF xxxx xxxx uuuu uuuu
SSPCON WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 0000 0000

TRISA — Registo de Direcção de Dados PORTA --11 1111 --11 1111

SSPSTAT SMP CKE D/A P S R/W UA BF 0000 0000 0000 0000

Legenda: x = desconhecido, u = inalterado, - = não implementado, lido como '0'.


As células sombreadas não são usadas pelo MSSP no modo SPI.
Nota 1: Os bits PSPIF, PSPIE e PSPIP são reservados em dispositivos de 28 pinos; sempre mantenha esses bits claros.

ÿ 2003 Microchip Technology Inc. DS39582B-página 79


Machine Translated by Google

PIC16F87XA
9.4 Modo I2C 9.4.1 REGISTRO

O módulo MSSP no modo I2C implementa totalmente todos os O módulo MSSP possui seis registradores para operação I2C .
Estes são:
funções mestre e escravo (incluindo suporte de chamada geral) e
fornece interrupções nos bits de partida e parada em • Registro de Controle MSSP (SSPCON)
hardware para determinar um barramento livre (função multi- • Registro de Controle MSSP 2 (SSPCON2)
mestre). O módulo MSSP implementa o padrão
• Registro de Status MSSP (SSPSTAT)
especificações de modo, bem como 7 bits e 10 bits
• Registro de buffer de recepção/transmissão serial
endereçamento.
(SSPBUF)
Dois pinos são usados para transferência de dados:
• MSSP Shift Register (SSPSR) - Não acessível
• Relógio serial (SCL) – RC3/SCK/SCL • diretamente
Dados seriais (SDA) – RC4/SDI/SDA • Registro de Endereço MSSP (SSPADD)
O usuário deve configurar esses pinos como entradas ou saídas SSPCON, SSPCON2 e SSPSTAT são o controle
através dos bits TRISC<4:3>. e registradores de status na operação em modo I2C . o
Os registradores SSPCON e SSPCON2 são legíveis e
FIGURA 9-7: DIAGRAMA DE BLOCOS MSSP gravável. Os seis bits inferiores do SSPSTAT são

( MODO I2C ) somente leitura. Os dois bits superiores do SSPSTAT são


ler escrever.
interno
SSPSR é o registrador de deslocamento usado para deslocamento de dados em ou
Barramento de dados

Fora. SSPBUF é o registro de buffer para o qual os bytes de dados


Ler Escreva são escritos ou lidos.

O registrador SSPADD contém o endereço do dispositivo escravo


RC3/SCK/SCL SSPBUF direito quando o SSP está configurado no modo I2C Slave. Quando
o SSP está configurado no modo Master, quanto menor
Mudança
sete bits de SSPADD atuam como gerador de taxa de transmissão
Relógio
valor de recarga.
Registro SSPSR
Nas operações de recebimento, SSPSR e SSPBUF juntos
RC4/SDI/ MSb LSb
criar um receptor de buffer duplo. Quando SSPSR
SDA
recebe um byte completo, é transferido para SSPBUF
Detecção de correspondência Correspondência de endereço e a interrupção SSPIF é definida.

Durante a transmissão, o SSPBUF não é armazenado em buffer


duplo. Uma gravação no SSPBUF gravará tanto no SSPBUF
SSPADD reg
e SSPSR.

Iniciar e Definir, Redefinir


S, P bits
Detecção de bit de parada
(Reg. SSPSTAT)

DS39582B-página 80 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
REGISTRO 9-3: SSPSTAT: REGISTRO DE STATUS MSSP (MODO I2C ) (ENDEREÇO 94h)
R/W-0 R/W-0 R-0 R-0 R-0 R-0 R-0 R-0

COLÉGIO CKE D/A P S R/W UA BF

pedaço 7 bit 0

pedaço 7 SMP: bit de controle de taxa de giro

No modo Master ou Slave:

1 = Controle de taxa de giro desabilitado para o modo de velocidade padrão (100 kHz e 1 MHz)
0 = Controle de taxa de giro habilitado para modo de alta velocidade (400 kHz)
bocado 6 CKE: bit de seleção SMBus

No modo Master ou Slave:

1 = Habilitar entradas específicas SMBus


0 = Desativar entradas específicas do SMBus

pedaço 5 D/A: Bit de dados/endereço

No modo Mestre:
Reservado.

No modo Escravo:

1 = Indica que o último byte recebido ou transmitido foi de dados


0 = Indica que o último byte recebido ou transmitido foi endereço
bocado 4 P: Bit de parada

1 = Indica que um bit de parada foi detectado pela última vez


0 = O bit de parada não foi detectado por último
Nota: Este bit é apagado em Reset e quando SSPEN é apagado.

parte 3 S: bit inicial

1 = Indica que um bit inicial foi detectado pela última vez


0 = Start bit não foi detectado por último

Nota: Este bit é apagado em Reset e quando SSPEN é apagado.

parte 2 R/W: ler/gravar informações de bit ( somente modo I2C )


No modo Escravo:
1 = Ler
0 = Escrever

Nota: Este bit contém as informações do bit R/W após a última correspondência de endereço. Este pouco é
válido apenas da correspondência de endereço para o próximo bit de início, bit de parada ou bit não ACK.
No modo Master: 1 =

Transmissão em andamento 0 =
Transmissão não em andamento

Nota: ORing neste bit com SEN, RSEN, PEN, RCEN ou ACKEN indicará se o MSSP está
no modo Inativo.

pedaço 1 UA: Endereço de atualização (somente modo escravo de 10 bits)

1 = Indica que o usuário precisa atualizar o endereço no registro SSPADD


0 = Endereço não precisa ser atualizado

bit 0 BF: bit de status completo do buffer

No modo de transmissão:

1 = Recebimento completo, SSPBUF está cheio


0 = Recebimento não concluído, SSPBUF está vazio
No modo de recepção:

1 = Transmissão de dados em andamento (não inclui os bits ACK e Stop), SSPBUF está cheio
0 = Transmissão de dados completa (não inclui os bits ACK e Stop), SSPBUF está vazio

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

ÿ 2003 Microchip Technology Inc. DS39582B-página 81


Machine Translated by Google

PIC16F87XA
REGISTRO 9-4: SSPCON1: REGISTRO DE CONTROLE MSSP 1 (MODO I2C ) (ENDEREÇO 14h)
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0

pedaço 7 bit 0

pedaço 7 WCOL: Gravar bit de detecção de colisão


No modo de transmissão mestre:

1 = Uma gravação no registrador SSPBUF foi tentada enquanto as condições I2C não eram válidas para
uma transmissão a ser iniciada. (Deve ser apagado no software.)
0 = Sem colisão

No modo de transmissão escravo:

1 = O registrador SSPBUF é escrito enquanto ainda está transmitindo a palavra anterior. (Devemos ser
apagado no software.)
0 = Sem colisão

No modo de recepção (modos Master ou Slave):


Este é um pouco "não me importo".

bocado 6 SSPOV: bit indicador de estouro de recebimento

No modo de recepção:
1 = Um byte é recebido enquanto o registrador SSPBUF ainda contém o byte anterior. (Devemos ser
apagado no software.)
0 = Sem estouro

No modo de transmissão:
Este é um bit "não me importo" no modo de transmissão.

pedaço 5 SSPEN: bit de habilitação da porta serial síncrona

1 = Habilita a porta serial e configura os pinos SDA e SCL como os pinos da porta serial
0 = Desabilita a porta serial e configura esses pinos como pinos de porta de E/S

Nota: Quando habilitados, os pinos SDA e SCL devem estar devidamente configurados como entrada ou saída.

bocado 4 CKP: bit de controle de liberação SCK


No modo Escravo:
1 = Libera o clock 0 =

Mantém o clock baixo (alongamento do clock). (Usado para garantir o tempo de configuração dos dados.)
No modo Mestre:
Não utilizado neste modo.

pouco 3-0 SSPM3:SSPM0: Bits de seleção do modo de porta serial síncrona

1111 = Modo escravo I2C , endereço de 10 bits com interrupções de bit de partida e parada habilitadas
1110 = Modo escravo I2C , endereço de 7 bits com interrupções de bit de partida e parada habilitadas
1011 = Modo mestre controlado por firmware I2C (escravo inativo)
1000 = modo mestre I2C , relógio = FOSC/(4 * (SSPADD + 1))
0111 = Modo escravo I2C , endereço de 10 bits
0110 = Modo escravo I2C , endereço de 7 bits

Nota: As combinações de bits não especificamente listadas aqui são reservadas ou implementadas em
Modo SPI apenas.

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

DS39582B-página 82 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
REGISTRO 9-5: SSPCON2: REGISTRO DE CONTROLE MSSP 2 (MODO I2C ) (ENDEREÇO 91h)
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN ESTÁ

pedaço 7 bit 0

pedaço 7 GCEN: bit de habilitação de chamada geral (somente modo escravo)

1 = Habilita interrupção quando um endereço de chamada geral (0000h) é recebido no SSPSR


0 = Endereço de chamada geral desabilitado

bocado 6 ACKSTAT: Bit de reconhecimento de status (somente modo de transmissão mestre)

1 = A confirmação não foi recebida do escravo


0 = A confirmação foi recebida do escravo
pedaço 5 ACKDT: Bit de reconhecimento de dados (somente modo de recebimento mestre)

1 = Não Reconhecer
0 = Reconhecer

Nota: Valor que será transmitido quando o usuário iniciar uma sequência de Reconhecimento em
o fim de um recebimento.

bocado 4 ACKEN: Acknowledge Sequence Enable bit (somente modo de recepção mestre)

1 = Inicia a sequência de reconhecimento nos pinos SDA e SCL e transmite o bit de dados ACKDT.
Apagado automaticamente pelo hardware.
0 = Reconhecer sequência ociosa
parte 3 RCEN: bit de habilitação de recebimento (somente modo mestre)
1 = Habilita o modo de recepção para I2C
0 = Receber ocioso

parte 2 PEN: Bit de habilitação de condição de parada (somente modo mestre)

1 = Inicia a condição de parada nos pinos SDA e SCL. Apagado automaticamente pelo hardware.
0 = Condição de parada Inativo
pedaço 1 RSEN: Bit de habilitação de condição de partida repetida (somente modo mestre)

1 = Iniciar condição de partida repetida nos pinos SDA e SCL. Apagado automaticamente pelo hardware.
0 = Condição de partida repetida Inativo
bit 0 SEN: Start Condition Enabled/Stretch Enabled bit

No modo Mestre:

1 = Iniciar condição de partida nos pinos SDA e SCL. Apagado automaticamente pelo hardware.
0 = Condição de partida Inativo

No modo Escravo:

1 = O estiramento do relógio está habilitado tanto para transmissão escrava quanto para recepção do escravo (stretch habilitado)
0 = O alongamento do relógio está habilitado apenas para transmissão escrava (compatibilidade com PIC16F87X)

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

Nota: Para os bits ACKEN, RCEN, PEN, RSEN, SEN: Se o módulo I2C não estiver no modo Idle,
este bit não pode ser definido (sem spool) e o SSPBUF não pode ser escrito (ou grava
para o SSPBUF estão desabilitados).

ÿ 2003 Microchip Technology Inc. DS39582B-página 83


Machine Translated by Google

PIC16F87XA
9.4.2 OPERAÇÃO 9.4.3.1 Endereçamento
As funções do módulo MSSP são habilitadas definindo o bit de Depois que o módulo MSSP for habilitado, ele aguarda a
habilitação do MSSP, SSPEN (SSPCON<5>). ocorrência de uma condição de inicialização. Seguindo a
condição Start, os 8 bits são deslocados para o registrador
O registrador SSPCON permite o controle da operação I2C .
SSPSR. Todos os bits de entrada são amostrados com a borda
Quatro bits de seleção de modo (SSPCON<3:0>) permitem que
de subida da linha de clock (SCL). O valor do registro
um dos seguintes modos I2C seja selecionado: • Modo I2C
SSPSR<7:1> é comparado ao valor do registro SSPADD. O
Master, clock = OSC/4 (SSPADD + 1) • Modo I2C Slave endereço é comparado na borda descendente do pulso do
(endereço de 7 bits) • I2C Modo escravo (endereço de 10 bits) • oitavo clock (SCL). Se os endereços corresponderem e os bits
Modo escravo I2C (endereço de 7 bits) com Start e BF e SSPOV estiverem limpos, ocorrerão os seguintes eventos:
1. O valor do registro SSPSR é carregado no registro
Interrupções de bits de parada habilitadas SSPBUF.
• Modo I2C Slave (endereço de 10 bits) com Start e 2. O bit Buffer Full, BF, é definido.
Interrupções de bits de parada habilitadas
3. Um pulso ACK é gerado.
• Modo mestre controlado por firmware I2C , escravo é 4. O bit de sinalização de interrupção MSSP, SSPIF
Parado
(PIR1<3>), é definido (a interrupção é gerada se
A seleção de qualquer modo I2C , com o bit SSPEN definido, habilitada) na borda descendente do nono pulso SCL.
força os pinos SCL e SDA a serem de dreno aberto, desde que No modo de endereço de 10 bits, dois bytes de endereço
esses pinos sejam programados para entradas definindo os bits precisam ser recebidos pelo escravo. Os cinco bits mais
TRISC apropriados. Para garantir a operação adequada do significativos (MSbs) do primeiro byte de endereço especificam
módulo, resistores pull-up devem ser fornecidos externamente se este é um endereço de 10 bits. O bit R/W (SSPSTAT<2>)
aos pinos SCL e SDA. deve especificar uma escrita para que o dispositivo escravo
receba o segundo byte de endereço. Para um endereço de 10
9.4.3 MODO ESCRAVO
bits, o primeiro byte seria igual a '11110 A9 A8 0', onde 'A9' e
No modo Escravo, os pinos SCL e SDA devem ser configurados 'A8' são os dois MSbs do endereço. A sequência de eventos
como entradas (conjunto TRISC<4:3>). O módulo MSSP para o endereço de 10 bits é a seguinte, com os passos 7 a 9
substituirá o estado de entrada pelos dados de saída quando para o transmissor-escravo:
necessário (transmissor escravo).
1. Receba o primeiro byte (alto) do endereço (os bits SSPIF,
O hardware do modo I2C Slave sempre gerará uma interrupção BF e o bit UA (SSPSTAT<1>) são definidos).
em uma correspondência de endereço. Através dos bits de 2. Atualize o registro SSPADD com o segundo (baixo) byte
seleção de modo, o usuário também pode optar por interromper de endereço (limpa o bit UA e libera a linha SCL).
nos bits Start e Stop
Quando um endereço é correspondido, ou a transferência de 3. Leia o registro SSPBUF (limpa o bit BF) e limpe o bit de
dados após uma correspondência de endereço ser recebida, o sinalização SSPIF.
hardware automaticamente irá gerar o pulso Acknowledge (ACK) 4. Recebe o segundo (baixo) byte de endereço (os bits
e carregar o registrador SSPBUF com o valor recebido SSPIF, BF e UA são definidos).
atualmente no registrador SSPSR.
5. Atualize o registro SSPADD com o primeiro byte (alto) do
Qualquer combinação das seguintes condições fará com que o endereço. Se a correspondência liberar a linha SCL,
módulo MSSP não dê este pulso ACK: isso limpará o bit UA.

• O bit de buffer cheio, BF (SSPSTAT<0>), foi definido 6. Leia o registro SSPBUF (limpa o bit BF) e limpe o bit de
antes da transferência ser recebida. sinalização SSPIF.
• O bit de overflow, SSPOV (SSPCON<6>), foi definido antes 7. Receba a condição de Início Repetido.
da transferência ser recebida. 8. Receba o primeiro byte (alto) do endereço (os bits SSPIF
e BF são definidos).
Nesse caso, o valor do registrador SSPSR não é carregado no
SSPBUF, mas o bit SSPIF (PIR1<3>) é definido. O bit BF é 9. Leia o registro SSPBUF (limpa o bit BF) e limpe o bit de
apagado pela leitura do registrador SSPBUF, enquanto o bit sinalização SSPIF.
SSPOV é apagado por software.
A entrada do relógio SCL deve ter um mínimo alto e baixo para
uma operação adequada. Os tempos altos e baixos da
especificação I 2C, bem como o requisito do módulo MSSP,
são mostrados no parâmetro de tempo #100 e no parâmetro
#101.

DS39582B-página 84 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
9.4.3.2 Recepção 9.4.3.3 Transmissão
Quando o bit R/W do byte de endereço é apagado e ocorre uma Quando o bit R/W do byte de endereço de entrada é definido e
correspondência de endereço, o bit R/W do registrador SSPSTAT é ocorre uma correspondência de endereço, o bit R/W do registrador
apagado. O endereço recebido é carregado no registrador SSPBUF SSPSTAT é definido. O endereço recebido é carregado no registrador
e a linha SDA é mantida baixa (ACK). SSPBUF. O pulso ACK será enviado no nono bit e o pino RC3/SCK/
SCL é mantido baixo em relação a SEN (consulte a Seção 9.4.4
“Alongamento do Relógio” para mais detalhes). Ao esticar o
Quando a condição de estouro de byte de endereço existe, então o
relógio, o mestre não poderá afirmar outro pulso de relógio até que
pulso No Acknowledge (ACK) é dado. Uma condição de estouro é
o escravo termine de preparar os dados de transmissão. Os dados
definida quando o bit BF (SSPSTAT<0>) é definido ou o bit SSPOV
de transmissão devem ser carregados no registrador SSPBUF, que
(SSPCON<6>) é definido.
também carrega o registrador SSPSR. Então o pino RC3/SCK/SCL
Uma interrupção MSSP é gerada para cada byte de transferência deve ser habilitado configurando o bit CKP (SSPCON<4>).
de dados. O bit de sinalização SSPIF (PIR1<3>) deve ser apagado
no software. O registrador SSPSTAT é usado para determinar o Os oito bits de dados são deslocados na borda descendente da
status do byte. entrada SCL. Isso garante que o sinal SDA seja válido durante o
Se SEN estiver habilitado (SSPCON<0> = 1), RC3/SCK/SCL será tempo alto de SCL (Figura 9-9).
mantido baixo (estiramento de clock) após cada transferência de O pulso ACK do receptor mestre é travado na borda ascendente do
dados. O clock deve ser liberado configurando o bit CKP nono pulso de entrada SCL. Se a linha SDA estiver alta (não ACK),
(SSPCON<4>). Veja a Seção 9.4.4 “Alongamento do Relógio” então a transferência de dados está completa. Neste caso, quando
para mais detalhes.
o ACK é travado pelo escravo, a lógica do escravo é resetada
(reinicia o registro SSPSTAT) e o escravo monitora para outra
ocorrência do bit Start. Se a linha SDA estiver baixa (ACK), os
próximos dados de transmissão devem ser carregados no registrador
SSPBUF.
Novamente, o pino RC3/SCK/SCL deve ser habilitado configurando
o bit CKP.

Uma interrupção MSSP é gerada para cada byte de transferência


de dados. O bit SSPIF deve ser apagado no software e o registrador
SSPSTAT é usado para determinar o status do byte. O bit SSPIF é
definido na borda descendente do nono pulso de clock.

ÿ 2003 Microchip Technology Inc. DS39582B-página 85


ÿ 2003 Microchip Technology Inc. DS39582B-página 86
SSPOV
(SSPCON<6>) BF
(SSPSTAT<0>) (PIR1<3>) SSPIF SCL SDA
CKP
S
(CKP
não
éredefinido
para
'0'
quando
SEN
=
0)
A7
A6
A5
A4
A3
A2
A1
1
2
34
56
7
Endereço
de
recebimento
R/
W
=
0
8
91
234
5
67
89
123
45
7
89
ACK
D7
D6
D5
D4
D3
D2
D1
D0
SSPBUF
é
lido Limpo
no
software
Recebendo
dados
ACK
D7
D6
D5
D4
D3
Recebendo
dados
6 D2
D1
D0
ainda
cheio.
ACK
não
é
enviado. SSPOV
está
definido
porque
o
SSPBUF
é
ACK
transferir termina Mestre
de
ônibus
P
TEMPORIZAÇÃO DO MODO ESCRAVO I2C COM SEN = 0 (RECEPÇÃO, ENDEREÇO DE 7 BITS) FIGURA 9-8:
PIC16F87XA
Machine Translated by Google
DS39582B-página 87 ÿ 2003 Microchip Technology Inc.
CKP BF
(SSPSTAT<0>) SSPIF
(PIR1<3>) SCL SDA
S
Dados
na
amostra A7
1
2 A6
A5
A4
A3
A2
A1
3 Endereço
de
recebimento
4
5
6
7
R/
W
=
1
8
9 ACK
a enquanto
CPU
SSPIF SCL
mantido
baixo
responde
1 D7
CKP
é
definido
no
software SSPBUF
é
escrito
em
software
2 D6
D5
D4
D3
D2
D1
D0
Limpo
no
software
3
4 Transmitindo
dados
5
6
7
De
SSPIF
ISR
8
9 ACK
1 D7
CKP
é
definido
no
software
SSPBUF
é
escrito
em
software D6
D5
D4
D3
D2
D1
D0
2
Limpo
no
software
3
4
Transmitindo
dados
5
6
7
De
SSPIF
ISR
8
ACK
9
P
TEMPORIZAÇÃO DO MODO ESCRAVO I2C (TRANSMISSÃO, ENDEREÇO DE 7 BITS) FIGURA 9-9:
PIC16F87XA
Machine Translated by Google
ÿ 2003 Microchip Technology Inc. DS39582B-página 88
CKP
UA
(SSPSTAT<1>) SSPOV
(SSPCON<6>)
BF
(SSPSTAT<0>) (PIR1<3>) SSPIF SCL SDA
S
(CKP
não
éredefinido
para
'0'
quando
SEN
=
0) Receber
primeiro
byte
de
endereço
1234
567
89
12345
67
89
12345
7
89 1
Limpo
no
software
1
Atualizada o
SSPADD
precisa
ser UAé
definido
indicando
que
conteúdo
do
SSPSR SSPBUF
é
escrito
com
1
1
0
A9
A8
R/
W
=
0
ACK
atualização
do
SSPADD
ocorreuOrelógio
é
mantido
baixo
até
A7
A6
A5
A4
A3
A2
A1
A0
Receber
Segundo
Byte
de
Endereço
para
limpar
a
bandeira
BF
Leitura
fictícia
do
SSPBUF
com
baixo
byte
de
endereço
quando
o
SSPADD
é
atualizado
Limpo
por
hardware
Limpo
no
software
Atualizada O
SSPADD
precisa
ser UA
édefinido
indicando
que
atualização
do
SSPADD
ocorreuOrelógio
é
mantido
baixo
até
ACK
D7
D6
D5
D4
D3
byte
de
endereço SSPADD
é
atualizado
com
alta Apagado
por
hardware
quando
Receber
Byte
de
Dados
Limpo
no
software
6 D2
D1
D0
ACK
12345
789 D7
D6
D5
D4
D3
Receber
Byte
de
Dados
Limpo
no
software
6 D2
D1
D0
ACK
ainda
cheio.
ACK
não
é
enviado.
porque
o
SSPBUF
é SSPOV
está
definido
P
transferir termina Mestre
de
ônibus
TEMPORIZAÇÃO DO MODO ESCRAVO I2C COM SEN = 0 (RECEPÇÃO, ENDEREÇO DE 10 BITS) FIGURA 9-10:
PIC16F87XA
Machine Translated by Google
DS39582B-página 89 ÿ 2003 Microchip Technology Inc.
CKP
(SSPCON<4>)
UA
(SSPSTAT<1>) BF
(SSPSTAT<0>) (PIR1<3>) SSPIF SCL SDA
S
1234
56
789
12345
67
89 1 Receber
primeiro
byte
de
endereço
1
Atualizada o
SSPADD
precisa
ser UA
é
definido
indicando
que
conteúdo
do
SSPSRSSPBUF
é
escrito
com 1
10
A9
A8
R/
W
=
0
ACK
atualização
do
SSPADD
ocorreuO
relógio
é
mantido
baixo
até
para
limpar
a
bandeira
BF Leitura
fictícia
do
SSPBUF A7
A6
A5
A4
A3
A2
A1
A0
Receber
Segundo
Byte
de
Endereço
byte
de SSPADD
é
atualizado
com
baixaApagado
endereço por
hardware
quando Limpo
no
software
Atualizada O
SSPADD
precisa
ser UA
é
definido
indicando
que
atualização
do
SSPADD
ocorreuO
relógio
é
mantido
baixo
até
ACK
para
limpar
a
bandeira
BF Leitura
fictícia
do
SSPBUF
Sr
byte
de SSPADD
é
atualizado
com
alta Apagado
endereço por
hardware
quando
Limpo
no
software
12345
789 1 Receber
primeiro
byte
de
endereço
1
1
1
0
6 A9
sequência
de
terceiro
endereço
no
final
de A bandeira
BF
está
limpa
A8
R/
W=1
ACK
CKP
está
definido
como
'1' O relógio
é
mantido
baixo
até
CKP
é
automaticamente
limpo
no
hardware
mantendo
SCL
baixo
12345
789 D7
D6
D5
D4
D3
CKP
é
definido
no
software Redação
inicia
a do
SSPBUF
transmissão
Transmitindo
Byte
de
Dados
Limpo
no
software
6 D2
D1
D0
limpa
a
bandeira
BF transmissão
de
dadosConclusão
de
ACK
transferir termina Mestre
de
ônibus
P
TEMPORIZAÇÃO DO MODO ESCRAVO I2C (TRANSMISSÃO, ENDEREÇO DE 10 BITS) FIGURA 9-11:
PIC16F87XA
Machine Translated by Google
Machine Translated by Google

PIC16F87XA
9.4.4 ALONGAMENTO DO RELÓGIO 9.4.4.3 Alongamento de relógio para escravo de 7 bits
Modo de transmissão
Os modos Slave de 7 e 10 bits implementam o alongamento
automático do clock durante uma sequência de transmissão. O modo Slave Transmit de 7 bits implementa o alongamento do
O bit SEN (SSPCON2<0>) permite que o alongamento de clock clock limpando o bit CKP após a borda descendente do nono clock,
seja habilitado durante a recepção. A configuração de SEN fará se o bit BF estiver limpo. Isso ocorre independentemente do estado
do bit SEN.
com que o pino SCL seja mantido baixo no final de cada sequência
de recebimento de dados. O ISR do usuário deve definir o bit CKP antes que a transmissão
possa continuar. Ao manter a linha SCL baixa, o usuário tem tempo
9.4.4.1 Alongamento de relógio para escravo de 7 bits para atender o ISR e carregar o conteúdo do SSPBUF antes que
Modo de recepção (SEN = 1) o dispositivo mestre possa iniciar outra sequência de transmissão

No modo Slave Receive de 7 bits, na borda descendente do nono (consulte a Figura 9-9).
clock no final da sequência ACK, se o bit BF estiver definido, o bit Nota 1: Se o usuário carregar o conteúdo do SSPBUF,
CKP no registrador SSPCON é automaticamente limpo, forçando definindo o bit BF antes da borda descendente do
a saída SCL a ser mantida baixa . O bit CKP sendo apagado para nono clock, o bit CKP não será apagado e o
'0' irá declarar a linha SCL baixa. O bit CKP deve ser definido no alongamento do clock não ocorrerá.
ISR do usuário antes que a recepção possa continuar. Mantendo a
2: O bit CKP pode ser definido no software
linha SCL baixa, o usuário tem tempo para atender o ISR e ler o
conteúdo do SSPBUF antes que o dispositivo mestre possa iniciar independentemente do estado do bit BF.
outra sequência de recebimento.
9.4.4.4 Alongamento de relógio para escravo de 10 bits
Modo de transmissão
Isso evitará a ocorrência de estouros de buffer (consulte a Figura
9-13). No modo Slave Transmit de 10 bits, o alongamento do clock é
controlado durante as duas primeiras sequências de endereços
Nota 1: Se o usuário ler o conteúdo do SSPBUF antes da
pelo estado do bit UA, assim como no modo Slave Receive de 10
borda descendente do nono clock, apagando assim
bits. Os dois primeiros endereços são seguidos por uma terceira
o bit BF, o bit CKP não será apagado e o
sequência de endereços, que contém os bits de ordem superior do
alongamento do clock não ocorrerá.
endereço de 10 bits e o bit R/W definido como '1'. Depois que a
terceira sequência de endereço é executada, o bit UA não é
2: O bit CKP pode ser definido no software definido, o módulo agora está configurado no modo Transmit e o
independentemente do estado do bit BF. O usuário alongamento do relógio é controlado pelo sinalizador BF como no
deve ter o cuidado de limpar o bit BF no ISR antes modo Slave Transmit de 7 bits (consulte a Figura 9-11).
da próxima sequência de recebimento para evitar
uma condição de estouro.

9.4.4.2 Alongamento de relógio para escravo de 10 bits


Modo de recepção (SEN = 1)

No modo Slave Receive de 10 bits, durante a sequência de


endereços, o alongamento do relógio ocorre automaticamente,
mas o CKP não é apagado. Durante esse tempo, se o bit UA for
definido após o nono clock, o alongamento do clock será iniciado.
O bit UA é definido após receber o byte superior do endereço de
10 bits e após o recebimento do segundo byte do endereço de 10
bits, com o bit R/W limpo para '0'. A liberação da linha do relógio
ocorre na atualização do SSPADD. O alongamento do clock
ocorrerá em cada sequência de recebimento de dados conforme
descrito no modo de 7 bits.

Nota: Se o usuário sondar o bit UA e limpá-lo atualizando o


registrador SSPADD antes que a borda de queda
do nono clock ocorra e se o usuário não tiver
apagado o bit BF lendo o registrador SSPBUF antes
desse tempo, então o CKP bit ainda NÃO será
declarado baixo. O estiramento de clock, com base
no estado do bit BF, ocorre apenas durante uma
sequência de dados, não uma sequência de
endereços.

DS39582B-página 90 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
9.4.4.5 Sincronização do Relógio e o
Bit CKP
Quando o bit CKP é apagado, a saída SCL é forçada a '0';
no entanto, definir o bit CKP não fará com que a saída
SCL seja baixa até que a saída SCL já tenha sido
amostrada como baixa. Portanto, o bit CKP não ativa a
linha SCL até que um dispositivo mestre I2C externo já
tenha ativado a linha SCL. A saída SCL permanecerá
baixa até que o bit CKP seja definido e todos os outros
dispositivos no barramento I2C tenham desabilitado o
SCL. Isso garante que uma gravação no bit CKP não
violará o requisito mínimo de tempo alto para SCL (consulte a Figura 9-12).

FIGURA 9-12: TEMPO DE SINCRONIZAÇÃO DO RELÓGIO

Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4

SDA DX DX-1

SCL

O dispositivo
mestre afirma o relógio
CKP

O dispositivo
mestre desativa o relógio

WR
SSPCON

ÿ 2003 Microchip Technology Inc. DS39582B-página 91


ÿ 2003 Microchip Technology Inc. DS39582B-página 92
CKP SSPOV
(SSPCON<6>) BF
(SSPSTAT<0>) (PIR1<3>) SSPIF SCL SDA
S
A7
A6
A5
A4
A3
A2
A1
1
2
34
56
7
Endereço
de
recebimento
R/
W
=
0
8
ACK
9
SSPBUF
é
lido
limpar
antes
da
borda
de
queda
do

relógio porque
o
bit
cheio
do
buffer
é O
relógio
não
émantido
baixo
o '0'
esem
alongamento
ocorrerá para
relógio CKP
não
será borda
do

redefinido
relógio,antes
da
queda Se
BF
for
desmarcado
1234
5
67
89
123
45
7
89 D7
D6
D5
D4
D3
D2
D1
D0
Limpo
no
software
Recebendo
dados
o
alongamento
do
relógio
ocorre CKP
é
redefinido
para
'0'
e BF
é
ajustado
após
a
borda
descendente
do

relógio,
ACK
CKP
está
definido
como
'1' Orelógio
é
mantido
baixo
até
D7
D6
D5
D4
D3
Programas para
'1'
em escrito CKP
Recebendo
dados
6 D2
D1
D0
ainda
cheio.
ACK
não
é
enviado.porque
oSSPBUF
é SSPOV
está
definido
ACK
porque
ACK
=
1 O
relógio
não
émantido
baixo
transferir termina Mestre
de
ônibus
P
TEMPORIZAÇÃO DO MODO ESCRAVO I2C COM SEN = 1 (RECEPÇÃO, ENDEREÇO DE 7 BITS) FIGURA 9-13:
PIC16F87XA
Machine Translated by Google
DS39582B-página 93 ÿ 2003 Microchip Technology Inc.
CKP
UA
(SSPSTAT<1>) SSPOV
(SSPCON<6>)
BF
(SSPSTAT<0>) (PIR1<3>) SSPIF SCL SDA
S
1234
56
7
89
12345
67
89
12345
7
89 1 Receber
primeiro
byte
de
endereço
Limpo
no
software
1
Atualizada O
SSPADD
precisa
ser UA
édefinido
indicando
que
conteúdo
do
SSPSR SSPBUF
é
escrito
com

1
10
A9
A8
R/
W
=
0
ACK
atualização
do
SSPADD
ocorreu O relógio
é
mantido
baixo
até
A7
A6
A5
A4
A3
A2
A1
A0
para
limpar
a
bandeira
BF
Leitura
fictícia
do
SSPBUF
Nota:
Uma
atualização
do
registro
SSPADD do
nono
relógio byte
de SSPADD
é
atualizado
endereço
após
a
borda com
baixa Apagado
descendente por
hardware
quando
Receber
Segundo
Byte
de
Endereço
Limpo
no
software
permanecer
definido.
não
terá
efeito
na
UA
e
a
UA antes
da
borda
de
queda
do
nono
relógio
Atualizada O
SSPADD
precisa
ser UA
édefinido
indicando
que
ACK
atualização
do
SSPADD
ocorreu O relógio
é
mantido
baixo
até
para
limpar
a
bandeira
BF
Leitura
fictícia
do
SSPBUF D7
D6
D5
D4
D3
Nota:
Uma
atualização
do
registro
SSPADD do
nono
relógio byte
de SSPADD
é
atualizado
com
endereço
após
a
borda alta
descendente Apagado
por
hardware
quando
permanecer
definido.
não
terá
efeito
sobre
aUA,
e
a
UA antes
da
borda
de
queda
do
nono
relógio
Receber
Byte
de
Dados
Limpo
no
software
6 D2
D1
D0
CKP
está
definido
como
'1' O
relógio
é
mantido
baixo
até
ACK
12345
789 D7
D6
D5
D4
D3
em
software CKP
escrito
em
'1'
Receber
Byte
de
Dados
Limpo
no
software
6 D2
D1
D0
ainda
cheio.
ACK
não
é SSPOV
está
definido
enviado.porque
o
SSPBUF
é
ACK porque
ACK
=
1 O
relógio
não
émantido
baixo
Mestre
de
ônibus
termina
transferir
P
SEN DE TEMPORIZAÇÃO DO MODO ESCRAVO I2C = 1 (RECEPÇÃO, ENDEREÇO DE 10 BITS) FIGURA 9-14:
PIC16F87XA
Machine Translated by Google
Machine Translated by Google

PIC16F87XA
9.4.5 ENDEREÇO DE CHAMADA GERAL Se o endereço de chamada geral corresponder, o SSPSR é
APOIO, SUPORTE transferido para o SSPBUF, o bit de sinalização BF é definido
(oitavo bit) e na borda de descida do nono bit (bit ACK), o bit de
O procedimento de endereçamento para o barramento I2C é tal
sinalização de interrupção SSPIF é definido.
que o primeiro byte após a condição Start normalmente determina
qual dispositivo será o escravo endereçado pelo mestre. Quando a interrupção é atendida, a fonte da interrupção pode
A exceção é o endereço de chamada geral que pode endereçar ser verificada lendo o conteúdo do SSPBUF. O valor pode ser
todos os dispositivos. Quando este endereço é usado, todos os usado para determinar se o endereço era específico do dispositivo

dispositivos devem, em teoria, responder com um Acknowledge. ou um endereço de chamada geral.

O endereço de chamada geral é um dos oito endereços No modo de 10 bits, o SSPADD precisa ser atualizado para que
reservados para fins específicos pelo protocolo I2C . Consiste em a segunda metade do endereço corresponda e o bit UA seja
todos os '0's com R/W = 0. definido (SSPSTAT<1>). Se o endereço de chamada geral for
amostrado quando o bit GCEN estiver definido, enquanto o
O endereço de chamada geral é reconhecido quando o bit de
escravo estiver configurado no modo de endereço de 10 bits, a
habilitação de chamada geral (GCEN) é habilitado (SSPCON2<7>
segunda metade do endereço não será necessária, o bit UA não
definido). Após uma detecção de bit inicial, 8 bits são deslocados
será definido e o escravo começará a receber dados após o
para o SSPSR e o endereço é comparado com o SSPADD.
Acknowledge (Figura 9-15).
Também é comparado ao endereço de chamada geral e fixado
em hardware.

FIGURA 9-15: SEQUÊNCIA DE ENDEREÇO DE CHAMADA GERAL MODO ESCRAVO


(MODO DE ENDEREÇO DE 7 OU 10 BITS)

O endereço é comparado ao endereço de chamada geral.


Após o ACK, defina a interrupção.

Recebendo dados ACK


R/W = 0
Endereço de chamada geral
SDA ACK D7 D6 D5 D4 D3 D2 D1 D0

SCL
1 2 34 56 7891 2 34 56 789
S

SSPIF

BF (SSPSTAT<0>)

Limpo no software

SSPBUF é lido
SSPOV (SSPCON<6>) '0'

GCEN (SSPCON2<7>) '1'

DS39582B-página 94 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
9.4.6 MODO MESTRE Nota: O módulo MSSP, quando configurado no modo I 2C Master,
O modo mestre é habilitado configurando e apagando os bits SSPM não permite enfileiramento de eventos. Por exemplo,
apropriados no SSPCON e configurando o bit SSPEN. No modo o usuário não tem permissão para iniciar uma condição
Master, as linhas SCL e SDA são manipuladas pelo hardware MSSP. de início e escrever imediatamente no registrador
SSPBUF para iniciar a transmissão antes que a
condição de início seja concluída. Nesse caso, o
O modo de operação mestre é suportado pela geração de interrupção
SSPBUF não será gravado e o bit WCOL será definido,
na detecção das condições de partida e parada. Os bits Stop (P) e
indicando que não ocorreu uma gravação no SSPBUF.
Start (S) são apagados a partir de um Reset ou quando o módulo
MSSP é desabilitado. O controle do barramento I2C pode ser feito
quando o bit P está definido ou o barramento está inativo, com os bits
S e P limpos.
Os eventos a seguir causarão o bit de sinalização de interrupção SSP,
No modo Mestre Controlado por Firmware, o código do usuário conduz SSPIF, a ser definido (interrupção SSP se habilitada):
todas as operações do barramento I2C com base nas condições dos • Condição inicial
bits de Início e Parada.
• Condição de parada
Uma vez habilitado o modo Master, o usuário tem seis opções.
• Byte de transferência de dados transmitido/recebido
• Reconhecimento de transmissão • Início repetido
1. Afirme uma condição de início em SDA e SCL.

2. Afirme uma condição de Início Repetido no SDA e


SCL.

3. Escreva no registrador SSPBUF, iniciando a transmissão de


dados/endereço.

4. Configure a porta I2C para receber dados.


5. Gere uma condição de reconhecimento no final
de um byte de dados recebido.
6. Gere uma condição Stop no SDA e SCL.

FIGURA 9-16: DIAGRAMA DE BLOCO MSSP ( MODO MESTRE I2C )

interno SSPM3:SSPM0
Barramento de dados SPADD<6:0>

Ler Escreva

SSPBUF Baud
Avaliar
Gerador
SDA Mudança

Entrada SDA Relógio


SSPSR

MSb LSb

recebimento
Ativar

(segurar
relógio)
fonte
do
a

Bit de início, bit de parada, Controle


relógio
de

Reconhecer Arbitragem
Detecção
Relógio/
WCOL
de

Gerar
SCL

Detecção de bit de início

Detecção de bit de parada


Entrada SCL Gravar detecção de colisão Definir/Redefinir, S, P, WCOL (SSPSTAT)
Arbitragem do Relógio Definir SSPIF, BCLIF
Colisão de ônibus Contador de estado
Redefinir ACKSTAT, CANETA (SSPCON2)
para final de XMIT/RCV

ÿ 2003 Microchip Technology Inc. DS39582B-página 95


Machine Translated by Google

PIC16F87XA
9.4.6.1 Operação do modo mestre I2C Uma sequência de transmissão típica seria a seguinte:

O dispositivo mestre gera todos os pulsos de clock serial e as condições 1. O usuário gera uma condição de partida definindo o bit de
de Start e Stop. Uma transferência é finalizada com uma condição de habilitação de partida, SEN (SSPCON2<0>).
Parada ou com uma condição de Início Repetido. Como a condição de 2. SSPIF está definido. O módulo MSSP aguardará o tempo de início
Início Repetido também é o início da próxima transferência serial, o necessário antes que qualquer outra operação ocorra.
barramento I2C não será liberado.
3. O usuário carrega o SSPBUF com o escravo
No modo Master Transmitter, os dados seriais são enviados através do endereço para transmitir.
SDA enquanto o SCL emite o clock serial. O primeiro byte transmitido 4. O endereço é deslocado do pino SDA até que todos os 8 bits
contém o endereço escravo do dispositivo receptor (7 bits) e o bit Read/ sejam transmitidos.
Write (R/W). 5. O módulo MSSP desloca o bit ACK do dispositivo escravo e
Neste caso, o bit R/W será '0' lógico. Os dados seriais são transmitidos escreve seu valor no registrador SSPCON2 (SSPCON2<6>).
8 bits por vez. Depois que cada byte é transmitido, um bit de
reconhecimento é recebido. As condições de início e parada são emitidas
6. O módulo MSSP gera uma interrupção no final do nono ciclo de
para indicar o início e o fim de uma transferência serial.
clock definindo o bit SSPIF.

No modo Master Receive, o primeiro byte transmitido contém o 7. O usuário carrega o SSPBUF com oito bits de
endereço escravo do dispositivo transmissor (7 bits) e o bit R/W. Neste dados.
caso, o bit R/W será lógico '1'. Assim, o primeiro byte transmitido é um
8. Os dados são deslocados do pino SDA até que todos os 8 bits
endereço escravo de 7 bits seguido por um '1' para indicar o bit de sejam transmitidos.
recepção.
9. O módulo MSSP desloca o bit ACK do dispositivo escravo e
Os dados seriais são recebidos via SDA enquanto o SCL emite o relógio
escreve seu valor no registrador SSPCON2 (SSPCON2<6>).
serial. Os dados seriais são recebidos 8 bits por vez. Depois que cada
byte é recebido, um bit de reconhecimento é transmitido. As condições
Start e Stop indicam o início e o fim da transmissão. 10. O módulo MSSP gera uma interrupção no final do nono ciclo de
clock definindo o bit SSPIF.

O gerador de taxa de transmissão usado para a operação no modo SPI


11. O usuário gera uma condição de parada configurando o bit de
é usado para definir a frequência de clock SCL para operação I2C de
habilitação de parada, PEN (SSPCON2<2>).
100 kHz, 400 kHz ou 1 MHz. Consulte a Seção 9.4.7 “Gerador de taxa
de transmissão” para obter mais detalhes. 12. A interrupção é gerada quando a condição de Parada é concluída.

DS39582B-página 96 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
9.4.7 GERADOR DE TAXA DE BAUD Uma vez que a operação dada esteja completa (ou seja, a
transmissão do último bit de dados é seguida por ACK), o
No modo I2C Master, o Baud Rate Generator (BRG)
relógio irá parar automaticamente de contar e o pino SCL
valor de recarregamento é colocado nos 7 bits inferiores do permanecerá em seu último estado.
Registro SSPADD (Figura 9-17). Quando ocorre uma gravação para
A Tabela 9-3 demonstra as taxas de clock com base em
SSPBUF, o Baud Rate Generator irá automaticamente
comece a contar. O BRG faz a contagem regressiva até 0 e para ciclos de instrução e o valor BRG carregado em
SPADD.
até que outra recarga tenha ocorrido. A contagem BRG é
decrementado duas vezes por ciclo de instrução (TCY) no
Relógios Q2 e Q4. No modo I2C Master, o BRG é
recarregado automaticamente.

FIGURA 9-17: DIAGRAMA DE BLOCO DO GERADOR DE TAXA BAUD

SSPM3:SSPM0 SPADD<6:0>

SSPM3:SSPM0 recarregar recarregar

SCL Ao controle

CLKO Contador descendente BRG ESCURO/4

TABELA 9-3: TAXA DE RELÓGIO I2C COM BRG

FSCL
FCY FCY*2 Valor BRG
(2 Rollovers de BRG)

10MHz 20MHz 19h 400 kHz(1)


10MHz 20MHz 20h 312,5 kHz
10MHz 20MHz 3Fh 100 kHz
4MHz 8MHz 0Ah 400 kHz(1)
4MHz 8MHz 0Dh 308 kHz
4MHz 8MHz 28h 100 kHz
1 MHz 2MHz 03h 333 kHz(1)
1 MHz 2MHz 0Ah 100 kHz
1 MHz 2MHz 00h 1MHz( 1 )

Nota 1: A interface I2C não está em conformidade com a especificação I2C de 400 kHz (que se aplica a taxas superiores a 100 kHz)
em todos os detalhes, mas pode ser usada com cuidado onde taxas mais altas forem exigidas pela aplicação.

ÿ 2003 Microchip Technology Inc. DS39582B-página 97


Machine Translated by Google

PIC16F87XA
9.4.7.1 Arbitragem do Relógio O pino SCL é amostrado alto, o gerador de taxa de transmissão é
recarregado com o conteúdo de SSPADD<6:0> e
A arbitragem do relógio ocorre quando o mestre, durante qualquer
começa a contar. Isso garante que o tempo de alta SCL
receber, transmitir ou condição de partida/parada repetida,
será sempre pelo menos uma contagem de rollover BRG, no
desativa o pino SCL (SCL permitido flutuar alto).
caso o relógio seja mantido baixo por um dispositivo externo
Quando o pino SCL flutua alto, o Baud
(Figura 9-17).
O Gerador de Taxas (BRG) está suspenso da contagem
até que o pino SCL seja realmente amostrado alto. Quando o

FIGURA 9-18: CRONOGRAMA DO GERADOR DE TAXA DE BAUD COM ARBITRAGEM DE RELÓGIO

SDA DX DX-1

SCL desativada, mas o escravo mantém SCL autorizado a fazer a transição alta
SCL baixo (arbitragem de clock)
SCL

BRG diminui em
Ciclos Q2 e Q4

BRG
03h 02h 01h 00h (adiar) 03h 02h
Valor

O SCL é amostrado alto, o recarregamento demora


lugar e BRG inicia sua contagem
BRG
recarregar

DS39582B-página 98 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
9.4.8 INÍCIO DO MODO MESTRE I2C 9.4.8.1 Sinalizador de Status WCOL
TEMPO DE CONDIÇÃO
Se o usuário gravar o SSPBUF quando uma sequência de início
Para iniciar uma condição de partida, o usuário define o bit de está em andamento, o WCOL é definido e o conteúdo do
habilitação da condição de partida, SEN (SSPCON2<0>). Se a SDA e buffer são inalterados (a gravação não ocorre).
Os pinos SCL são amostrados em alta, o Baud Rate Generator
Nota: Como o enfileiramento de eventos não é
é recarregado com o conteúdo de SSPADD<6:0> e
permitido, escrevendo para os 5 bits inferiores de
inicia sua contagem. Se SCL e SDA forem amostrados altos SSPCON2 está desabilitado até o Start
quando o gerador de taxa de transmissão expira (TBRG), o
condição está completa.
O pino SDA está baixo. A ação da SDA sendo
conduzido baixo, enquanto SCL é alto, é a condição de partida e
faz com que o bit S (SSPSTAT<3>) seja definido. Seguindo
isso, o Baud Rate Generator é recarregado com o conteúdo de
SSPADD<6:0> e retoma sua contagem. Quando
o Baud Rate Generator atinge o tempo limite (TBRG), o bit SEN
(SSPCON2<0>) será automaticamente apagado pelo hardware,
o Baud Rate Generator é suspenso, deixando
a linha SDA mantida baixa e a condição inicial é
completo.

Nota: Se no início da condição Start,


os pinos SDA e SCL já estão baixados, ou se
durante a condição Start, o
A linha SCL é amostrada baixa antes do SDA
linha é reduzida, ocorre uma colisão de ônibus,
a bandeira de interrupção de colisão de ônibus (BCLIF) é
definido, a condição de partida é abortada e o
O módulo I 2C é redefinido em seu estado ocioso.

FIGURA 9-19: CRONOGRAMA DO PRIMEIRO BIT DE INÍCIO

Definir bit S (SSPSTAT<3>)


O bit de gravação no SEN ocorre aqui
SDA = 1,
SCL = 1 Na conclusão do bit de início, o
hardware limpa o bit SEN
e define o bit SSPIF

TBRG TBRG A gravação no SSPBUF ocorre aqui

1º Bit 2º Bit
SDA
TBRG

SCL
TBRG
S

ÿ 2003 Microchip Technology Inc. DS39582B-página 99


Machine Translated by Google

PIC16F87XA
9.4.9 MODO MESTRE I2C REPETIDO Imediatamente após o bit SSPIF ser definido, o usuário
CRONOGRAMA DA CONDIÇÃO DE INÍCIO pode escrever o SSPBUF com o endereço de 7 bits em 7 bits
modo ou o primeiro endereço padrão no modo de 10 bits. Depois
Uma condição de partida repetida ocorre quando o bit RSEN
os primeiros oito bits são transmitidos e um ACK é
(SSPCON2<1>) é programado alto e a lógica I2C
recebido, o usuário pode então transmitir mais oito
módulo está no estado Idle. Quando o bit RSEN é definido,
bits de endereço (modo de 10 bits) ou oito bits de dados (modo de 7 bits
o pino SCL é declarado baixo. Quando o pino SCL é baixado, o
modo).
Baud Rate Generator é carregado com o
conteúdo de SSPADD<5:0> e começa a contar. o 9.4.9.1 Sinalizador de Status WCOL
O pino SDA é liberado (elevado) para uma taxa de transmissão
Contagem do gerador (TBRG). Quando o gerador de taxa de Se o usuário gravar o SSPBUF quando um Início Repetido
transmissão expirar, se o SDA for amostrado alto, o pino SCL seqüência está em andamento, o WCOL está definido e o
ser desativada (levantada). Quando SCL é amostrado conteúdo do buffer permanece inalterado (a gravação não
alto, o gerador de taxa de transmissão é recarregado com o ocorrer).
conteúdo de SSPADD<6:0> e começa a contar. SDA Nota: Como o enfileiramento de eventos não é
e SCL deve ser amostrado alto para um TBRG. este permitido, escrever os 5 bits inferiores de
A ação é seguida pela afirmação do pino SDA SSPCON2 é desabilitado até que o Repetido
(SDA = 0) para um TBRG enquanto o SCL é alto. Seguindo A condição de partida está completa.
isso, o bit RSEN (SSPCON2<1>) será automaticamente
apagado e o Gerador de Taxa de Transmissão não será
recarregado, deixando o pino SDA mantido baixo. Assim que um
A condição de partida é detectada nos pinos SDA e SCL,
o bit S (SSPSTAT<3>) será definido. O bit SSPIF
não ser definido até que o Gerador de Taxa de Transmissão tenha expirado.

Nota 1: Se RSEN for programado enquanto qualquer outro


evento estiver em andamento, ele não terá efeito.

2: Uma colisão de ônibus durante a partida repetida


condição ocorre se:

• O SDA é amostrado baixo quando o SCL vai


de baixo para alto.
• O SCL fica baixo antes que o SDA seja
afirmou baixo. Isso pode indicar que
outro mestre está tentando
transmitir um dado '1'.

FIGURA 9-20: REPETIR A FORMA DE ONDA DA CONDIÇÃO DE PARTIDA

Definir S (SSPSTAT<3>)
A gravação em
SDA = 1,
SSPCON2 ocorre aqui, Na conclusão do bit de início,
SCL = 1
SDA = 1, o hardware limpa o bit RSEN
SCL (sem alteração) e define SSPIF

TBRG TBRG TBRG

1º Bit
SDA
A gravação no SSPBUF ocorre aqui
Borda de queda do nono relógio,
fim de Xmit
TBRG

SCL
TBRG

Sr = Início Repetido

DS39582B-página 100 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
9.4.10 MODO MESTRE I2C 9.4.10.3 Sinalizador de Status ACKSTAT
TRANSMISSÃO
No modo Transmissão, o bit ACKSTAT (SSPCON2<6>) é apagado
A transmissão de um byte de dados, um endereço de 7 bits ou a quando o escravo envia um reconhecimento (ACK = 0) e é definido
outra metade de um endereço de 10 bits é realizada simplesmente quando o escravo não reconhece borda (ACK = 1). Um escravo
escrevendo um valor no registrador SSPBUF. Esta ação irá definir o envia um Acknowledge quando reconhece seu endereço (incluindo
bit de flag Buffer Full, BF, e permitirá que o Baud Rate Generator uma chamada geral) ou quando o escravo recebe corretamente seus
comece a contar e inicie a próxima transmissão. Cada bit de dados.
endereço/dados será deslocado para o pino SDA depois que a borda
descendente de SCL for declarada (consulte a especificação de
9.4.11 RECEPÇÃO DO MODO MESTRE I2C
tempo de retenção de dados, parâmetro #106). O SCL é mantido A recepção do modo mestre é habilitada programando o bit de
baixo para uma contagem de rollover do gerador de taxa de habilitação de recepção, RCEN (SSPCON2<3>).
transmissão (TBRG). Os dados devem ser válidos antes que o SCL
Nota: O módulo MSSP deve estar em um estado ocioso antes
seja liberado em alta (consulte a especificação de tempo de
que o bit RCEN seja definido ou o bit RCEN será
configuração de dados, parâmetro #107). Quando o pino SCL é
liberado alto, ele é mantido dessa forma para o TBRG. Os dados no desconsiderado.
pino SDA devem permanecer estáveis por esse período e algum
O Baud Rate Generator começa a contar e em cada rollover, o
tempo de espera após a próxima borda de queda do SCL. Depois estado do pino SCL muda (alto para baixo/baixo para alto) e os
que o oitavo bit é deslocado (a borda descendente do oitavo clock), dados são transferidos para o SSPSR. Após a borda descendente
o sinalizador BF é apagado e o mestre libera o SDA. do oitavo clock, o sinalizador de habilitação de recebimento é
Isso permite que o dispositivo escravo que está sendo endereçado automaticamente limpo, o conteúdo do SSPSR é carregado no
responda com um bit ACK durante o nono tempo de bit, se ocorreu SSPBUF, o bit de sinalizador BF é definido, o bit de sinalizador
uma correspondência de endereço ou se os dados foram recebidos SSPIF é definido e o Gerador de Taxa de Transmissão é suspenso
adequadamente. O status do ACK é escrito no bit ACKDT na borda da contagem , mantendo SCL baixo. O MSSP está agora em estado
descendente do nono clock. Se o mestre recebe um Acknowledge, ocioso, aguardando o próximo comando. Quando o buffer é lido pela
o bit Acknowledge Status, ACKSTAT, é apagado. Caso contrário, o CPU, o bit de flag BF é automaticamente apagado. O usuário pode
bit está definido. Após o nono clock, o bit SSPIF é definido e o clock
então enviar um bit de reconhecimento no final da recepção,
mestre (Baud Rate Generator) é suspenso até que o próximo byte definindo o bit de habilitação da sequência de reconhecimento,
de dados seja carregado no SSPBUF, deixando SCL baixo e SDA ACKEN (SSPCON2<4>).
inalterado (Figura 9-21).
9.4.11.1 Sinalizador de Status BF
Após a gravação no SSPBUF, cada bit de endereço será deslocado Na operação de recepção, o bit BF é definido quando um endereço
na borda descendente do SCL, até que todos os sete bits de ou byte de dados é carregado no SSPBUF do SSPSR. É apagado
endereço e o bit R/W sejam concluídos. Na borda descendente do quando o registrador SSPBUF é lido.
oitavo relógio, o mestre irá desabilitar o pino SDA, permitindo que o
escravo responda com um Acknowledge. Na borda descendente do 9.4.11.2 Sinalizador de Status SSPOV
nono relógio, o mestre fará uma amostra do pino SDA para ver se o
Na operação de recepção, o bit SSPOV é definido quando 8 bits são
endereço foi reconhecido por um escravo. O status do bit ACK é
recebidos no SSPSR e o bit de sinalização BF já está definido a
carregado no bit de status ACKSTAT (SSPCON2<6>).
partir de uma recepção anterior.

Após a borda descendente da nona transmissão de clock do


9.4.11.3 Sinalizador de Status WCOL
endereço, o SSPIF é definido, o sinalizador BF é apagado e o
Gerador de Taxa de Transmissão é desligado até que outra gravação Se o usuário gravar o SSPBUF quando um recebimento já estiver

no SSPBUF ocorra, mantendo o SCL baixo e permitindo que o SDA em andamento (ou seja, o SSPSR ainda estiver mudando em um
flutue. byte de dados), o bit WCOL será definido e o conteúdo do buffer
permanecerá inalterado (a gravação não ocorrerá).
9.4.10.1 Sinalizador de Status BF
No modo de transmissão, o bit BF (SSPSTAT<0>) é definido quando
a CPU escreve para SSPBUF e é limpo quando todos os oito bits
são deslocados.

9.4.10.2 Sinalizador de Status WCOL


Se o usuário gravar o SSPBUF quando uma transmissão já estiver
em andamento (ou seja, o SSPSR ainda estiver deslocando um byte
de dados), o WCOL será definido e o conteúdo do buffer permanecerá
inalterado (a gravação não ocorrerá).
WCOL deve ser limpo no software.

ÿ 2003 Microchip Technology Inc. DS39582B-página 101


ÿ 2003 Microchip Technology Inc. DS39582B-página 102
R/
W CANETA ESTÁ BF
(SSPSTAT<0>) SSPIF SCL SDA
A
condição
de
partida
começa Escreva
SSPCON2<0>
SEN
=
1
S
SEN
=
0
Após
a
condição
de
partida,
SEN
limpo
por
hardware
SSPBUF
escrito A7
A6
A5
A4
A3
A2
A1
Inicie
a
transmissão. SSPBUF
escrito
com
endereço
de
7
bits
eR/
W.
123456789
123456789
Transmitir
Endereço
para
Escravo
Limpo
no
software
R/
W
=
0
ACK
=
0
responde
a
SSPIF
enquanto
CPU
SCL
mantido
baixo
Do
escravo,
limpe
o
bit
ACKSTAT
SSPCON2<6>
D7
D6
D5
D4
D3
D2
D1
D0
Transmitindo
dados
ou
segunda
metade
do
endereço
de
10
bits
SSPBUF
é
escrito
em
software Limpo
na
rotina
de
serviço
software
da
interrupção
SSP
ACK
Limpo
no
software
SSPCON2
=
1 ACKSTAT
em
P
FORMA DE ONDA DO MODO MESTRE I2C (TRANSMISSÃO, ENDEREÇO DE 7 OU 10 BITS) FIGURA 9-21:
PIC16F87XA
Machine Translated by Google
DS39582B-página 103 ÿ 2003 Microchip Technology Inc.
SSPOV (SSPSTAT<0>) BF responde
a
SSPIF SDA
=
enquanto
CPU SSPIF SCL SDA
OUCH
0,
SCL
=
1
começarem
SSPCON2<0>
(SEN
=
1),
Condição
de
início Gravar
S
SEN
=
0
1 A7
A6
A5
A4
A3
A2
A1
iniciar
XMIT
Write
to
SSPBUF
ocorre
aqui,
Transmitir
Endereço
para
Escravo
2
3
4
5
6
7
Limpo
no
software
ACK
do
escravo
R/
W
=
1
8
9
D0
D1
D2
D3
D4
D5
D6
D7
ACK
programando
SSPCON2<3>
(RCEN
=
1) Mestre
configurado
como
receptor
Limpo
no
software
1 Recebendo
dados
do
escravo
2
3
4
5
678
9
1234
no
final
do
recebimento
Definir
interrupção
SSPIF
Limpo
no
software
automaticamente
RCEN
limpo
SDA
=
ACKDT para
iniciar
sequência
de Gravar
em
SSPCON2<4>
reconhecimento,
(SSPCON2<5>)
=
0
o
conteúdo
é
descarregado
no
SSPBUF O
último
bit
é
deslocado
para
SSPSR
e
ACK
SDA
=
ACKDT
0 ACK
do
mestre
RCEN
=
1,
iniciar
próximo
recebimento
Dados
deslocados
na
borda
descendente
do
CLK
D0
D1
D2
D3
D4
D5
D6
D7
seqüência no
final
do
reconhecimento
Definir
interrupção
SSPIF
Recebendo
dados
do
escravo
Limpo
no
software
8
7
6
5
automaticamente
RCEN
limpo
SDA
=
ACKDT
1 Defina
ACKEN,
inicie
a
sequência
de
reconhecimento,
SSPBUF
ainda
está
cheio SSPOV
está
definido
porque
de
receber Definir
SSPIF
no
final
ACK
não
é
enviado
ACK
9
Programas Liberado
em
escrito
aqui
Bit
PEN
=
1
no
final
da
sequência
de
reconhecimento
Definir
interrupção
SSPIF

P
e
SSPIF (SSPSTAT<4>) Definir
bit
P
transferir termina Mestre
de
ônibus
FORMA DE ONDA DO MODO MESTRE I2C (RECEPÇÃO, ENDEREÇO DE 7 BITS) FIGURA 9-22:
PIC16F87XA
Machine Translated by Google
Machine Translated by Google

PIC16F87XA
9.4.12 RECONHECER TEMPO DE SEQUÊNCIA 9.4.13 TEMPO DE CONDIÇÃO DE PARADA

Um bit de parada é ativado no pino SDA no final de uma


Uma sequência de reconhecimento é habilitada configurando recepção/transmissão definindo o bit de habilitação de
o bit de habilitação de sequência de reconhecimento, ACKEN sequência de parada, PEN (SSPCON2<2>). No final de uma
(SSPCON2<4>). Quando este bit é definido, o pino SCL é recepção/transmissão, a linha SCL é mantida baixa após a
puxado para baixo e o conteúdo do bit de dados Acknowledge borda descendente do nono clock. Quando o bit PEN é
é apresentado no pino SDA. Se o usuário deseja gerar um definido, o mestre irá declarar a linha SDA baixa. Quando a
Acknowledge, então o bit ACKDT deve ser apagado. Caso linha SDA é amostrada baixa, o Baud Rate Generator é
contrário, o usuário deve definir o bit ACKDT antes de iniciar recarregado e conta até 0. Quando o Baud Rate Generator
uma sequência de reconhecimento. O Baud Rate Generator atinge o tempo limite, o pino SCL será elevado e um TBRG
conta então para um período de rollover (TBRG) e o pino SCL (Baud Rate Generator rollover count) mais tarde, o SDA pino
é desabilitado (puxado para cima). Quando o pino SCL é será desativado. Quando o pino SDA é amostrado alto
amostrado alto (arbitragem de clock), o Baud Rate Generator enquanto SCL é alto, o bit P (SSPSTAT<4>) é definido. Um
conta para TBRG. O pino SCL é então puxado para baixo. Em TBRG depois, o bit PEN é apagado e o bit SSPIF é definido
seguida, o bit ACKEN é automaticamente apagado, o gerador (Figura 9-24).
de baud rate é desligado e o módulo MSSP então entra no
modo Idle (Figura 9-23). 9.4.13.1 Sinalizador de Status WCOL
Se o usuário gravar o SSPBUF quando uma seqüência de
9.4.12.1 Sinalizador de Status WCOL parada estiver em andamento, o bit WCOL será definido e o
Se o usuário gravar o SSPBUF quando uma sequência de conteúdo do buffer permanecerá inalterado (a gravação não
reconhecimento estiver em andamento, o WCOL será definido ocorrerá).
e o conteúdo do buffer permanecerá inalterado (a gravação
não ocorrerá).

FIGURA 9-23: FORMA DE ONDA DE SEQUÊNCIA DE RECONHECIMENTO

A sequência de reconhecimento começa aqui, ACKEN apagado automaticamente


escreva para SSPCON2
ACKEN = 1, ACKDT = 0
TBRG TBRG

SDA D0 ACK

SCL 8 9

SSPIF

Limpo no
Definir SSPIF no final do
Limpo no software
recebimento
software Definir SSPIF no final da
sequência de reconhecimento

Nota: TBRG = um período do Gerador de Taxa de Baud.

FIGURA 9-24: CONDIÇÃO DE PARADA RECEBER OU MODO DE TRANSMISSÃO

Escreva para SSPCON2, SCL = 1 para TBRG, seguido por SDA = 1 para TBRG após
defina PEN SDA amostrado alto. O bit P (SSPSTAT<4>) está definido.

Borda de queda O bit PEN (SSPCON2<2>) é apagado pelo


do 9º relógio hardware e o bit SSPIF é definido
TBRG
SCL

SDA ACK

P
TBRG TBRG TBRG

SCL subiu após TBRG

SDA afirmou baixo antes da borda de subida do relógio para


configurar a condição de parada

Nota: TBRG = um período do Gerador de Taxa de Baud.

DS39582B-página 104 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
9.4.14 OPERAÇÃO DO SONO 9.4.17 COMUNICAÇÃO MULTI-MASTER, COLISÃO DE ÔNIBUS E

Enquanto estiver no modo Sleep, o módulo I2C pode receber ARBITRAGEM DE ÔNIBUS
endereços ou dados e quando ocorrer uma correspondência de
endereço ou transferência completa de bytes, desperte o
O suporte ao modo Multi-Master é obtido por arbitragem de
processador do Sleep (se a interrupção MSSP estiver habilitada).
barramento. Quando o mestre envia bits de endereço/dados para
o pino SDA, a arbitragem ocorre quando o mestre emite um '1' no
9.4.15 EFEITO DE UMA REINICIALIZAÇÃO
SDA, deixando o SDA flutuar alto e outro mestre afirma um '0'.
Um Reset desabilita o módulo MSSP e encerra a transferência Quando o pino SCL flutua alto, os dados devem ser estáveis. Se
atual. os dados esperados no SDA forem '1' e os dados amostrados no
pino SDA = 0, então ocorreu uma colisão de barramento. O mestre
9.4.16 MODO MULTI-MASTER definirá o Bus Collision Interrupt Flag, BCLIF, e redefinirá a porta I
No modo Multi-Master, a geração de interrupção na detecção das 2C para seu estado Idle (Figura 9-25).
condições de Start e Stop permite determinar quando o barramento
está livre. Os bits Stop (P) e Start (S) são apagados a partir de um Se uma transmissão estava em andamento quando ocorreu a
Reset ou quando o módulo MSSP é desabilitado. O controle do colisão do barramento, a transmissão é interrompida, o sinalizador
barramento I2C pode ser feito quando o bit P (SSPSTAT<4>) é BF é apagado, as linhas SDA e SCL são desativadas e o SSPBUF
definido, ou o barramento está inativo, com os bits S e P limpos. pode ser gravado. Quando o usuário atende a Rotina de Serviço
Quando o barramento estiver ocupado, habilitar a interrupção SSP de Interrupção de colisão de barramento e se o barramento I2C
gerará a interrupção quando ocorrer a condição de parada. estiver livre, o usuário pode retomar a comunicação afirmando uma
condição de Partida.
Na operação multimestre, a linha SDA deve ser monitorada para Se uma condição de Partida, Partida Repetida, Parada ou
arbitragem para ver se o nível do sinal está no nível de saída Reconhecimento estava em andamento quando ocorreu a colisão
esperado. Esta verificação é realizada em hardware com o resultado do barramento, a condição é abortada, as linhas SDA e SCL são
colocado no bit BCLIF. desativadas e os respectivos bits de controle no registrador
Os estados onde a arbitragem pode ser perdida são: SSPCON2 são apagados. Quando o usuário atende a Rotina de
Serviço de Interrupção de colisão de barramento e se o barramento
• Transferência de Endereço
I2C estiver livre, o usuário pode retomar a comunicação afirmando
• Transferência de dados
uma condição de Partida.
• Uma Condição de Partida
O Mestre continuará monitorando os pinos SDA e SCL. Se ocorrer
• Uma Condição de Início Repetido uma condição de parada, o bit SSPIF será definido.
• Uma Condição de Reconhecimento Uma gravação no SSPBUF iniciará a transmissão de dados no
primeiro bit de dados, independentemente de onde o transmissor
parou quando ocorreu a colisão do barramento.

No modo Multi-Master, a geração de interrupção na detecção das


condições de Start e Stop permite determinar quando o barramento
está livre. O controle do barramento I2C pode ser feito quando o bit
P é definido no registrador SSPSTAT ou o barramento está ocioso
e os bits S e P são limpos.

FIGURA 9-25: TEMPO DE COLISÃO DE ÔNIBUS PARA TRANSMISSÃO E RECONHECIMENTO

Os dados mudam Linha SDA reduzida por Amostra SDA. Enquanto o SCL é alto, os
enquanto SCL = 0 outra fonte dados não correspondem ao que é
controlado pelo mestre. Ocorreu colisão de ônibus.
SDA lançado pelo
mestre

SDA

SCL
Definir interrupção de

colisão de barramento (BCLIF)

BCLIF

ÿ 2003 Microchip Technology Inc. DS39582B-página 105


Machine Translated by Google

PIC16F87XA
9.4.17.1 Colisão de Barramento Durante uma Se o pino SDA for amostrado baixo durante esta contagem, o
Condição de Partida BRG é redefinido e a linha SDA é afirmada antecipadamente
(Figura 9-28). Se, no entanto, um '1' for amostrado no SDA
Durante uma condição de partida, ocorre uma colisão de barramento se:
pino, o pino SDA é afirmado baixo no final do BRG
a) SDA ou SCL são amostrados baixos no início de contar. O gerador de taxa de transmissão é então recarregado e
a condição de partida (Figura 9-26). contagem regressiva até 0 e durante este tempo, se o pino SCL estiver
b) O SCL é amostrado baixo antes que o SDA seja declarado baixo amostrado como '0', uma colisão de barramento não ocorre. No
(Figura 9-27). final da contagem BRG, o pino SCL é declarado baixo.

Durante uma condição de partida, tanto o SDA quanto o SCL Nota: A razão pela qual a colisão de ônibus não é um fator
pinos são monitorados. durante uma condição de Partida é que não há dois barramentos
mestres podem declarar uma condição de partida no
Se o pino SDA já estiver baixo ou o pino SCL já estiver
exatamente ao mesmo tempo. Portanto, um mestre
baixo, então ocorre o seguinte:
sempre irá afirmar SDA antes do outro.
• a condição de partida é abortada, • o
Esta condição não causa uma colisão de barramento
sinalizador BCLIF é definido e porque os dois mestres devem ser
• o módulo MSSP é redefinido para seu estado ocioso permitido arbitrar o primeiro endereço seguindo a
(Figura 9-26). condição Start. Se o endereço for
A condição Start começa com os pinos SDA e SCL o mesmo, a arbitragem deve ser permitida

desanimado. Quando o pino SDA é amostrado alto, o continue na parte de dados, Repetido
O gerador de taxa de transmissão é carregado de SSPADD<6:0> Condições de início ou parada.
e faz a contagem regressiva até 0. Se o pino SCL for amostrado baixo
enquanto o SDA é alto, ocorre uma colisão de ônibus porque é
assumiu que outro mestre está tentando dirigir um
dados '1' durante a condição de partida.

FIGURA 9-26: COLISÃO DE ÔNIBUS DURANTE A CONDIÇÃO DE PARTIDA (SOMENTE SDA)

O SDA fica baixo antes que o bit SEN seja definido.


Definir BCLIF,
S bit e SSPIF definidos porque
SDA = 0, SCL = 1.

SDA

SCL

Defina SEN, habilite Iniciar SEN apagado automaticamente devido a colisão de ônibus.
condição se SDA = 1, SCL = 1 O módulo SSP é redefinido para o estado ocioso.
ESTÁ

SDA amostrado baixo antes da


condição de início. Defina BCLIF.
S bit e SSPIF definidos porque
BCLIF
SDA = 0, SCL = 1.

SSPIF e BCLIF são


apagado no software

SSPIF

SSPIF e BCLIF são


apagado no software

DS39582B-página 106 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
FIGURA 9-27: COLISÃO DE ÔNIBUS DURANTE CONDIÇÃO DE PARTIDA (SCL = 0)

SDA = 0, SCL = 1

TBRG TBRG
SDA

SCL Defina SEN, habilite Iniciar


sequência se SDA = 1, SCL = 1

SCL = 0 antes de SDA = 0,


colisão de ônibus ocorre. Defina BCLIF.
ESTÁ

SCL = 0 antes do tempo limite BRG,


colisão de ônibus ocorre. Defina BCLIF.

BCLIF

Interrupção apagada
em software
S
'0' '0'

SSPIF '0' '0'

FIGURA 9-28: REINICIALIZAÇÃO DE BRG DEVIDO À ARBITRAGEM SDA DURANTE A CONDIÇÃO DE INÍCIO

SDA = 0, SCL = 1
Conjunto S Definir SSPIF
Menos de TBRG
TBRG

SDA SDA baixado por outro mestre.


Reinicialize o BRG e confirme o SDA.

SCL
S
SCL caiu após BRG
tempo esgotado

ESTÁ
Defina SEN, habilite Iniciar
sequência se SDA = 1, SCL = 1
BCLIF '0'

SSPIF

SDA = 0, SCL = 1, Interrupções apagadas


definir SSPIF no software

ÿ 2003 Microchip Technology Inc. DS39582B-página 107


Machine Translated by Google

PIC16F87XA
9.4.17.2 Colisão de Barramento Durante uma Condição recarregado e começa a contar. Se o SDA for de alto para baixo
de Partida Repetida antes que o BRG expire, nenhuma colisão de barramento ocorrerá
porque dois mestres não podem ativar o SDA exatamente ao mesmo
Durante uma condição de partida repetida, ocorre uma colisão de tempo.
barramento se:
Se o SCL for de alto para baixo antes que o BRG expire e o SDA
a) Um nível baixo é amostrado no SDA quando o SCL passa de
ainda não tenha sido ativado, ocorrerá uma colisão de barramento.
nível baixo para nível alto.
Neste caso, outro mestre está tentando transmitir um dado '1'
b) O SCL fica baixo antes que o SDA seja declarado baixo, durante a condição de Início Repetido (Figura 9-30).
indicando que outro mestre está tentando transmitir um
dado '1'.
Se no final do tempo limite do BRG, tanto o SCL quanto o SDA
Quando o usuário desativa o SDA e o pino pode flutuar alto, o BRG ainda estiverem em nível alto, o pino SDA será colocado em nível
é carregado com SSPADD<6:0> e faz a contagem regressiva até 0. baixo e o BRG será recarregado e começará a contar. No final da
O pino SCL é então desativado e quando amostrado alto, o pino contagem, independentemente do status do pino SCL, o pino SCL
SDA é amostrado. é reduzido e a condição de Início Repetido é concluída.
Se o SDA estiver baixo, ocorreu uma colisão de barramento (ou
seja, outro mestre está tentando transmitir um dado '0', veja a Figura
9-29). Se o SDA for amostrado alto, o BRG é

FIGURA 9-29: COLISÃO DE ÔNIBUS DURANTE UMA CONDIÇÃO DE PARTIDA REPETIDA (CASO 1)

SDA

SCL

Amostra SDA quando o SCL fica alto.


Se SDA = 0, defina BCLIF e libere SDA e SCL.

RSEN

BCLIF

Limpo no software

S '0'

SSPIF '0'

FIGURA 9-30: COLISÃO DE ÔNIBUS DURANTE CONDIÇÃO DE PARTIDA REPETIDA (CASO 2)

TBRG TBRG

SDA

SCL

O SCL fica baixo antes do SDA,


BCLIF defina o BCLIF. Liberar SDA e SCL.

Interrupção limpa
no software
RSEN

S '0'

SSPIF

DS39582B-página 108 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
9.4.17.3 Colisão de Barramento Durante uma A condição Stop começa com o SDA declarado baixo.
Condição de Parada Quando o SDA é amostrado baixo, o pino SCL pode
flutuador. Quando o pino é amostrado alto (arbitragem de clock),
A colisão do barramento ocorre durante uma condição de parada se:
o Baud Rate Generator é carregado com SSPADD<6:0>
a) Após o pino SDA ter sido desativado e e faz a contagem regressiva até 0. Após o tempo limite do BRG, o SDA é
permitido flutuar alto, SDA é amostrado baixo após amostrado. Se o SDA for amostrado baixo, uma colisão de ônibus
o BRG expirou. ocorreu. Isso se deve a outro mestre tentando
b) Após o pino SCL ser desabilitado, o SCL é amostrado conduza um dado '0' (Figura 9-31). Se o pino SCL for amostrado
baixa antes que a SDA fique alta. baixo antes que o SDA possa flutuar alto, uma colisão de ônibus
ocorre. Este é outro caso de outro mestre
tentando conduzir um dado '0' (Figura 9-32).

FIGURA 9-31: COLISÃO DE ÔNIBUS DURANTE UMA CONDIÇÃO DE PARADA (CASO 1)

TBRG TBRG TBRG SDA amostrado


baixo após TBRG,
definir BCLIF
SDA

SDA afirmou baixo


SCL

CANETA

BCLIF

P '0'

SSPIF '0'

FIGURA 9-32: COLISÃO DE ÔNIBUS DURANTE UMA CONDIÇÃO DE PARADA (CASO 2)

TBRG TBRG TBRG

SDA

Afirmar SDA SCL cai antes de SDA subir,


definir BCLIF
SCL

CANETA

BCLIF

P '0'

SSPIF '0'

ÿ 2003 Microchip Technology Inc. DS39582B-página 109


Machine Translated by Google

PIC16F87XA
NOTAS:

DS39582B-página 110 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
10.0 UNIVERSAL ENDEREÇAVEL A USART pode ser configurada nos seguintes modos:

SÍNCRONO • Assíncrono (full-duplex)

RECEPTOR ASSÍNCRONO • Síncrono – Mestre (half-duplex)


• Síncrono – Escravo (half-duplex)
TRANSMISSOR (USART)
O bit SPEN (RCSTA<7>) e os bits TRISC<7:6> devem ser
O Receptor Assíncrono Síncrono Universal
configurado para configurar os pinos RC6/TX/CK e RC7/RX/DT
O módulo transmissor (USART) é um dos dois módulos seriais
como o receptor assíncrono síncrono universal
Módulos de E/S. (USART também é conhecido como Serial Transmissor.
Interface de Comunicações ou SCI.) A USART pode ser
configurado como um sistema assíncrono full-duplex que O módulo USART também possui um multiprocessador
pode se comunicar com dispositivos periféricos, como capacidade de comunicação usando detecção de endereço de 9 bits.
terminais CRT e computadores pessoais, ou pode ser
configurado como um sistema síncrono half-duplex que
pode se comunicar com dispositivos periféricos, como A/D
ou circuitos integrados D/A, EEPROMs seriais, etc.

REGISTRO 10-1: TXSTA: REGISTRO DE STATUS DE TRANSMISSÃO E CONTROLE (ENDEREÇO 98h)


R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R-1 R/W-0

CSRC TX9 TXEN SYNC — BRGH TRMT TX9D

pedaço 7 bit 0

pedaço 7 CSRC: bit de seleção da fonte de clock

Modo assíncrono:
Não se importe.

Modo síncrono:
1 = modo Master (relógio gerado internamente pelo BRG)
0 = modo escravo (relógio de fonte externa)
bocado 6 TX9: bit de habilitação de transmissão de 9 bits

1 = Seleciona a transmissão de 9 bits


0 = Seleciona a transmissão de 8 bits

pedaço 5 TXEN: bit de habilitação de transmissão

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

Nota: SREN/CREN substitui TXEN no modo Sync.

bocado 4 SINCRONIZAÇÃO: Bit de seleção do modo USART

1 = modo síncrono
0 = modo assíncrono
parte 3 Não implementado: Leia como '0'
parte 2 BRGH: Bit de seleção de alta taxa de transmissão

Modo assíncrono:
1 = Alta velocidade
0 = Baixa velocidade

Modo síncrono:
Não utilizado neste modo.

pedaço 1 TRMT: Transmitir bit de status do registrador de deslocamento

1 = TSR vazio
0 = TSR cheio

bit 0 TX9D: 9º bit de transmissão de dados, pode ser bit de paridade

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

ÿ 2003 Microchip Technology Inc. DS39582B-página 111


Machine Translated by Google

PIC16F87XA
REGISTRO 10-2: RCSTA: RECEBER STATUS E CONTROLAR REGISTRO (ENDEREÇO 18h)
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R-0 R-0 Rx

ESPANHA RX9 SREN CREN ADDEN FERR OERR RX9D

pedaço 7 bit 0

pedaço 7 SPEN: bit de habilitação da porta serial

1 = Porta serial habilitada (configura os pinos RC7/RX/DT e RC6/TX/CK como pinos de porta serial)
0 = Porta serial desabilitada
bocado 6 RX9: bit de habilitação de recepção de 9 bits

1 = Seleciona a recepção de 9 bits


0 = Seleciona recepção de 8 bits
pedaço 5 SREN: bit de habilitação de recebimento único

Modo assíncrono:
Não se importe.

Modo síncrono – Mestre:


1 = Habilita recepção única
0 = Desativa o recebimento único
Este bit é apagado após a conclusão da recepção.

Modo síncrono – Escravo:


Não se importe.

bocado 4 CREN: bit de habilitação de recepção contínua

Modo assíncrono:
1 = Habilita a recepção contínua
0 = Desativa a recepção contínua

Modo síncrono:
1 = Habilita a recepção contínua até que o bit de habilitação CREN seja apagado (CREN substitui SREN)
0 = Desativa a recepção contínua

parte 3 ADDEN: Bit de habilitação de detecção de endereço

Modo assíncrono de 9 bits (RX9 = 1):


1 = Habilita detecção de endereço, habilita interrupção e carregamento do buffer de recebimento quando RSR<8>
está definido

0 = Desabilita a detecção de endereço, todos os bytes são recebidos e o nono bit pode ser usado como bit de paridade
parte 2 FERR: bit de erro de enquadramento

1 = Erro de enquadramento (pode ser atualizado lendo o registro RCREG e receber o próximo byte válido)
0 = Sem erro de enquadramento

pedaço 1 OERR: bit de erro de saturação

1 = Erro de overrun (pode ser apagado limpando o bit CREN)


0 = Sem erro de saturação

bit 0 RX9D: 9º bit de dados recebidos (pode ser bit de paridade, mas deve ser calculado pelo firmware do usuário)

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

DS39582B-página 112 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
10.1 Gerador de taxa de transmissão Pode ser vantajoso usar a alta taxa de transmissão

USART (BRG) (BRGH = 1) mesmo para clocks de transmissão mais lentos. Isto é
porque a equação FOSC/(16 (X + 1)) pode reduzir o
O BRG suporta os modos assíncrono e síncrono do USART. É um erro de taxa de transmissão em alguns casos.
dedicado de 8 bits
Escrever um novo valor no registrador SPBRG faz com que o
gerador de taxa de transmissão. O registrador SPBRG controla a
Temporizador BRG a ser reiniciado (ou apagado). Isso garante a
período de um temporizador de 8 bits de execução livre. Em assíncrono BRG não espera por um estouro do temporizador antes
modo, o bit BRGH (TXSTA<2>) também controla o baud
emitindo a nova taxa de transmissão.
avaliar. No modo Síncrono, o bit BRGH é ignorado.
A Tabela 10-1 mostra a fórmula para cálculo do
10.1.1 AMOSTRAGEM
taxa de transmissão para diferentes modos USART que só se aplicam
no modo Master (relógio interno). Os dados no pino RC7/RX/DT são amostrados três vezes
por um circuito de detecção de maioria para determinar se um alto ou um
Dada a taxa de transmissão desejada e FOSC, o mais próximo
nível baixo está presente no pino RX.
valor inteiro para o registrador SPBRG pode ser calculado
usando a fórmula da Tabela 10-1. A partir disso, o erro de
taxa de transmissão pode ser determinada.

TABELA 10-1: FÓRMULA DA TAXA DE BAUD


SINCRONIZAR BRGH = 0 (Baixa Velocidade) BRGH = 1 (Alta Velocidade)

0 (Assíncrono) Taxa de transmissão = FOSC/(64 (X + 1)) Taxa de transmissão = FOSC/(16 (X + 1))


1 Taxa de transmissão (síncrona) = FOSC/(4 (X + 1)) N/D

Legenda: X = valor em SPBRG (0 a 255)

TABELA 10-2: REGISTROS ASSOCIADOS AO GERADOR DE TAXA BAUD


Valor em
Valor em:
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

98h TXSTA CSRC TX9 TXEN SYNC — BRGH TRMT TX9D 0000 -010 0000 -010

18h RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x

99h Registro do Gerador de Taxa de Transmissão SPBRG 0000 0000 0000 0000

Legenda: x = desconhecido, - = não implementado, lido como '0'. As células sombreadas não são usadas pelo BRG.

ÿ 2003 Microchip Technology Inc. DS39582B-página 113


Machine Translated by Google

PIC16F87XA
TABELA 10-3: TAXAS DE BAUD PARA MODO ASSÍNCRONO (BRGH = 0)
ESCURO = 20 MHz ESCURO = 16 MHz ESCURO = 10 MHz
BAUD
AVALIAR SPBRG SPBRG SPBRG
% % %
valor valor valor
(K) KBAUD ERRO KBAUD ERRO KBAUD ERRO
(decimal) (decimal) (decimal)
0,3 - - - - - - - - -

1.2 1.221 1,75 255 1.202 0,17 207 1.202 0,17 129
2.4 2.404 0,17 129 2.404 0,17 103 2.404 0,17 64
9.6 9.766 1,73 31 9.615 0,16 25 9.766 1,73 15
19.2 19.531 1,72 15 19.231 0,16 12 19.531 1,72 7
28,8 31.250 8,51 9 27.778 3,55 8 31.250 8,51 4
33,6 34.722 3,34 8 35.714 6,29 6 31.250 6,99 4
57,6 62.500 8,51 4 62.500 8,51 3 52.083 9,58 2
ALTO 1.221 - 255 0,977 - 255 0,610 - 255
BAIXO 312.500 - 0 250.000 - 0 156.250 - 0

ESCURO = 4 MHz ESCURO = 3,6864 MHz


BAUD
AVALIAR SPBRG SPBRG
% %
valor valor
(K) ERRO ERRO
KBAUD (decimal) KBAUD (decimal)
0,3 0,300 0 207 0,3 0 191
1.2 1.202 0,17 51 1.2 0 47
2.4 2.404 0,17 25 2.4 0 23
9.6 8.929 6,99 6 9.6 0 5
19.2 20.833 8,51 2 19.2 0 2
28,8 31.250 8,51 1 28,8 0 1
33,6 - - - - - -

57,6 62.500 8,51 0 57,6 0 0


ALTO 0,244 - 255 0,225 - 255
BAIXO 62.500 - 0 57,6 - 0

TABELA 10-4: TAXAS DE BAUD PARA MODO ASSÍNCRONO (BRGH = 1)


ESCURO = 20 MHz ESCURO = 16 MHz ESCURO = 10 MHz
BAUD
AVALIAR SPBRG SPBRG SPBRG
% % %
valor valor valor
(K) KBAUD ERRO KBAUD ERRO KBAUD ERRO
(decimal) (decimal) (decimal)
0,3 - - - - - - - - -

1.2 - - - - - - - - -

2.4 - - - - - - 2.441 1,71 255


9.6 9.615 0,16 129 9.615 0,16 103 9.615 0,16 64
19.2 19.231 0,16 64 19.231 0,16 51 19.531 1,72 31
28,8 29.070 0,94 42 29.412 2.13 33 28.409 1,36 21
33,6 33.784 0,55 36 33.333 0,79 29 32.895 2.10 18
57,6 59.524 3,34 20 58.824 2.13 16 56.818 1,36 10
ALTO 4.883 - 255 3.906 - 255 2.441 - 255
BAIXO 1250.000 - 0 1.000.000 0 625.000 - 0

ESCURO = 4 MHz ESCURO = 3,6864 MHz


BAUD
AVALIAR SPBRG SPBRG
% %
(K) valor valor
ERRO ERRO
KBAUD (decimal) KBAUD (decimal)
0,3 - - - - - -

1.2 1.202 0,17 207 1.2 0 191


2.4 2.404 0,17 103 2.4 0 95
9.6 9.615 0,16 25 9.6 0 23
19.2 19.231 0,16 12 19.2 0 11
28,8 27.798 3,55 8 28,8 0 7
33,6 35.714 6,29 6 32,9 2.04 6
57,6 62.500 8,51 3 57,6 0 3
ALTO 0,977 - 255 0,9 - 255
BAIXO 250.000 - 0 230,4 - 0

DS39582B-página 114 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
10.2 Modo Assíncrono USART habilitado/desabilitado configurando/apagando o bit de habilitação, TXIE
(PIE1<4>). O bit de sinalização TXIF será definido independentemente do
Neste modo, o USART usa o formato padrão Non-Return to-Zero (NRZ) estado do bit de habilitação TXIE e não pode ser apagado no software. Ele
(um bit de início, oito ou nove bits de dados e um bit de parada). O formato será redefinido somente quando novos dados forem carregados no registro
de dados mais comum é de 8 bits. Um gerador de taxa de transmissão de 8 TXREG. Enquanto o bit de flag TXIF indica o status do registrador TXREG,
bits dedicado no chip pode ser usado para derivar frequências de taxa de outro bit, TRMT (TXSTA<1>), mostra o status do registrador TSR. O bit de
transmissão padrão do oscilador. A USART transmite e recebe primeiro o
status TRMT é um bit somente leitura que é definido quando o registrador
LSb. O transmissor e o receptor são funcionalmente independentes, mas TSR está vazio. Nenhuma lógica de interrupção está vinculada a esse bit,
usam o mesmo formato de dados e taxa de transmissão. O gerador de taxa
portanto, o usuário deve pesquisar esse bit para determinar se o registrador
de transmissão produz um clock, x16 ou x64 da taxa de deslocamento de TSR está vazio.
bits, dependendo do bit BRGH (TXSTA<2>). A paridade não é suportada
pelo hardware, mas pode ser implementada em software (e armazenada
como o nono bit de dados). Nota 1: O registrador TSR não é mapeado na memória de dados,
portanto não está disponível para o usuário.

2: O bit de sinalização TXIF é definido quando o bit de


O modo assíncrono é interrompido durante a suspensão. habilitação TXEN é definido. TXIF é apagado carregando TXREG.

O modo assíncrono é selecionado limpando o bit SYNC (TXSTA<4>). A transmissão é habilitada definindo o bit de habilitação, TXEN (TXSTA<5>).
A transmissão real não ocorrerá até que o registrador TXREG tenha sido

O módulo USART Assíncrono consiste nos seguintes elementos importantes: carregado com dados e o Baud Rate Generator (BRG) tenha produzido um
relógio de deslocamento (Figura 10-2). A transmissão também pode ser
iniciada carregando primeiro o registrador TXREG e depois configurando o
• Gerador de taxa de transmissão
bit de habilitação TXEN. Normalmente, quando a transmissão é iniciada, o
• Circuito de Amostragem registrador TSR está vazio. Nesse ponto, a transferência para o registrador
• Transmissor Assíncrono • Receptor TXREG resultará em uma transferência imediata para o TSR, resultando em
Assíncrono um TXREG vazio. Uma transferência back-to-back é assim possível (Figura
10-3).
10.2.1 TRANSMISSOR ASSÍNCRONO USART
Apagar o bit de habilitação TXEN durante uma transmissão fará com que a
transmissão seja abortada e reinicializará o transmissor. Como resultado, o
O diagrama de blocos do transmissor USART é mostrado na Figura 10-1. O
pino RC6/TX/CK reverterá para alta impedância.
coração do transmissor é o Transmit (Serial) Shift Register (TSR). O
registrador de deslocamento obtém seus dados do buffer de transmissão de
leitura/gravação, TXREG. Para selecionar a transmissão de 9 bits, o bit de transmissão TX9
O registrador TXREG é carregado com dados no software. (TXSTA<6>) deve ser definido e o nono bit deve ser escrito em TX9D
O registrador TSR não é carregado até que o bit Stop tenha sido transmitido (TXSTA<0>). O nono bit deve ser escrito antes de escrever os dados de 8
do carregamento anterior. Assim que o bit de parada é transmitido, o TSR é bits no registrador TXREG. Isso ocorre porque uma gravação de dados no
carregado com novos dados do registrador TXREG (se disponível). Uma vez registrador TXREG pode resultar em uma transferência imediata dos dados
que o registrador TXREG transfere os dados para o registrador TSR (ocorre para o registrador TSR (se o TSR estiver vazio). Nesse caso, um nono bit de

em um TCY), o registrador TXREG fica vazio e o bit sinalizador, TXIF dados incorreto pode ser carregado no registrador TSR.
(PIR1<4>), é definido. Esta interrupção pode ser

FIGURA 10-1: DIAGRAMA DE BLOCO DE TRANSMISSÃO USART

Barramento de dados

TXIF Registro TXREG


ESSA
8
MSb LSb
••• 0 Buffer de
(8) pinos e controle
Registro TSR pino RC6/TX/CK
Interromper

Taxa de transmissão TXEN CLK

TRMT ESPANHA

SPBRG

Gerador de taxa de transmissão


TX9

TX9D

ÿ 2003 Microchip Technology Inc. DS39582B-página 115


Machine Translated by Google

PIC16F87XA
Ao configurar uma Transmissão Assíncrona, 5. Habilite a transmissão configurando o bit TXEN,
Siga esses passos: que também definirá o bit TXIF.

1. Inicialize o registro SPBRG para o 6. Se a transmissão de 9 bits for selecionada, o nono bit
deve ser carregado no bit TX9D.
taxa de transmissão. Se uma taxa de transmissão de alta velocidade for desejada,

definir o bit BRGH (Seção 10.1 “USART Baud 7. Carregar dados para o registro TXREG (inicia
Gerador de Taxa (BRG)”). transmissão).
2. Habilite a porta serial assíncrona limpando 8. Se estiver usando interrupções, certifique-se de que GIE e PEIE
bit SYNC e bit de configuração SPEN. (bits 7 e 6) do registrador INTCON são energizados.
3. Se as interrupções forem desejadas, defina o bit de habilitação TXIE.
4. Se a transmissão de 9 bits for desejada, defina a transmissão
pouco TX9.

FIGURA 10-2: TRANSMISSÃO MESTRA ASSÍNCRONA

Escreva para TXREG


Palavra 1
Saída BRG
(Mudar Relógio)

RC6/TX/CK (pino)
Bit de início Bit 0 Bit 1 Bit 7/8 Parar Bit
Palavra 1
bit TXIF
(Transmissão Buffer
Reg. Bandeira vazia)

Palavra 1
bit TRMT
Transmitir Registro de Turno
(Transmitir Turno
Reg. Bandeira vazia)

FIGURA 10-3: TRANSMISSÃO MESTRA ASSÍNCRONA (COSTAS COM COSTAS)

Escreva para TXREG


Palavra 1 Palavra 2
Saída BRG
(Mudar Relógio)

RC6/TX/CK (pino) Bit de início Bit de início


Bit 0 Bit 1 Bit 7/8 Bit 0
Parar Bit
Palavra 1 Palavra 2
bit TXIF
(Interromper Reg. Flag)

bit TRMT Palavra Palavra 2


(Transmitir Turno 1 Transmissão Reg.
Reg. Bandeira vazia) Transmissão Reg.

Observação: Este diagrama de tempo mostra duas transmissões consecutivas.

TABELA 10-5: REGISTROS ASSOCIADOS À TRANSMISSÃO ASSÍNCRONA

Valor ativado
Valor em:
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

0Bh, 8Bh, INTCON GIE PEIE TMR0IE NÃO RBIE TMR0IF INTF R0IF 0000 000x 0000 000u
10Bh,18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000

18h RCSTA SPEN RX9 SREN CREN — FERR OERR RX9D 0000 -00x 0000 -00x

19h Registro de Transmissão TXREG USART 0000 0000 0000 0000

8 canais TORTA1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000

98h TXSTA CSRC TX9 TXEN SYNC — BRGH TRMT TX9D 0000 -010 0000 -010

99h Registro do Gerador de Taxa de Transmissão SPBRG 0000 0000 0000 0000

Legenda: x = desconhecido, - = locais não implementados lidos como '0'. As células sombreadas não são usadas para transmissão assíncrona.
Nota 1: Os bits PSPIE e PSPIF são reservados em dispositivos de 28 pinos; sempre mantenha esses bits claros.

DS39582B-página 116 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
10.2.2 RECEPTOR ASSÍNCRONO USART é possível que dois bytes de dados sejam recebidos e transferidos
para o RCREG FIFO e um terceiro byte comece a se deslocar
para o registrador RSR. Na detecção do bit Stop do terceiro byte,
O diagrama de blocos do receptor é mostrado na Figura 10-4.
se o registrador RCREG ainda estiver cheio, o bit Overrun Error,
Os dados são recebidos no pino RC7/RX/DT e acionam o bloco
OERR (RCSTA<1>), será setado. A palavra no RSR será perdida.
de recuperação de dados. O bloco de recuperação de dados é na O registrador RCREG pode ser lido duas vezes para recuperar os
verdade um shifter de alta velocidade, operando a x16 vezes a
dois bytes no FIFO. O bit de overrun OERR deve ser apagado no
taxa de transmissão; enquanto o deslocador serial de recepção
software. Isso é feito redefinindo a lógica de recepção (o CREN é
principal opera na taxa de bits ou no FOSC.
limpo e, em seguida, definido). Se o bit OERR for definido, as
Uma vez selecionado o modo Assíncrono, a recepção é habilitada transferências do registrador RSR para o registrador RCREG são
configurando o bit CREN (RCSTA<4>). inibidas e nenhum dado adicional será recebido. É, portanto,
O coração do receptor é o Receiver (Serial) Shift Register (RSR). essencial limpar o bit de erro OERR se estiver definido. O bit de

Após a amostragem do bit de parada, os dados recebidos no RSR erro de enquadramento, FERR (RCSTA<2>), é definido se um bit
são transferidos para o registrador RCREG (se estiver vazio). Se de parada for detectado como limpo. O bit FERR e o 9º bit de
recepção são armazenados em buffer da mesma forma que os
a transferência estiver completa, o bit de flag, RCIF (PIR1<5>), é
definido. A interrupção real pode ser habilitada/desabilitada dados de recepção. A leitura do RCREG carregará os bits RX9D
e FERR com novos valores, portanto, é essencial que o usuário
configurando/apagando o bit de habilitação, RCIE (PIE1<5>). O
bit de sinalização RCIF é um bit somente leitura que é limpo pelo leia o registro RCSTA antes de ler o registro RCREG para não

hardware. Ele é apagado quando o registrador RCREG foi lido e perder as informações antigas de FERR e RX9D.
está vazio. O RCREG é um registrador de buffer duplo (ou seja, é
um FIFO de duas profundidades). Isto

FIGURA 10-4: USART RECEBER DIAGRAMA DE BLOCO

x64 Baud Rate CLK


OERR FERR
ELES ACREDITAM

SOMBRIO
SPBRG
÷64 MSb Registro RSR LSb
ou
Gerador de taxa de transmissão ÷16 ••• 1 0 Iniciar
Parar (8) 7

RC7/RX/DT
Buffer de Dados
RX9
pinos e controle Recuperação

ESPANHA Registro RX9D RCREG


FIFO

RCIF
Interromper Barramento de dados

RCIE

ÿ 2003 Microchip Technology Inc. DS39582B-página 117


Machine Translated by Google

PIC16F87XA
FIGURA 10-5: RECEPÇÃO ASSÍNCRONA

Começar Começar Começar


RX (pino)
pedaço
bit 0 bit 1 pouco 7/8 Parar pedaço bit 0 bit 7/8 bit de parada pouco 7/8 Pare
bit pedaço pedaço

Turno Rcv
Registro

Registro de buffer Rcv


Palavra 1 Palavra 2

RCREG RCREG
Leia Rcv

Registro de buffer
RCREG

RCIF

(Bandeira de interrupção)

bit OERR

ELES ACREDITAM

Nota: Este diagrama de tempo mostra três palavras que aparecem na entrada RX. O RCREG (Receive Buffer) é lido após a terceira palavra, fazendo com que o bit OERR (Overrun Error) seja definido.

Ao configurar uma Recepção Assíncrona, siga 6. O bit de sinalização RCIF será definido quando a recepção
estes passos: estiver completa e uma interrupção será gerada se habilitada
bit RCIE está definido.
1. Inicialize o registro SPBRG para o
taxa de transmissão. Se uma taxa de transmissão de alta velocidade for desejada, 7. Leia o registro RCSTA para obter o nono bit (se
definir o bit BRGH (Seção 10.1 “USART Baud habilitado) e determine se ocorreu algum erro
Gerador de Taxa (BRG)”). durante a recepção.

2. Habilite a porta serial assíncrona limpando 8. Leia os dados recebidos de 8 bits lendo o
bit SYNC e bit de configuração SPEN. registro RCREG.

3. Se as interrupções forem desejadas, defina o bit de habilitação 9. Se ocorrer algum erro, limpe o erro limpando
RCIE. habilita o bit CREN.

4. Se a recepção de 9 bits for desejada, defina o bit RX9. 10. Se estiver usando interrupções, certifique-se de que GIE e PEIE
(bits 7 e 6) do registrador INTCON são energizados.
5. Habilite a recepção configurando o bit CREN.

TABELA 10-6: REGISTROS ASSOCIADOS A RECEPÇÃO ASSÍNCRONA

Valor ativado
Valor em:
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

0Bh, 8Bh, INTCON GIE PEIE TMR0IE NÃO RBIE TMR0IF INTF R0IF 0000 000x 0000 000u
10Bh,18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000

18h RCSTA SPEN RX9 SREN CREN — FERR OERR RX9D 0000 -00x 0000 -00x

1Ah Registro de recebimento RCREG USART 0000 0000 0000 0000

8 canais TORTA1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000

98h TXSTA CSRC TX9 TXEN SYNC — BRGH TRMT TX9D 0000 -010 0000 -010

99h Registro do Gerador de Taxa de Transmissão SPBRG 0000 0000 0000 0000

Legenda: x = desconhecido, - = locais não implementados lidos como '0'. As células sombreadas não são usadas para recepção assíncrona.
Nota 1: Os bits PSPIE e PSPIF são reservados em dispositivos de 28 pinos; sempre mantenha esses bits claros.

DS39582B-página 118 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
10.2.3 CONFIGURANDO O MODO DE 9 BITS COM • O bit de sinalização RCIF será definido quando a recepção for
DETECÇÃO DE ENDEREÇO completo, e uma interrupção será gerada se o bit de habilitação
RCIE foi definido.
Ao configurar uma Recepção Assíncrona com
detecção de endereço habilitada: • Leia o registrador RCSTA para obter o nono bit e determinar se ocorreu
algum erro durante a recepção.
• Inicialize o registrador SPBRG para a taxa de transmissão apropriada.
• Leia os dados recebidos de 8 bits lendo o registrador RCREG
Se desejar uma taxa de transmissão de alta velocidade, defina o bit
para determinar se o dispositivo está sendo endereçado.
BRGH.

• Habilite a porta serial assíncrona limpando o bit SYNC e configurando


• Se ocorrer algum erro, limpe o erro limpando
o bit SPEN.
habilita o bit CREN.
• Se as interrupções forem desejadas, defina o bit de habilitação RCIE.
• Se o dispositivo foi endereçado, limpe o
• Defina o bit RX9 para habilitar a recepção de 9 bits. Bit ADDEN para permitir que bytes de dados e bytes de endereço
• Configure ADDEN para habilitar a detecção de endereço. sejam lidos no buffer de recebimento e interrompam a CPU.
• Habilite a recepção configurando o bit de habilitação CREN.

FIGURA 10-6: USART RECEBER DIAGRAMA DE BLOCO

x64 Baud Rate CLK


OERR FERR
ELES ACREDITAM

SOMBRIO
SPBRG
÷ 64 MSb Registro RSR LSb
ou
Gerador de taxa de transmissão ÷ 16 Pare (8) 7 ••• 10 Começar

RC7/RX/DT
Buffer de pinos Dados
RX9
e controle Recuperação

ESPANHA

RX9 Permitir
ADICIONAR Carga de

Receber
RX9
Amortecedor
ADICIONAR
RSR<8> 8

RX9D Registro RCREG


FIFO

RCIF
Interromper Barramento de dados

RCIE

ÿ 2003 Microchip Technology Inc. DS39582B-página 119


Machine Translated by Google

PIC16F87XA
FIGURA 10-7: RECEPÇÃO ASSÍNCRONA COM DETECÇÃO DE ENDEREÇO

Começar Começar
RC7/RX/DT
pedaço bit 0 bit 1 bocado 8 Pare pedaço bit 0 bit 8 Parar
(alfinete)
pedaço pedaço

Carregar RSR

Palavra 1
Bit 8 = 0, Byte de Dados Bit 8 = 1, Byte de Endereço
RCREG
Ler

RCIF

Nota: Este diagrama de tempo mostra um byte de dados seguido por um byte de endereço. O byte de dados não é lido no RCREG (Receive Buffer)
porque ADD = 1.

FIGURA 10-8: RECEPÇÃO ASSÍNCRONA COM BYTE DE ENDEREÇO PRIMEIRO

Começar Começar
RC7/RX/DT pedaço bit 0 bit 1 bocado 8 Pare pedaço bit 0 bit 8 Parar
(alfinete)
pedaço pedaço

Carregar RSR

Palavra 1
Bit 8 = 1, Byte de Endereço Bit 8 = 0, Byte de Dados
RCREG
Ler

RCIF

Nota: Este diagrama de tempo mostra um byte de dados seguido por um byte de endereço. O byte de dados não é lido no RCREG (Receive Buffer)
porque ADDEN não foi atualizado e ainda = 0.

TABELA 10-7: REGISTOS ASSOCIADOS A RECEPÇÃO ASSÍNCRONA

Valor ativado
Valor em:
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

0Bh, 8Bh, INTCON GIE PEIE TMR0IE NÃO RBIE TMR0IF INTF R0IF 0000 000x 0000 000u
10Bh,18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000

18h RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x

1Ah Registro de recebimento RCREG USART 0000 0000 0000 0000

8 canais TORTA1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000

98h TXSTA CSRC TX9 TXEN SYNC — BRGH TRMT TX9D 0000 -010 0000 -010

99h Registro do Gerador de Taxa de Transmissão SPBRG 0000 0000 0000 0000

Legenda: x = desconhecido, - = locais não implementados lidos como '0'. As células sombreadas não são usadas para recepção assíncrona.
Nota 1: Os bits PSPIE e PSPIF são reservados em dispositivos de 28 pinos; sempre mantenha esses bits claros.

DS39582B-página 120 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
10.3 Modo Mestre Apagar o bit de habilitação TXEN durante uma transmissão fará
com que a transmissão seja abortada e reinicializará o transmissor.
Síncrono USART
Os pinos DT e CK reverterão para alta impedância. Se o bit CREN
No modo Synchronous Master, os dados são transmitidos de forma ou o bit SREN for definido durante uma transmissão, a transmissão
half-duplex (ou seja, transmissão e recepção não ocorrem ao é abortada e o pino DT reverte para um estado de alta impedância
mesmo tempo). Ao transmitir dados, a recepção é inibida e vice- (para uma recepção).
versa. O modo síncrono é inserido configurando o bit, SYNC O pino CK permanecerá como saída se o bit CSRC estiver definido
(TXSTA<4>). Além disso, o bit de habilitação, SPEN (RCSTA<7>), (relógio interno). A lógica do transmissor, no entanto, não é
é definido para configurar os pinos de E/S RC6/TX/CK e RC7/RX/ resetada, embora esteja desconectada dos pinos. Para reinicializar
DT para as linhas CK (clock) e DT (dados), respectivamente. O o transmissor, o usuário deve limpar o bit TXEN.
modo Master indica que o processador transmite o clock master na Se o bit SREN estiver definido (para interromper uma transmissão
linha CK. O modo Master é inserido configurando o bit, CSRC em andamento e receber uma única palavra), depois que a única
(TXSTA<7>). palavra for recebida, o bit SREN será apagado e a porta serial
voltará a transmitir, pois o bit TXEN ainda está definido.
A linha DT mudará imediatamente do modo de recepção de alta
10.3.1 TRANSMISSÃO MESTRA SÍNCRONA USART impedância para transmitir e começar a dirigir.
Para evitar isso, o bit TXEN deve ser apagado.

O diagrama de blocos do transmissor USART é mostrado na Figura Para selecionar a transmissão de 9 bits, o bit TX9 (TXSTA<6>)
10-6. O coração do transmissor é o Transmit (Serial) Shift Register deve ser definido e o nono bit deve ser escrito no bit TX9D
(TSR). O registrador de deslocamento obtém seus dados do (TXSTA<0>). O nono bit deve ser escrito antes de escrever os
registrador Read/Write Transmit Buffer, TXREG. O registrador dados de 8 bits no registrador TXREG. Isso ocorre porque uma
TXREG é carregado com dados no software. O registrador TSR gravação de dados no TXREG pode resultar em uma transferência
não é carregado até que o último bit tenha sido transmitido do imediata dos dados para o registrador TSR (se o TSR estiver
carregamento anterior. Assim que o último bit é transmitido, o TSR vazio). Se o TSR estava vazio e o TXREG foi escrito antes de
é carregado com novos dados do TXREG (se disponível). Uma vez escrever o “novo” TX9D, o valor “presente” do bit TX9D é carregado.
que o registrador TXREG transfere os dados para o registrador
TSR (ocorre em um TCYCLE), o TXREG fica vazio e o bit de
Etapas a seguir ao configurar um mestre síncrono
interrupção, TXIF (PIR1<4>), é definido. A interrupção pode ser Transmissão:
habilitada/desabilitada configurando/apagando o bit de habilitação
TXIE (PIE1<4>). O bit de sinalização TXIF será definido 1. Inicialize o registro SPBRG para a taxa de transmissão
independentemente do estado do bit de habilitação TXIE e não apropriada (Seção 10.1 “Gerador de taxa de transmissão
pode ser apagado no software. Ele será redefinido somente quando USART (BRG)”).
novos dados forem carregados no registro TXREG. Enquanto o bit 2. Habilite a porta serial mestre síncrona configurando os bits
de flag TXIF indica o status do registrador TXREG, outro bit, TRMT SYNC, SPEN e CSRC.
(TXSTA<1>), mostra o status do registrador TSR. TRMT é um bit 3. Se as interrupções forem desejadas, defina o bit de habilitação TXIE.
somente leitura que é definido quando o TSR está vazio. Nenhuma 4. Se desejar uma transmissão de 9 bits, defina o bit TX9.
lógica de interrupção está vinculada a esse bit, portanto, o usuário
5. Habilite a transmissão configurando o bit TXEN.
deve pesquisar esse bit para determinar se o registrador TSR está
6. Se a transmissão de 9 bits for selecionada, o nono bit deve
vazio. O TSR não é mapeado na memória de dados, portanto, não
ser carregado no bit TX9D.
está disponível para o usuário.
7. Inicie a transmissão carregando os dados no registrador
TXREG.
A transmissão é habilitada definindo o bit de habilitação, TXEN
(TXSTA<5>). A transmissão real não ocorrerá até que o registro 8. Se estiver usando interrupções, certifique-se de que GIE e
TXREG tenha sido carregado com dados. PEIE (bits 7 e 6) do registrador INTCON estejam definidos.
O primeiro bit de dados será deslocado na próxima borda de subida
disponível do clock na linha CK. A saída de dados é estável em
torno da borda descendente do relógio síncrono (Figura 10-9). A
transmissão também pode ser iniciada carregando primeiro o
registrador TXREG e depois definindo o bit TXEN (Figura 10-10).
Isso é vantajoso quando baixas taxas de transmissão são
selecionadas, pois o BRG é mantido em Reset quando os bits
TXEN, CREN e SREN estão limpos. A configuração do bit de
habilitação TXEN iniciará o BRG, criando um relógio de
deslocamento imediatamente. Normalmente, quando a transmissão
é iniciada, o registrador TSR está vazio, então uma transferência
para o registrador TXREG resultará em uma transferência imediata
para o TSR, resultando em um TXREG vazio. Transferências
consecutivas são possíveis.

ÿ 2003 Microchip Technology Inc. DS39582B-página 121


Machine Translated by Google

PIC16F87XA
TABELA 10-8: REGISTROS ASSOCIADOS À TRANSMISSÃO MESTRE SÍNCRONA

Valor em
Valor em:
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

0Bh, 8Bh, INTCON GIE PEIE TMR0IE NÃO RBIE TMR0IF INTF R0IF 0000 000x 0000 000u
10Bh,18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000

18h RCSTA SPEN RX9 SREN CREN — FERR OERR RX9D 0000 -00x 0000 -00x

19h Registro de Transmissão TXREG USART 0000 0000 0000 0000

8 canais TORTA1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000

98h TXSTA CSRC TX9 TXEN SYNC — BRGH TRMT TX9D 0000 -010 0000 -010

99h Registro do Gerador de Taxa de Transmissão SPBRG 0000 0000 0000 0000

Legenda: x = desconhecido, - = não implementado, lido como '0'. As células sombreadas não são usadas para transmissão mestre síncrona.
Nota 1: Os bits PSPIE e PSPIF são reservados em dispositivos de 28 pinos; sempre mantenha esses bits claros.

FIGURA 10-9: TRANSMISSÃO SÍNCRONA

Q1Q2 Q3 Q4 Q1Q2 Q3 Q4Q1Q2Q3 Q4Q1Q2Q3 Q4Q1 Q2 Q3 Q4 Q3 Q4 Q1Q2 Q3Q4 Q1Q2Q3Q4 Q1Q2Q3 Q4Q1 Q2Q3Q4 Q1Q2Q3 Q4Q1Q2Q3 Q4

RC7/RX/DT
bit 0 pedaço 1 parte 2 pedaço 7 bit 0 pedaço 1 pedaço 7
alfinete

Palavra 1 Palavra 2
RC6/TX/CK
alfinete

Escrever para

TXREG reg
Escrever palavra 1 Escrever palavra 2
bit TXIF
(Bandeira de interrupção)

bit TRMT

'1' '1'
bit TXEN

Nota: Modo Sync Master; SPBRG = 0. Transmissão contínua de duas palavras de 8 bits.

FIGURA 10-10: TRANSMISSÃO SÍNCRONA (ATRAVÉS DE TXEN)

pino RC7/RX/DT bit 0 pedaço 1 parte 2 bocado 6 pedaço 7

pino RC6/TX/CK

Escrever para

TXREG Reg

bit TXIF

bit TRMT

bit TXEN

DS39582B-página 122 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
10.3.2 RECEPÇÃO MASTER SÍNCRONA USART dados. A leitura do registrador RCREG carregará o bit RX9D
com um novo valor, portanto, é essencial que o usuário
para ler o registrador RCSTA antes de ler o RCREG em
Uma vez selecionado o modo Síncrono, a recepção é para não perder as informações antigas do RX9D.
habilitado configurando um bit de habilitação, SREN
(RCSTA<5>), ou bit de habilitação, CREN (RCSTA<4>). Dados Ao configurar uma recepção mestre síncrona:
é amostrado no pino RC7/RX/DT na borda descendente do 1. Inicialize o registro SPBRG para o
o relógio. Se o bit de habilitação SREN estiver definido, apenas um único taxa de transmissão (Seção 10.1 "Taxa de transmissão USART
palavra é recebida. Se o bit de habilitação CREN estiver definido, a Gerador (BRG)”).
recepção é contínua até que CREN seja apagado. Se ambos os bits
2. Habilite a porta serial mestre síncrona
definido, o CREN tem precedência. Depois de cronometrar o último bit,
configuração dos bits SYNC, SPEN e CSRC.
os dados recebidos no Receive Shift Register (RSR)
3. Certifique-se de que os bits CREN e SREN estejam limpos.
é transferido para o registrador RCREG (se estiver vazio).
Quando a transferência estiver completa, interrompa o bit de flag, RCIF 4. Se as interrupções forem desejadas, defina o bit de habilitação
RCIE.
(PIR1<5>), está definido. A interrupção real pode ser habilitada/
desabilitado configurando/apagando o bit de habilitação, RCIE 5. Se a recepção de 9 bits for desejada, defina o bit RX9.
(TORTA1<5>). O bit de sinalização RCIF é um bit somente leitura que é 6. Se for necessária uma única recepção, defina o bit SREN.
redefinido pelo hardware. Neste caso, é reiniciado quando o Para recepção contínua, defina o bit CREN.
O registrador RCREG foi lido e está vazio. o 7. O bit sinalizador de interrupção RCIF será definido quando a recepção
RCREG é um registrador de buffer duplo (ou seja, é um FIFO de duas está completo e uma interrupção será gerada se
profundidades). É possível que dois bytes de dados sejam habilitar bit RCIE foi definido.
recebido e transferido para o RCREG FIFO e um
8. Leia o registro RCSTA para obter o nono bit (se
terceiro byte para começar a mudar para o registrador RSR. No
habilitado) e determine se ocorreu algum erro
clock do último bit do terceiro byte, se o RCREG
durante a recepção.
registrador ainda está cheio, então bit de erro de superação, OERR
9. Leia os dados recebidos de 8 bits lendo o
(RCSTA<1>), está definido. A palavra no RSR será perdida.
registro RCREG.
O registrador RCREG pode ser lido duas vezes para recuperar o
dois bytes no FIFO. O bit OERR deve ser limpo em 10. Se ocorrer algum erro, limpe o erro limpando
Bit CREN.
software (limpando o bit CREN). Se o bit OERR estiver definido,
transferências do RSR para o RCREG são inibidas 11. Se estiver usando interrupções, certifique-se de que GIE e PEIE
é essencial limpar o bit OERR se estiver definido. O nono (bits 7 e 6) do registrador INTCON são energizados.
o bit de recebimento é armazenado em buffer da mesma forma que o bit de recebimento

TABELA 10-9: REGISTROS ASSOCIADOS À RECEPÇÃO MASTER SÍNCRONA

Valor em
Valor em:
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

0Bh, 8Bh, INTCON GIE PEIE TMR0IE NÃO RBIE TMR0IF INTF R0IF 0000 000x 0000 000u
10Bh,18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000

18h RCSTA SPEN RX9 SREN CREN — FERR OERR RX9D 0000 -00x 0000 -00x

1Ah Registro de recebimento RCREG USART 0000 0000 0000 0000

8 canais TORTA1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000

98h TXSTA CSRC TX9 TXEN SYNC — BRGH TRMT TX9D 0000 -010 0000 -010

99h Registro do Gerador de Taxa de Transmissão SPBRG 0000 0000 0000 0000

Legenda: x = desconhecido, - = não implementado, lido como '0'. As células sombreadas não são usadas para recepção mestre síncrona.
Nota 1: Os bits PSPIE e PSPIF são reservados em dispositivos de 28 pinos; sempre mantenha esses bits claros.

ÿ 2003 Microchip Technology Inc. DS39582B-página 123


Machine Translated by Google

PIC16F87XA
FIGURA 10-11: RECEPÇÃO SÍNCRONA (MODO MASTER, SREN)

Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4

RC7/RX/DT
bit 0 pedaço 1 parte 2 parte 3 bocado 4 pedaço 5 bocado 6 pedaço 7
alfinete

RC6/TX/CK
alfinete

Escrever para

bit SREN

bit SREN

bit CREN '0' '0'

bit RCIF
(Interromper)

Ler
RXREG

Nota: O diagrama de temporização demonstra o modo Sync Master com bit SREN = 1 e bit BRG = 0.

10.4 Modo Escravo Síncrono USART Ao configurar uma Transmissão Slave Síncrona,
Siga esses passos:
O modo escravo síncrono difere do modo mestre
1. Habilite a porta serial escrava síncrona definindo os bits SYNC
no fato de que o relógio de mudança é fornecido externamente em
e SPEN e o bit de limpeza
o pino RC6/TX/CK (em vez de ser fornecido internamente
CSRC.
no modo Mestre). Isso permite que o dispositivo transfira ou
2. Limpe os bits CREN e SREN.
receber dados enquanto estiver no modo Sleep. O modo escravo é
inserido pelo bit de limpeza, CSRC (TXSTA<7>). 3. Se as interrupções forem desejadas, defina o bit de habilitação
ESSA.
10.4.1 TRANSMISSÃO DE ESCRAVO SÍNCRONO 4. Se a transmissão de 9 bits for desejada, defina o bit TX9.
USART
5. Habilite a transmissão definindo o bit de habilitação
A operação do mestre e escravo síncrono CHEN.
modos é idêntico, exceto no caso do modo Sleep. 6. Se a transmissão de 9 bits for selecionada, o nono bit
Se duas palavras forem gravadas no TXREG e, em seguida, o deve ser carregado no bit TX9D.

instrução SLEEP for executada, ocorrerá o seguinte: 7. Inicie a transmissão carregando dados no TXREG
registro.
a) A primeira palavra será imediatamente transferida para o
TSR registrar e transmitir. 8. Se estiver usando interrupções, certifique-se de que GIE e PEIE
(bits 7 e 6) do registrador INTCON são energizados.
b) A segunda palavra permanecerá no registrador TXREG. c) O
bit de sinalização TXIF não será definido. d) Quando a primeira
palavra for deslocada do TSR,
o registrador TXREG irá transferir a segunda palavra
para o TSR e o bit de flag TXIF agora será definido. e)
Se o bit de habilitação TXIE estiver definido, a interrupção será ativada
o chip do Sleep e se a interrupção global for
habilitado, o programa irá ramificar para a interrupção
vetor (0004h).

DS39582B-página 124 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
TABELA 10-10: REGISTROS ASSOCIADOS À TRANSMISSÃO SÍNCRONA DE ESCRAVO

Valor em
Valor em:
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

0Bh, 8Bh, INTCON GIE PEIE TMR0IE NÃO RBIE TMR0IF INTF R0IF 0000 000x 0000 000u
10Bh,18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000

18h RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x

19h Registro de Transmissão TXREG USART 0000 0000 0000 0000

8 canais TORTA1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000

98h TXSTA CSRC TX9 TXEN SYNC — BRGH TRMT TX9D 0000 -010 0000 -010

99h Registro do Gerador de Taxa de Transmissão SPBRG 0000 0000 0000 0000

Legenda: x = desconhecido, - = não implementado, lido como '0'. As células sombreadas não são usadas para transmissão síncrona de escravo.
Nota 1: Os bits PSPIE e PSPIF são reservados em dispositivos de 28 pinos; sempre mantenha esses bits claros.

10.4.2 RECEPÇÃO SÍNCRONA DE ESCRAVO USART Ao configurar uma Recepção Slave Síncrona,
Siga esses passos:

A operação do mestre e escravo síncrono 1. Habilite a porta serial mestre síncrona


modos é idêntico, exceto no caso do Sleep bits de configuração SYNC e SPEN e bit de limpeza
modo. Bit SREN é um “don't care” no modo Slave. CSRC.

2. Se as interrupções forem desejadas, defina o bit de habilitação RCIE.


Se o recebimento estiver habilitado configurando o bit CREN antes do
instrução SLEEP, então uma palavra pode ser recebida durante 3. Se a recepção de 9 bits for desejada, defina o bit RX9.
Dorme. Ao receber completamente a palavra, o registrador RSR 4. Para habilitar a recepção, defina o bit de habilitação CREN.
transferirá os dados para o registrador RCREG e se 5. O bit de sinalização RCIF será definido quando a recepção for
O bit de habilitação do bit RCIE é definido, a interrupção gerada completo e uma interrupção será gerada se
despertar o chip do sono. Se a interrupção global for habilitar bit RCIE foi definido.
habilitado, o programa irá desviar para o vetor de interrupção
6. Leia o registro RCSTA para obter o nono bit (se
(0004h).
habilitado) e determine se ocorreu algum erro
durante a recepção.
7. Leia os dados recebidos de 8 bits lendo o
registro RCREG.
8. Se ocorrer algum erro, limpe o erro limpando
Bit CREN.

9. Se estiver usando interrupções, certifique-se de que GIE e PEIE


(bits 7 e 6) do registrador INTCON são energizados.

TABELA 10-11: REGISTROS ASSOCIADOS A RECEPÇÃO SÍNCRONA DE ESCRAVOS

Valor em
Valor em:
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
Reinicializações

0Bh, 8Bh, INTCON GIE PEIE TMR0IE NÃO RBIE TMR0IF INTF R0IF 0000 000x 0000 000u
10Bh,18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000

18h RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x

1Ah Registro de recebimento RCREG USART 0000 0000 0000 0000

8 canais TORTA1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000

98h TXSTA CSRC TX9 TXEN SYNC — BRGH TRMT TX9D 0000 -010 0000 -010

99h Registro do Gerador de Taxa de Transmissão SPBRG 0000 0000 0000 0000

Legenda: x = desconhecido, - = não implementado, lido como '0'. As células sombreadas não são usadas para recepção síncrona de escravos.
Nota 1: Os bits PSPIE e PSPIF são reservados em dispositivos de 28 pinos, sempre mantenha esses bits limpos.

ÿ 2003 Microchip Technology Inc. DS39582B-página 125


Machine Translated by Google

PIC16F87XA
NOTAS:

DS39582B-página 126 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
11.0 MÓDULO CONVERSOR O módulo A/D possui quatro registradores. Esses registros são:

ANALÓGICO PARA DIGITAL (A/D) • Registro Alto de Resultado A/D (ADRESH)


• Registro Baixo de Resultado A/D (ADRESL)
O módulo Conversor Analógico-Digital (A/D) tem cinco
• Registro de Controle A/D 0 (ADCON0)
entradas para os dispositivos de 28 pinos e oito para os de 40/44 pinos
dispositivos. • Registro de Controle A/D 1 (ADCON1)

A conversão de um sinal de entrada analógico resulta em um O registro ADCON0, mostrado no Registro 11-1, controla a
número digital de 10 bits correspondente. O módulo A/D operação do módulo A/D. O ADCON1
tem entrada de referência de alta e baixa tensão que é selecionável registrador, mostrado no registrador 11-2, configura as funções dos
por software para alguma combinação de VDD, VSS, RA2 pinos da porta. Os pinos da porta podem ser configurados
ou RA3. como entradas analógicas (RA3 também pode ser a tensão
referência) ou como E/S digital.
O conversor A/D tem a característica única de poder
para operar enquanto o dispositivo estiver no modo de suspensão. Para Informações adicionais sobre o uso do módulo A/D podem ser
operar em Sleep, o relógio A/D deve ser derivado de encontrado na família PICmicro® Mid-Range MCU
oscilador RC interno do A/D. Manual de referência (DS33023).

REGISTRO 11-1: REGISTRO ADCON0 (ENDEREÇO 1Fh)


R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0
ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE — ADON
pedaço 7 bit 0

bit 7-6 ADCS1:ADCS0: bits de seleção do relógio de conversão A/D (bits ADCON0 em negrito)
ADCON1 ADCON0
Conversão de relógio
<ADCS2> <ADCS1:ADCS0>

0 00 ESCURO/2

0 01 ESCURO/8

0 10 ESCURO/32

0 11 FRC (relógio derivado do oscilador A/D RC interno)

1 00 ESCURO/4

1 01 ESCURO/16

1 10 ESCURO/64

1 11 FRC (relógio derivado do oscilador A/D RC interno)

bit 5-3 CHS2:CHS0: bits de seleção de canal analógico


000 = Canal 0 (AN0)
001 = Canal 1 (AN1)
010 = Canal 2 (AN2)
011 = Canal 3 (AN3)
100 = Canal 4 (AN4)
101 = Canal 5 (AN5)
110 = Canal 6 (AN6)
111 = Canal 7 (AN7)

Nota: Os dispositivos PIC16F873A/876A implementam apenas os canais A/D de 0 a 4; a


as seleções não implementadas são reservadas. Não selecione nenhum não implementado
canais com esses dispositivos.
bit 2 GO/DONE: bit de status de conversão A/D
Quando ADO = 1:
1 = Conversão A/D em andamento (ajustar este bit inicia a conversão A/D que é automaticamente
apagado pelo hardware quando a conversão A/D estiver completa)
0 = conversão A/D não em andamento
pedaço 1 Não implementado: Leia como '0'
bit 0 ADON: A/D em bit

1 = O módulo conversor A/D está ligado


0 = O módulo conversor A/D está desligado e não consome corrente operacional

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

ÿ 2003 Microchip Technology Inc. DS39582B-página 127


Machine Translated by Google

PIC16F87XA
REGISTRO 11-2: REGISTRO ADCON1 (ENDEREÇO 9Fh)
R/W-0 R/W-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0
ADFM ADCS2 — — PCFG3 PCFG2 PCFG1 PCFG0

pedaço 7 bit 0

bit 7 ADFM: bit de seleção de formato de resultado A/D

1 = Justificado à direita. Seis (6) bits mais significativos de ADRESH são lidos como '0'.
0 = justificado à esquerda. Seis (6) bits menos significativos de ADRSL são lidos como '0'.
bit 6 ADCS2: Bit de seleção do relógio de conversão A/D (bits ADCON1 na área sombreada e em negrito)
ADCON1 ADCON0
Conversão de relógio
<ADCS2> <ADCS1:ADCS0>
0 00 ESCURO/2

0 01 ESCURO/8

0 10 ESCURO/32

0 11 FRC (relógio derivado do oscilador A/D RC interno)


1 00 ESCURO/4

1 01 ESCURO/16

1 10 ESCURO/64

1 11 FRC (relógio derivado do oscilador A/D RC interno)

bit 5-4 Não implementado: lido como '0'


bit 3-0 PCFG3:PCFG0: bits de controle de configuração da porta A/D
PCFG
AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0 VREF+ VREF- C/R
<3:0>
0000 AA AA UMA UMA Um AVDD VSS 8/0

0001 AAA AVREF + A AA AN3 VSS 7/1

0010 DDD A UMA UMA A AVDD VSS 5/0

0011 DD D AVREF+ A AA AN3 VSS 4/1

0100 DDD A D A AVDD VSS 3/0

0101 DD D DVREF+ D AA AN3 VSS 2/1

011x DD DD D D DD — — 0/0

1000 AAA AVREF + VREF- AA AN3 AN2 6/2

1001 DD AA UMA UMA A AVDD VSS 6/0

1010 BOM AVREF+ A AA AN3 VSS 5/1

1011 DDA AVREF+ VREF- AA AN3 AN2 4/2

1100 DD D AVREF+ VREF- AA AN3 AN2 3/2

1101 DD D DVREF+ VREF- AA AN3 AN2 2/2

1110 DDDD D D DAVDD VSS 1/0

1111 DD D DVREF+ VREF- DA AN3 AN2 1/2

A = Entrada analógica D = E/S digital


C/R = # de canais de entrada analógica/# de referências de tensão A/D

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

Nota: Em qualquer dispositivo Reset, os pinos da porta que são multiplexados com funções analógicas (ANx)
são forçados a ser uma entrada analógica.

DS39582B-página 128 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
Os registradores ADRESH:ADRESL contêm os registros de 10 bits 2. Configure a interrupção A/D (se desejar):
resultado da conversão A/D. Quando a conversão A/D • Limpar bit ADIF
está completo, o resultado é carregado neste resultado A/D • Definir bit ADIE
par de registradores, o bit GO/DONE (ADCON0<2>) é apagado
• Defina ESTE bit
e o bit de sinalização de interrupção A/D ADIF é definido. O bloco
• Definir bit GIE
diagrama do módulo A/D é mostrado na Figura 11-1.
3. Aguarde o tempo de aquisição necessário.
Após o módulo A/D ter sido configurado conforme desejado,
4. Inicie a conversão:
o canal selecionado deve ser adquirido antes que a conversão seja
iniciada. Os canais de entrada analógica devem • Definir bit GO/DONE (ADCON0)
têm seus bits TRIS correspondentes selecionados como entradas. 5. Aguarde a conclusão da conversão A/D:

Para determinar o tempo de amostragem, consulte a Seção 11.1 “A/D • Polling para que o bit GO/DONE seja apagado
Requisitos de aquisição”. Após esta aquisição (interrupções desabilitadas); OU
decorrido o tempo, a conversão A/D pode ser iniciada. • Aguardando a interrupção A/D

Para fazer uma conversão A/D, siga estas etapas: 6. Leia o par de registradores de resultado A/D

(ADRESH:ADRESL), limpe o bit ADIF se necessário.


1. Configure o módulo A/D:
7. Para a próxima conversão, vá para a etapa 1 ou etapa 2
• Configurar pinos analógicos/referência de tensão e E/S
como requerido. O tempo de conversão A/D por bit é
digital (ADCON1)
definido como TAD.
• Selecione o canal de entrada A/D (ADCON0)
• Selecione o relógio de conversão A/D (ADCON0)
• Ligue o módulo A/D (ADCON0)

FIGURA 11-1: DIAGRAMA DE BLOCO A/D


CHS2:CHS0

111
RE2/AN7(1)

110
RE1/AN6(1)

101
RE0/AN5(1)

100
RA5/AN4

011
(Tensão de entrada) RA3/AN3/VREF+

DE ANÚNCIOS 010
Conversor RA2/AN2/VREF

001
VDD RA1/AN1

000
VREF+ RA0/YAN0

(Referência
Tensão)

PCFG3:PCFG0

VREF-

(Referência
Tensão)
VSS
PCFG3:PCFG0

Nota 1: Não disponível em dispositivos de 28 pinos.

ÿ 2003 Microchip Technology Inc. DS39582B-página 129


Machine Translated by Google

PIC16F87XA
11.1 Requisitos de Aquisição A/D diminuiu. Depois que o canal de entrada analógica for
selecionado (alterado), esta aquisição deve ser feita antes
Para que o conversor A/D atinja sua precisão especificada, o que a conversão possa ser iniciada.
capacitor de retenção de carga (CHOLD) deve ser totalmente
Para calcular o tempo mínimo de aquisição, a Equação 11-1
carregado até o nível de tensão do canal de entrada. O modelo de
pode ser usada. Esta equação assume que 1/2 erro LSb é
entrada analógica é mostrado na Figura 11-2. A impedância da
usado (1024 passos para o A/D). O erro de 1/2 LSb é o erro
fonte (RS) e a impedância da chave de amostragem interna (RSS)
máximo permitido para o A/D atingir sua resolução especificada.
afetam diretamente o tempo necessário para carregar o capacitor
CHOLD. A impedância da chave de amostragem (RSS) varia com
a tensão do dispositivo (VDD); consulte a Figura 11-2. A Para calcular o tempo mínimo de aquisição, TACQ, consulte
impedância máxima recomendada para fontes analógicas é o PICmicro® Mid-Range MCU Family Reference Manual
de 2,5 kÿ. À medida que a impedância é diminuída, o tempo de (DS33023).
aquisição pode ser

EQUAÇÃO 11-1: TEMPO DE AQUISIÇÃO

TACQ = Tempo de estabilização do amplificador + tempo de carregamento do capacitor de retenção + coeficiente de temperatura

= TAMP + TC +
= TCOFF 2 µs + TC + [(Temperatura – 25°C)(0,05 µs/°C)]
TC = CHOLD (RIC + RSS + RS) In(1/2047) -
= 120 pF (1 kÿ + 7 kÿ + 10 kÿ) In(0,0004885) 16,47 µs
= 2 µs + 16,47 µs + [(50°C – 25°C)( 0,05 µs/°C) 19,72
TACQ = µs
=

Nota 1: A tensão de referência (VREF) não tem efeito na equação, pois se cancela.
2: O capacitor de retenção de carga (CHOLD) não é descarregado após cada conversão.
3: A impedância máxima recomendada para fontes analógicas é de 2,5 kÿ. Isso é necessário para atender à especificação
de vazamento do pino.

FIGURA 11-2: MODELO DE ENTRADA ANALÓGICA

VDD
Amostragem
Trocar
VT = 0,6 V
RS ANx RIC ÿ 1K SS RSS

CHOLD
E CPIN FUGA ± = Capacitância DAC
VT = 0,6 V 500 nA = 120 pF
5 pF

VSS

Legenda: CPI = capacitância de


6V
VT entrada = tensão 5V
VAZAMENTO limite = corrente de fuga no pino devido a VDD 4V
várias junções 3V
RIC = resistência de interconexão = 2V
SS interruptor de amostragem =
CHOLD capacitância de amostragem/retenção (do DAC)
5 6 7 8 9 10 11
Chave de Amostragem
(kÿ)

DS39582B-página 130 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
11.2 Selecionando o Relógio de Conversão 11.3 Configurando os pinos da porta analógica
A/D
Os registradores ADCON1 e TRIS controlam a operação
O tempo de conversão A/D por bit é definido como TAD. o dos pinos da porta A/D. Os pinos de porta que são desejados como
A conversão A/D requer um mínimo de 12 TAD por 10 bits as entradas analógicas devem ter seus bits TRIS correspondentes
conversão. A fonte do relógio de conversão A/D é definir (entrada). Se o bit TRIS for apagado (saída), o sinal digital
software selecionado. As sete opções possíveis para TAD nível de saída (VOH ou VOL) será convertido.
são:
A operação A/D é independente do estado do
• 2 GROSSOS bits CHS2:CHS0 e os bits TRIS.

• 4 ÁSPERO
Nota 1: Ao ler o registro da porta, qualquer pino
• 8 ÁSPERO configurado como um canal de entrada analógica
• 16 ÁSPERO lido como limpo (um nível baixo). Os pinos configurados

• 32 ÁSPERO como entradas digitais converterão um sinal analógico


entrada. Níveis analógicos em uma entrada configurada
• 64 ÁSPERO
digitalmente não afetarão a conversão
• Oscilador RC do módulo A/D interno (2-6 µs) precisão.
Para conversões A/D corretas, o relógio de conversão A/D
2: Níveis analógicos em qualquer pino definido como
(TAD) deve ser selecionado para garantir um tempo mínimo de TAD uma entrada digital (incluindo o AN7:AN0
de 1,6 µs. pinos) pode fazer com que o buffer de entrada
A Tabela 11-1 mostra os tempos TAD resultantes derivados de consuma corrente que está fora do dispositivo

as frequências de operação do dispositivo e o relógio A/D especificações.


fonte selecionada.

TABELA 11-1: TAD vs. FREQUÊNCIAS MÁXIMAS DE OPERAÇÃO DO DISPOSITIVO (DISPOSITIVOS PADRÃO (F))

Fonte de relógio AD (TAD)


Frequência máxima do dispositivo
Operação ADCS2:ADCS1:ADCS0

2 ÁSPERO 000 1,25 MHz

4 ÁSPERO 100 2,5 MHz

8 ÁSPERO 001 5MHz

16 ÁSPERO 101 10MHz

32 ÁSPERO 010 20MHz

64 ÁSPERO 110 20MHz


RC(1, 2, 3) x11 (Nota 1)

Nota 1: A fonte RC tem um tempo TAD típico de 4 µs, mas pode variar entre 2-6 µs.
2: Quando as frequências do dispositivo são maiores que 1 MHz, a fonte de clock de conversão RC A/D é apenas
recomendado para operação Sleep.
3: Para dispositivos de tensão estendida (LF), consulte a Seção 17.0 “Características elétricas”.

ÿ 2003 Microchip Technology Inc. DS39582B-página 131


Machine Translated by Google

PIC16F87XA
11.4 Conversões A/D é abortado, a próxima aquisição no canal selecionado
é iniciado automaticamente. O bit GO/DONE pode então ser
Apagar o bit GO/DONE durante uma conversão configurado para iniciar a conversão.
abortar a conversão atual. O registro de resultado A/D
Na Figura 11-3, após o bit GO ser definido, a primeira vez
par NÃO será atualizado com o parcialmente concluído
segmento tem um mínimo de TCY e um máximo de TAD.
Amostra de conversão A/D. Ou seja, o ADRESH:ADRESL
registradores continuarão a conter o valor do último Nota: O bit GO/DONE NÃO deve ser definido em
conversão concluída (ou o último valor gravado no a mesma instrução que liga o A/D.
ADRESH: registradores ADRESL). Após a conversão A/D

FIGURA 11-3: CICLOS TAD DE CONVERSÃO A/D

TCY para TAD TAD1 TAD2 TAD3 TAD4 TAD5 TAD6 TAD7 TAD8 TAD9 TAD10 TAD11

b9 b8 b7 b6 b5 b4 b3 b2 b1 b0

A conversão começa

O capacitor de retenção é desconectado da entrada analógica (normalmente 100 ns)

Definir bit GO
O ADRES está carregado
O bit GO é limpo
O bit ADIF é definido

O capacitor de retenção está conectado à entrada analógica

11.4.1 REGISTROS DE RESULTADOS A/D O bit de seleção de formato (ADFM) controla essa justificação.
A Figura 11-4 mostra a operação do resultado A/D
O par de registradores ADRESH:ADRESL é o local
justificação. Os bits extras são carregados com '0's. Quando
onde o resultado A/D de 10 bits é carregado na conclusão
um resultado A/D não substituirá esses locais (A/D desabilitado),
da conversão A/D. Este par de registradores tem 16 bits de largura.
esses registros podem ser usados como dois
O módulo A/D oferece flexibilidade para justificar à esquerda ou à direita
registradores de 8 bits.
o resultado de 10 bits no registrador de resultados de 16 bits. O A/D

FIGURA 11-4: JUSTIFICAÇÃO DO RESULTADO A/D

Resultado de 10 bits

ADFM = 1 ADFM = 0

7 2107 0 7 0765 0

0000 00 0000 00

ENDEREÇO MORADA ENDEREÇO MORADA

Resultado de 10 bits Resultado de 10 bits

Justificado corretamente Justificado à esquerda

DS39582B-página 132 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
11.5 Operação A/D Durante o Sono Nota: Para que o módulo A/D opere no modo de suspensão,
a fonte do relógio A/D deve ser configurada para RC
O módulo A/D pode operar durante o modo Sleep. este
(ADCS1:ADCS0 = 11). Para permitir que a conversão
requer que a fonte de clock A/D seja configurada para RC
ocorra durante a suspensão, certifique-se de que o
(ADCS1:ADCS0 = 11). Quando a fonte do relógio RC é
A instrução SLEEP segue imediatamente a
selecionado, o módulo A/D aguarda um ciclo de instrução
instrução que energiza o bit GO/DONE.
antes de iniciar a conversão. Isso permite que o SONO
instrução a ser executada que elimina todas as
11.6 Efeitos de uma Redefinição
ruído de comutação da conversão. Quando a conversão estiver
completa, o bit GO/DONE será apagado e Um dispositivo Reset força todos os registradores ao seu estado Reset.
o resultado carregado no registrador ADRES. Se o A/D Isso força o módulo A/D a ser desligado e qualquer
interrupção estiver habilitada, o dispositivo acordará conversão é abortada. Todos os pinos de entrada A/D são configurados
Dorme. Se a interrupção A/D não estiver habilitada, o módulo A/D será como entradas analógicas.
então desligado, embora o bit ADON
permanecer definido. O valor que está nos registradores ADRESH:ADRESL é
não modificado para um Power-on Reset. o
Quando a fonte de relógio A/D é outra opção de relógio (não ADRESH:Registros ADRESL conterão dados desconhecidos
RC), uma instrução SLEEP fará com que a conversão atual seja após uma reinicialização ao ligar.
abortada e o módulo A/D seja desligado,
embora o bit ADON permaneça definido.

Desligar o A/D coloca o módulo A/D na posição mais baixa


estado de consumo atual.

TABELA 11-2: REGISTROS/BITS ASSOCIADOS A A/D


Valor ativado Valor ativado
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
POR, BOR MCLR, WDT

0Bh,8Bh, INTCON GIE PEIE TMR0IE NÃO RBIE TMR0IF INTF RBIF 0000 000x 0000 000u
10Bh,18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000

8 canais TORTA1 PSPIE(1) RCIE DE FRANGO ESSA SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000

1Eh Registrador de Resultado A/D ADRESH Byte Alto xxxx xxxx uuuu uuuu

9Eh Byte baixo do registrador de resultado A/D ADRESL xxxx xxxx uuuu uuuu

1Fh ADCON0 ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE — ADON 0000 00-0 0000 00-0

9Fh ADCON1 ADFM ADCS2 — — PCFG3 PCFG2 PCFG1 PCFG0 00-- 0000 00-- 0000

85h TRISA — — Registro de Direção de Dados PORTA --11 1111 --11 1111

05h PORTA — — PORTA Data Latch quando escrito: pinos PORTA quando lidos --0x 0000 --0u 0000
89h(1) TRÊS IBF OBF IBOV PSPMODE — PORT bits de direção de dados 0000 -111 0000 -111
09h(1) PORTA — — — — — RE2 RE1 RE0 ---- -xxx ---- -uuu

Legenda: x = desconhecido, u = inalterado, - = não implementado, lido como '0'. As células sombreadas não são usadas para conversão A/D.
Nota 1: Esses registradores não estão disponíveis em dispositivos de 28 pinos.

ÿ 2003 Microchip Technology Inc. DS39582B-página 133


Machine Translated by Google

PIC16F87XA
NOTAS:

DS39582B-página 134 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
12.0 MÓDULO COMPARADOR O registrador CMCON (Registro 12-1) controla os multiplexadores de
entrada e saída do comparador. Um diagrama de blocos
O módulo comparador contém dois comparadores analógicos. As das várias configurações do comparador é mostrada em
entradas para os comparadores são multiplexadas Figura 12-1.
com os pinos de porta de E/S RA0 a RA3, enquanto as saídas
são multiplexados aos pinos RA4 e RA5. A referência de idade de tensão
no chip (Seção 13.0 "Tensão do Comparador
Módulo de referência”) também pode ser uma entrada para o
comparadores.

REGISTRO 12-1: REGISTRO CMCON


R-0 R-0 R/W-0 R/W-0 R/W-0 R/W-1 R/W-1 R/W-1

C2OUT C1OUT C2INV C1INV CEI CM2 CM1 CM0

pedaço 7 bit 0

pedaço 7 C2OUT: Bit de saída do comparador 2


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

bocado 6 C1OUT: Bit de saída do comparador 1


Quando C1INV = 0:
1 = C1 VIN+ > C1 VIN
0 = C1 VIN+ < C1 VIN
Quando C1INV = 1:
1 = C1 VIN+ < C1 VIN
0 = C1 VIN+ > C1 VIN

pedaço 5 C2INV: Bit de inversão de saída do comparador 2


1 = saída C2 invertida
0 = saída C2 não invertida
bocado 4 C1INV: Bit de inversão de saída do comparador 1
1 = saída C1 invertida
0 = saída C1 não invertida
parte 3 CIS: Bit de chave de entrada do comparador
Quando CM2:CM0 = 110:
1 = C1 VIN- conecta a RA3/AN3
C2 VIN- conecta a RA2/AN2
0 = C1 VIN- conecta a RA0/AN0
C2 VIN- conecta-se a RA1/AN1

parte 2 CM2:CM0: bits do modo comparador


A Figura 12-1 mostra os modos do Comparador e as configurações de bit CM2:CM0.

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

ÿ 2003 Microchip Technology Inc. DS39582B-página 135


Machine Translated by Google

PIC16F87XA
12.1 Configuração do Comparador modo é alterado, o nível de saída do comparador pode não
ser válido para o atraso de mudança de modo especificado mostrado em
Existem oito modos de operação para os comparadores. O registrador Seção 17.0 “Características Elétricas”.
CMCON é usado para selecionar esses
modos. A Figura 12-1 mostra os oito modos possíveis. Nota: As interrupções do comparador devem ser desabilitadas
O registrador TRISA controla a direção dos dados do durante uma mudança no modo Comparador.
pinos comparadores para cada modo. Se o comparador Caso contrário, pode ocorrer uma falsa interrupção.

FIGURA 12-1: MODOS DE OPERAÇÃO DE E/S DO COMPARADOR

Reinicialização de Comparadores Comparadores desativados (valor padrão POR)


CM2:CM0 = 000 CM2:CM0 = 111
UMA VENHA D VENHA
RA0/YAN0 RA0/YAN0
UMA VIN+ C1 Desligado (ler como '0') D VIN+ C1 Desligado (ler como '0')
RA3/AN3 RA3/AN3

UMA VENHA D VENHA


RA1/AN1 RA1/AN1
UMA VIN+ C2 Desligado (ler como '0') D VIN+ C2 Desligado (ler como '0')
RA2/AN2 RA2/AN2

Dois Comparadores Independentes com Saídas


Dois Comparadores Independentes CM2:CM0 = 011
CM2:CM0 = 010
UMA VENHA
UMA VENHA RA0/YAN0
RA0/YAN0
VIN+ C1 C1OUT
UMA VIN+ C1 C1OUT RA3/AN3
UMA

RA3/AN3

RA4/T0CKI/C1OUT

UMA VENHA
RA1/AN1 UMA VENHA
RA1/AN1
VIN+ C2 C2OUT
RA2/AN2
UMA
UMA VIN+ C2 C2OUT
RA2/AN2

RA5/AN4/SS/C2OUT

Dois Comparadores de Referência Comuns Dois Comparadores de Referência Comum com Saídas
CM2:CM0 = 100 CM2:CM0 = 101
UMA VENHA UMA VENHA
RA0/YAN0 RA0/YAN0
UMA VIN+ C1 C1OUT UMA VIN+ C1 C1OUT
RA3/AN3 RA3/AN3

RA4/T0CKI/C1OUT
UMA VENHA
RA1/AN1
D VIN+ C2 C2OUT RA1/AN1
UMA VENHA

RA2/AN2
D VIN+ C2 C2OUT
RA2/AN2

RA5/AN4/SS/C2OUT

Um comparador independente com saída Quatro entradas multiplexadas para dois comparadores
CM2:CM0 = 001 CM2:CM0 = 110
UMA

RA0/YAN0
UMA VENHA
RA0/YAN0 CEI = 0 VENHA

VIN+ C1 C1OUT RA3/AN3


UMA CEI = 1
RA3/AN3
UMA

VIN+ C1 C1OUT

RA4/T0CKI/C1OUT UMA

RA1/AN1 CEI = 0 VENHA

UMA
CEI = 1
RA2/AN2 C2 C2OUT
D VENHA VIN+
RA1/AN1
D VIN+ C2 Desligado (ler como '0')
RA2/AN2 CVREF Do Comparador
Módulo VREF

A = Entrada Analógica, a porta lê zeros sempre. D = Entrada Digital. CIS (CMCON<3>) é a chave de entrada do comparador.

DS39582B-página 136 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
12.2 Operação do Comparador 12.3.2 SINAL DE REFERÊNCIA INTERNO

Um único comparador é mostrado na Figura 12-2 junto com a O módulo comparador também permite a seleção de uma referência
relação entre os níveis de entrada analógica e a saída digital. de tensão gerada internamente para os comparadores. A seção
Quando a entrada analógica em VIN+ é menor que a entrada 13.0 “Módulo de referência de tensão do comparador” contém
analógica VIN-, a saída do comparador é um nível baixo digital. uma descrição detalhada do módulo de referência de tensão do
Quando a entrada analógica em VIN+ é maior que a entrada comparador que fornece este sinal.
analógica VIN-, a saída do comparador é um nível digital alto. As O sinal de referência interno é usado quando os comparadores
áreas sombreadas da saída do comparador na Figura 12-2 estão no modo, CM<2:0> = 110 (Figura 12-1). Neste modo, a
representam a incerteza devido aos deslocamentos de entrada e referência de tensão interna é aplicada ao pino VIN+ de ambos os
tempo de resposta. comparadores.

12.3 Referência do Comparador 12.4 Tempo de Resposta do Comparador

Um sinal de referência externo ou interno pode ser usado O tempo de resposta é o tempo mínimo, após selecionar uma nova
dependendo do modo de operação do comparador. O sinal analógico tensão de referência ou fonte de entrada, antes que a saída do
presente em VIN- é comparado com o sinal em VIN+ e a saída comparador tenha um nível válido. Se a referência interna for
digital do comparador é ajustada de acordo (Figura 12-2). alterada, o atraso máximo da referência de tensão interna deve ser
considerado ao usar as saídas do comparador. Caso contrário, deve-
se usar o atraso máximo dos comparadores (Seção 17.0
FIGURA 12-2: COMPARADOR ÚNICO “Características elétricas”).

12.5 Saídas do Comparador


VIN+ +
Resultado As saídas do comparador são lidas através do registrador CMCON.
VENHA –
Esses bits são somente leitura. As saídas do comparador também
podem ser enviadas diretamente para os pinos de E/S RA4 e RA5.
Quando habilitados, os multiplexadores no caminho de saída dos
pinos RA4 e RA5 serão alternados e a saída de cada pino será a
saída não sincronizada do comparador. A incerteza de cada um dos
venha-
VENHA comparadores está relacionada à tensão de compensação de
entrada e ao tempo de resposta fornecido nas especificações. A
VIN+
VIN+
Figura 12-3 mostra o diagrama de blocos de saída do comparador.

Os bits TRISA ainda funcionarão como habilitação/desabilitação de


saída para os pinos RA4 e RA5 enquanto estiver neste modo.
Saída Saída
A polaridade das saídas do comparador pode ser alterada usando
os bits C2INV e C1INV (CMCON<4:5>).

Nota 1: Ao ler o registro da porta, todos os pinos configurados


12.3.1 SINAL DE REFERÊNCIA EXTERNA
como entradas analógicas serão lidos como '0'. Os
Quando referências de tensão externas são usadas, o módulo pinos configurados como entradas digitais
comparador pode ser configurado para que os comparadores converterão uma entrada analógica de acordo com
operem a partir da mesma ou de fontes de referência diferentes. No a especificação de entrada Schmitt Trigger.
entanto, os aplicativos de detector de limite podem exigir a mesma 2: Níveis analógicos em qualquer pino definido como
referência. O sinal de referência deve estar entre VSS e VDD e entrada digital podem fazer com que o buffer de
pode ser aplicado a qualquer pino do(s) comparador(es). entrada consuma mais corrente do que o especificado.

3: RA4 é um pino de E/S de coletor aberto. Quando


usado como saída, é necessário um resistor pull-up.

ÿ 2003 Microchip Technology Inc. DS39582B-página 137


Machine Translated by Google

PIC16F87XA
FIGURA 12-3: DIAGRAMA DE BLOCO DE SAÍDA DO COMPARADOR

Pinos de porta

MÚLTIPLO

+-

CxINV

Para RA4 ou
Pino RA5

Ônibus D
Q
Dados

Leia CMCON
DENTRO

Definir
bit Q D
CMIF A partir de

Outro DENTRO

Comparador
CL Leia CMCON

Redefinir

12.6 Interrupções do Comparador Nota: Se uma mudança no registro CMCON (C1OUT ou C2OUT) ocorrer
quando uma operação de leitura estiver sendo executada
O sinalizador de interrupção do comparador é definido sempre que houver
(início do ciclo Q2), então o sinalizador de interrupção
uma alteração no valor de saída de qualquer comparador.
O software precisará manter informações sobre o CMIF (registros PIR) pode não ser definido.

status dos bits de saída, conforme lido de CMCON<7:6>, para determinar a


mudança real que ocorreu. O bit CMIF (registradores PIR) é o sinalizador de O usuário, na Rotina de Serviço de Interrupção, pode limpar a interrupção

interrupção do comparador. O bit CMIF deve ser redefinido limpando-o ('0'). da seguinte maneira:

Como também é possível escrever um '1' neste registrador, uma interrupção a) Qualquer leitura ou gravação do CMCON encerrará o
simulada pode ser iniciada. condição de incompatibilidade.

b) Apague o bit sinalizador CMIF.


O bit CMIE (registros PIE) e o bit PEIE (registro INTCON) devem ser
Uma condição de incompatibilidade continuará a definir o bit de sinalização CMIF.
definidos para habilitar a interrupção. Além disso, o bit GIE também deve
A leitura de CMCON encerrará a condição de incompatibilidade e permitirá
ser definido. Se algum desses bits estiver limpo, a interrupção não está
que o bit de sinalização CMIF seja apagado.
habilitada, embora o bit CMIF ainda seja definido se ocorrer uma condição
de interrupção.

DS39582B-página 138 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
12.7 Operação do Comparador Durante o Sono 12.9 Considerações de Conexão de
Entrada Analógica

Quando um comparador está ativo e o dispositivo é colocado Um circuito simplificado para uma entrada analógica é
no modo Sleep, o comparador permanece ativo e a interrupção mostrado na Figura 12-4. Como os pinos analógicos estão
é funcional se habilitada. Esta interrupção acordará o dispositivo conectados a uma saída digital, eles possuem diodos com
do modo de suspensão quando ativado. polarização reversa para VDD e VSS. A entrada analógica,
Enquanto o comparador estiver ligado, ocorrerão correntes portanto, deve estar entre VSS e VDD. Se a tensão de
Sleep mais altas do que as mostradas na especificação de entrada se desviar dessa faixa em mais de 0,6 V em qualquer
corrente de desligamento. Cada comparador operacional direção, um dos diodos é polarizado diretamente e uma
consumirá corrente adicional conforme mostrado nas condição de travamento pode ocorrer. Uma impedância
especificações do comparador. Para minimizar o consumo de máxima da fonte de 10 kÿ é recomendada para as fontes
energia no modo Sleep, desligue os comparadores, CM<2:0> = analógicas. Qualquer componente externo conectado a um
111, antes de entrar em Sleep. Se o dispositivo acordar da pino de entrada analógica, como um capacitor ou um diodo
suspensão, o conteúdo do registro CMCON não será afetado. Zener, deve ter muito pouca corrente de fuga.

12.8 Efeitos de uma Redefinição

Um Reset do dispositivo força o registro CMCON ao seu


estado Reset, fazendo com que o módulo comparador fique
no modo Comparator Off, CM<2:0> = 111. Isso garante a
compatibilidade com os dispositivos PIC16F87X.

FIGURA 12-4: MODELO DE ENTRADA ANALÓGICA

VDD

VT = 0,6 V
RS < 10K RIC

AIN
CPIN FUGA ±
E VT = 0,6 V 500 nA
5 pF

VSS

Legenda: CPI = Capacitância de entrada


VT = Tensão Limiar
ILEAKAGE = Corrente de fuga no pino devido a várias junções
RIC = Resistência de interconexão
RS = Impedância da fonte
E = Tensão Analógica

ÿ 2003 Microchip Technology Inc. DS39582B-página 139


Machine Translated by Google

PIC16F87XA
TABELA 12-1: REGISTROS ASSOCIADOS AO MÓDULO COMPARADOR

Valor ativado
Valor ativado
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR
Reinicializações

9 canais CMCON C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0 0000 0111 0000 0111
9 Dh CVRCON CVREN CVROE CVRR — CVR3 CVR2 CVR1 CVR0 000- 0000 000- 0000

0Bh, 8Bh, INTCON GIE/ assim/ TMR0IE INTIE RBIE TMR0IF INTIF RBIF 0000 000x 0000 000u
10Bh,18Bh ENTENDI AMARELO

0Dh PIR2 — CMIF — — BCLIF LVDIF TMR3IF CCP2IF -0-- 0000 -0-- 0000
8º PIE2 — CMIE — — BCLIE LVDIE TMR3IE CCP2IE -0-- 0000 -0-- 0000
05h PORTA - - RA5 RA4 RA3 RA2 RA1 RA0 --0x 0000 --0u 0000
85h TRISA — — Registro de Direção de Dados PORTA --11 1111 --11 1111

Legenda: x = desconhecido, u = inalterado, - = não implementado, lido como '0'. As células sombreadas não são utilizadas pelo módulo comparador.

DS39582B-página 140 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
13.0 MÓDULO DE REFERÊNCIA DE tensão de alimentação (também conhecido como CVRSRC) vem
diretamente do VDD. Deve-se notar, no entanto, que a
TENSÃO DO COMPARADOR
tensão no topo da escada é CVRSRC – VSAT,
O gerador de referência de tensão do comparador é um onde VSAT é a tensão de saturação da potência
Rede em escada de resistores de 16 derivações que fornece um transistor de comutação. Esta referência será apenas como
referência de tensão quando os comparadores estão em modo precisos quanto os valores de CVRSRC e VSAT.

'110'. Um registrador programável controla a função de A saída do gerador de referência pode ser conectada ao pino RA2/
o gerador de referência. O registrador 13-1 lista o bit AN2/VREF-/CVREF . Isso pode ser
funções do registrador CVRCON. usado como uma função D/A simples pelo usuário se uma carga de
Conforme mostrado na Figura 13-1, a escada do resistor é segmentada impedância muito alta for usada. O objetivo primordial deste
para fornecer duas faixas de valores CVREF e tem função é fornecer um caminho de teste para testar o
uma função de desligamento para economizar energia quando o função geradora de referência.
referência não está sendo usada. A referência do comparador

REGISTRO 13-1: REGISTRO DE CONTROLE CVRCON (ENDEREÇO 9Dh)


R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0

CVREN CVROE CVRR — CVR3 CVR2 CVR1 CVR0

pedaço 7 bit 0

pedaço 7 CVREN: Bit de habilitação da referência de tensão do comparador


1 = circuito CVREF ligado
0 = circuito CVREF desligado
bocado 6 CVROE: Bit de habilitação de saída VREF do comparador
1 = O nível de tensão CVREF é emitido no pino RA2/AN2/VREF-/ CVREF
0 = o nível de tensão CVREF está desconectado do pino RA2/AN2/VREF-/ CVREF
pedaço 5 CVRR: Bit de seleção de intervalo VREF do comparador
1 = 0 a 0,75 CVRSRC, com tamanho de passo CVRSRC/24 0
= 0,25 CVRSRC a 0,75 CVRSRC, com tamanho de passo CVRSRC/32
bocado 4 Não implementado: lido como '0'
pouco 3-0 CVR3:CVR0: Bits de seleção de valor VREF do comparador 0 ÿ VR3:VR0 ÿ 15 Quando
CVRR = 1:
CVREF = (VR<3:0>/ 24) • (CVRSRC)
Quando CVRR = 0:
CVREF = 1/4 • (CVRSRC) + (VR3:VR0/ 32) • (CVRSRC)

Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
-n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido

ÿ 2003 Microchip Technology Inc. DS39582B-página 141


Machine Translated by Google

PIC16F87XA
FIGURA 13-1: DIAGRAMA DE BLOCO DE REFERÊNCIA DE TENSÃO DO COMPARADOR

VDD

16 Estágios

CVREN
8R R R R R

8R CVRR

RA2/AN2/VREF-/CVREF

CVROE
CVR3
CVREF CVR2
16:1 MUX analógico
Entrada para CVR1
Comparador CVR0

TABELA 13-1: REGISTROS ASSOCIADOS À REFERÊNCIA DE TENSÃO DO COMPARADOR


Valor ativado
Valor ativado
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR
Reinicializações

9 Dh CVRCON CVREN CVROE CVRR — CVR3 CVR2 CVR1 CVR0 000- 0000 000- 0000
9Ch CMCON C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0 0000 0111 0000 0111

Legenda: x = desconhecido, u = inalterado, - = não implementado, lido como '0'.


As células sombreadas não são usadas com a referência de tensão do comparador.

DS39582B-página 142 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
14.0 CARACTERÍSTICAS ESPECIAIS DA CPU O modo de suspensão foi projetado para oferecer um modo de desligamento de
corrente muito baixa. O usuário pode acordar do Sleep por meio de Reset externo,
despertar do Watchdog Timer ou por meio de uma interrupção.
Todos os dispositivos PIC16F87XA possuem uma série de recursos destinados a

maximizar a confiabilidade do sistema, minimizar custos por meio da eliminação Várias opções de osciladores também são disponibilizadas para permitir que a
de componentes externos, fornecer modos de operação de economia de energia peça se ajuste à aplicação. A opção de oscilador RC economiza o custo do
e oferecer proteção de código. Estes são:
sistema, enquanto a opção de cristal LP economiza energia. Um conjunto de bits
de configuração é usado para selecionar várias opções.
• Seleção do oscilador

• Redefinir Informações adicionais sobre recursos especiais estão disponíveis no PICmicro®

- Reinicialização ao ligar (POR) Mid-Range MCU Family Reference Manual (DS33023).

- Temporizador de inicialização (PWRT)

- Temporizador de inicialização do oscilador (OST)

- Brown-out Reset (BOR) • Interrupções


14.1 Bits de Configuração
• Watchdog Timer (WDT) • Suspensão • Os bits de configuração podem ser programados (lidos como '0') ou deixados não

Proteção de código programados (lidos como '1') para selecionar várias configurações de dispositivos.
O valor apagado ou não programado do registrador de palavra de configuração é
3FFFh.
Esses bits são mapeados no local de memória do programa 2007h.
• Locais de identificação

• Programação Serial In-Circuit • Programação


É importante notar que o endereço 2007h está além do espaço de memória do
Serial In-Circuit de Baixa Tensão • Depurador In-Circuit
programa do usuário que pode ser acessado somente durante a programação.

Dispositivos PIC16F87XA possuem um Watchdog Timer que pode ser desligado


somente através de bits de configuração. Ele funciona com seu próprio oscilador
RC para maior confiabilidade.

Existem dois temporizadores que oferecem atrasos necessários na inicialização.


Um deles é o Oscillator Start-up Timer (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) apenas na inicialização. Ele é
projetado para manter a peça em Reset enquanto a fonte de alimentação se
estabiliza. Com esses dois temporizadores no chip, a maioria dos aplicativos não
precisa de circuitos de reinicialização externos.

ÿ 2003 Microchip Technology Inc. DS39582B-página 143


Machine Translated by Google

PIC16F87XA
REGISTRO 14-1: PALAVRA DE CONFIGURAÇÃO (ENDEREÇO 2007h)(1)
R/P-1 U-0 R/P-1 R/P-1 R/P-1 R/P-1 R/P-1 R/P-1 U-0 U-0 R/P-1 R/P-1 R/P-1 R/P-1

CP — DEBUG WRT1 WRT0 CPD LVP BOREN — — PWRTEN WDTEN FOSC1 FOSC0
pedaço 13 bit0

pedaço 13 CP: Bit de proteção de código de memória de programa flash

1 = Proteção de código desligada


0 = Toda a memória de programa protegida por código

bocado 12 Não implementado: Leia como '1'

pedaço 11 DEBUG: bit do modo de depurador em circuito

1 = In-Circuit Debugger desativado, RB6 e RB7 são pinos de E/S de uso geral
0 = In-Circuit Debugger habilitado, RB6 e RB7 são dedicados ao depurador

pouco 10-9 WRT1:WRT0 Flash Program Memory Write Enable bits


Para PIC16F876A/877A:

11 = Proteção contra gravação desligada; toda a memória do programa pode ser gravada pelo controle EECON
10 = 0000h a 00FFh protegido contra gravação; 0100h a 1FFFh pode ser escrito pelo controle EECON
01 = 0000h a 07FFh protegido contra gravação; 0800h a 1FFFh pode ser escrito pelo controle EECON
00 = 0000h a 0FFFh protegido contra gravação; 1000h a 1FFFh pode ser escrito pelo controle EECON
Para PIC16F873A/874A:

11 = Proteção contra gravação desligada; toda a memória do programa pode ser gravada pelo controle EECON
10 = 0000h a 00FFh protegido contra gravação; 0100h a 0FFFh pode ser escrito pelo controle EECON
01 = 0000h a 03FFh protegido contra gravação; 0400h a 0FFFh pode ser escrito pelo controle EECON
00 = 0000h a 07FFh protegido contra gravação; 0800h a 0FFFh pode ser escrito pelo controle EECON

bocado 8 CPD: Bit de proteção de código de memória EEPROM de dados

1 = Proteção de código EEPROM de dados desligada


0 = Dados protegidos por código EEPROM

pedaço 7 LVP: Bit de habilitação de programação serial em circuito de baixa tensão (fonte única)

1 = pino RB3/PGM tem função PGM; programação de baixa tensão habilitada


0 = RB3 é E/S digital, HV em MCLR deve ser usado para programação

bocado 6 BOREN: Bit de habilitação de reinicialização de brown-out

1 = BOR ativado
0 = BOR desabilitado

bocado 5-4 Não implementado: Leia como '1'

parte 3 PWRTEN: Bit de habilitação do temporizador de inicialização

1 = PWRT desativado
0 = PWRT ativado

parte 2 WDTEN: bit de ativação do temporizador de watchdog


1 = WDT ativado
0 = WDT desabilitado

pouco 1-0 FOSC1:FOSC0: bits de seleção do oscilador

11 = oscilador RC
10 = oscilador HS
01 = oscilador XT
00 = oscilador LP

Lenda:

R = bit legível P = bit programável U = bit não implementado, lido como '0'

- n = Valor quando o dispositivo está desprogramado u = Inalterado do estado programado

Nota 1: O valor apagado (não programado) da palavra de configuração é 3FFFh.

DS39582B-página 144 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
14.2 Configurações do oscilador FIGURA 14-2: ENTRADA DE RELÓGIO EXTERNO
OPERAÇÃO (HS, XT OU
14.2.1 TIPOS DE OSCILADOR CONFIGURAÇÃO LP OSC)
O PIC16F87XA pode ser operado em quatro
modos do oscilador. O usuário pode programar dois bits de
configuração (FOSC1 e FOSC0) para selecionar um desses quatro bits.
Relógio de OSC1
modos:
Ramal Sistema PIC16F87XA
• LP Cristal de baixa potência
Abrir OSC2
• XT Cristal/Ressonador
• Cristal/Ressonador de Alta Velocidade HS
• Resistor/Capacitor RC

14.2.2 OSCILADOR DE CRISTAL/CERÂMICA


RESSONADORES TABELA 14-1: RESSONADORES CERÂMICOS

Faixas testadas:
Nos modos XT, LP ou HS, um ressonador de cristal ou cerâmica
está conectado aos pinos OSC1/CLKI e OSC2/CLKO Modo Frequencia. OSC1 OSC2
para estabelecer a oscilação (Figura 14-1). O PIC16F87XA
XT 455 kHz 68-100 pF 68-100 pF
O projeto do oscilador requer o uso de um cristal de corte paralelo. O
2,0 MHz 15-68 pF 15-68 pF
uso de um cristal de corte em série pode fornecer uma frequência de saída
4,0 MHz 15-68 pF 15-68 pF
das especificações do fabricante do cristal. Quando em
modos XT, LP ou HS, o dispositivo pode ter um HS 8,0 MHz 10-68 pF 10-68 pF
fonte de clock para acionar o pino OSC1/CLKI (Figura 14-2). 16,0 MHz 10-22 pF 10-22 pF
Esses valores são apenas para orientação de projeto.
FIGURA 14-1: CRISTAL/CERÂMICA Consulte as notas após a Tabela 14-2.
OPERAÇÃO DO RESSONADOR
Ressonadores usados:
(HS, XT OU LP
2,0 MHz Murata Erie CSA2.00MG ± 0,5%
CONFIGURAÇÃO OSC)
4,0 MHz Murata Erie CSA4.00MG ± 0,5%
C1(1) OSC1 8,0 MHz Murata Erie CSA8.00MT ± 0,5%
Para 16,0 MHz Murata Erie CSA16.00MX ± 0,5%
interno
XTAL Lógica Todos os ressonadores usados não tinham capacitores embutidos.
RF(3)
OSC2
Dorme
(2)
Rs
C2(1) PIC16F87XA

Nota 1: Consulte a Tabela 14-1 e a Tabela 14-2 para recomendações


valores de C1 e C2.

2: Um resistor em série (Rs) pode ser necessário para AT


cristais cortados em tiras.

3: RF varia com o cristal escolhido.

ÿ 2003 Microchip Technology Inc. DS39582B-página 145


Machine Translated by Google

PIC16F87XA
TABELA 14-2: SELEÇÃO DE CAPACITOR PARA 14.2.3 OSCILADOR RC
OSCILADOR DE CRISTAL
Para aplicações insensíveis ao tempo, o dispositivo “RC”
Cristal Boné. Faixa C1 Boné. Faixa opção oferece economia de custos adicionais. O oscilador RC
Tipo de Osc
Freq. C2 frequência é uma função da tensão de alimentação, a
valores de resistor (REXT) e capacitor (CEXT) e os
LP 32 kHz 33 pF 33 pF Temperatura de operação. Além disso, o oscilador
200 kHz 15 pF 15 pF a frequência variará de unidade para unidade devido à variação
XT 200 kHz normal dos parâmetros do processo. Além disso, a diferença
47-68 pF 47-68 pF
na capacitância do quadro de chumbo entre os tipos de pacote
1 MHz 15 pF 15 15 pF
também afetam a frequência de oscilação, especialmente para
4MHz pF 15 15 pF Valores CEXT . O usuário também precisa levar em consideração
HS 4MHz variação devido à tolerância de R e C externos
pF 15-33 15 pF
8MHz componentes usados. A Figura 14-3 mostra como o R/C
pF 15-33 15-33 pF
combinação está conectada ao PIC16F87XA.
20MHz pF Estes 15-33 pF
valores são apenas para orientação de projeto. FIGURA 14-3: MODO DE OSCILADOR RC
Veja as notas após esta tabela.
VDD
Cristais usados
CERTO
32 kHz Epson C-001R32.768K-A ± 20 PPM
interno
OSC1
200 kHz STD XTL 200.000 KHz ± 20 PPM Relógio
1 MHz ECS ECS-10-13-1 ± 50 PPM
CEXT PIC16F87XA
4MHz ECS ECS-40-20-1 ± 50 PPM
VSS
8 MHz EPSON CA-301 8.000MC ± 30 PPM OSC2/CLKO
ESCURO/4
20 MHz EPSON CA-301 20.000MC ± 30 PPM
Valores recomendados: 3 kÿ ÿ REXT ÿ 100 kÿ
CEXT > 20 pF
Nota 1: A capacitância mais alta aumenta a estabilidade
do oscilador, mas também aumenta o start-up
Tempo.

2: Como cada ressonador/cristal tem seu próprio


características, o usuário deve consultar
o fabricante do ressonador/cristal para
valores apropriados externos do
componentes.

3: Rs pode ser necessário no modo HS, também


como modo XT, para evitar cristais excessivos
com especificação de baixo nível de acionamento.

4: Ao migrar de outro PICmicro®


dispositivos, o desempenho do oscilador deve ser
verificado.

DS39582B-página 146 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
14.3 Redefinir state” no Power-on Reset (POR), no MCLR e WDT Reset, no MCLR
Reset durante Sleep e Brown out Reset (BOR). Eles não são afetados
O PIC16F87XA diferencia entre vários tipos de Reset:
por um despertar WDT que é visto como a retomada da operação
normal. Os bits TO e PD são definidos ou apagados de forma diferente
• Power-on Reset (POR) • MCLR em diferentes situações de Reset, conforme indicado na Tabela 14-4.

Reset durante operação normal • MCLR Reset Esses bits são usados em software para determinar a natureza do
Reset. Consulte a Tabela 14-6 para obter uma descrição completa dos
durante Sleep • WDT Reset (durante operação
estados de reinicialização de todos os registradores.
normal) • WDT Wake-up (durante Sleep) • Brown-out
Reset (BOR)
Um diagrama de blocos simplificado do circuito Reset no chip é mostrado
na Figura 14-4.
Alguns registradores não são afetados em nenhuma condição de Reset.
Seu status é desconhecido no POR e inalterado em qualquer outro
Reset. A maioria dos outros registradores são redefinidos para um “Reset

FIGURA 14-4: DIAGRAMA DE BLOCOS SIMPLIFICADO DO CIRCUITO DE REINICIALIZAÇÃO NO CHIP

Externo
Redefinir

MCLR
Dorme
WDT WDT
Módulo Tempo esgotado

Redefinir

Aumento de VDD

Detectar
Reinicialização ao ligar
VDD

Apagão
S
Redefinir CHÃO

OST/PWRT
OST
Chip_Reset
Contador de ondulação de 10 bits R Q
OSC1

(1) PWRT
No chip
RC OSC Contador de ondulação de 10 bits

Ativar PWRT

Ativar OST

Nota 1: Este é um oscilador separado do oscilador RC do pino CLKI.

ÿ 2003 Microchip Technology Inc. DS39582B-página 147


Machine Translated by Google

PIC16F87XA
14.4 MCLR 14.6 Temporizador de inicialização (PWRT)
Os dispositivos PIC16F87XA possuem um filtro de ruído no O temporizador de energização fornece um tempo limite nominal
caminho de reinicialização MCLR. O filtro detectará e ignorará fixo de 72 ms na energização somente a partir do POR. O Power
pequenos pulsos. up Timer opera em um oscilador RC interno. O chip é mantido em
Deve-se notar que um WDT Reset não leva o pino MCLR para Reset enquanto o PWRT estiver ativo. O atraso de tempo do
PWRT permite que o VDD atinja um nível aceitável. Um bit de
baixo.
configuração é fornecido para habilitar ou desabilitar o PWRT.
O comportamento da proteção ESD no pino MCLR difere dos
dispositivos anteriores desta família. As tensões aplicadas ao pino
O atraso de inicialização varia de chip para chip devido ao VDD,
que excedem sua especificação podem resultar em Reinicializações
temperatura e variação do processo. Consulte a Seção 17.0
e consumo de corrente fora da especificação do dispositivo
“Características elétricas” para obter detalhes (TPWRT,
durante o evento Reinicialização. Por esse motivo, a Microchip
parâmetro #33).
recomenda que o pino MCLR não seja mais vinculado diretamente
ao VDD. O uso de uma rede RCR, conforme mostrado na Figura
14-5, é sugerido. 14.7 Temporizador de inicialização do oscilador (OST)

O temporizador de inicialização do oscilador (OST) fornece um


FIGURA 14-5: MCLR RECOMENDADO atraso de 1024 ciclos do oscilador (da entrada OSC1) após o
O CIRCUITO término do atraso PWRT (se o PWRT estiver ativado). Isso ajuda
a garantir que o oscilador ou ressonador de cristal tenha iniciado
VDD
PIC16F87XA e estabilizado.

O tempo limite OST é invocado apenas para os modos XT, LP e


R1(1) HS e apenas na reinicialização ao ligar ou no despertar da
suspensão.
MCLR
R2(2) 14.8 Reinicialização de Brown-out (BOR)
C1
O bit de configuração, BODEN, pode habilitar ou desabilitar o
circuito Brown-out Reset. Se o VDD ficar abaixo de VBOR
(parâmetro D005, cerca de 4V) por mais tempo que TBOR
Nota 1: R1 < 40 kÿ é recomendado para garantir que (parâmetro #35, cerca de 100 µS), a situação de brown-out
reinicializará o dispositivo. Se VDD ficar abaixo de VBOR para
a queda de tensão em R não viole a
especificação elétrica do dispositivo. menos de TBOR, uma Reinicialização pode não ocorrer.
Uma vez que o brown-out ocorra, o dispositivo permanecerá em
2: R2 > que 1K limitará qualquer corrente Brown-out Reset até que o VDD ultrapasse o VBOR. O Power-up
fluindo para o MCLR a partir do
Timer então mantém o dispositivo em Reset para TPWRT
capacitor externo C, no caso de falha do
MCLR/VPP devido a descarga (parâmetro #33, cerca de 72 mS). Se o VDD cair abaixo do VBOR
eletrostática (ESD) ou sobrecarga elétrica durante o TPWRT, o processo Brown-out Reset será reiniciado
(EOS). quando o VDD subir acima do VBOR com o Power-up Timer
Reset. O Power-up Timer está sempre habilitado quando o circuito
Brown-out Reset está habilitado, independentemente do estado
14.5 Reinicialização ao ligar (POR) do bit de configuração PWRT.

Um pulso de Power-on Reset é gerado no chip quando o aumento


de VDD é detectado (na faixa de 1,2V-1,7V). Para aproveitar o
14.9 Sequência de tempo limite
POR, conecte o pino MCLR ao VDD através de uma rede RC,
conforme descrito na Seção 14.4 “MCLR”. Um tempo máximo de Na energização, a sequência de tempo limite é a seguinte: o
subida para VDD é especificado. atraso PWRT inicia (se habilitado) quando ocorre um reset de
Consulte a Seção 17.0 “Características elétricas” para obter POR. Então, o OST começa a contar 1024 ciclos do oscilador
detalhes. quando o PWRT termina (LP, XT, HS). Quando o OST termina, o
dispositivo sai do Reset.
Quando o dispositivo inicia a operação normal (sai da condição
Reset), os parâmetros operacionais do dispositivo (tensão, Se o MCLR for mantido baixo por tempo suficiente, os tempos
frequência, temperatura, etc.) devem ser atendidos para garantir limite expirarão. Colocar o MCLR alto começará a execução
a operação. Se essas condições não forem atendidas, o dispositivo imediatamente. Isso é útil para fins de teste ou para sincronizar
deve ser mantido em Reset até que as condições de operação mais de um dispositivo PIC16F87XA operando em paralelo.
sejam atendidas. Brown-out Reset pode ser usado para atender
às condições de inicialização. Para obter informações adicionais,
A Tabela 14-5 mostra as condições de Reset para os registros de
consulte a nota de aplicação, AN607, “Solução de problemas de
Status, PCON e PC, enquanto a Tabela 14-6 mostra as condições
inicialização” (DS00607).
de Reset para todos os registros.

DS39582B-página 148 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
14.10 Controle de Energia/Registro de Quando o Brown-out Reset está desabilitado, o estado do
Status (PCON) O bit BOR é imprevisível e, portanto, não é válido em
a qualquer momento.

O Power Control/Status Register, PCON, tem até


O bit 1 é o bit de status de reinicialização de inicialização, POR. Isso é
dois bits dependendo do dispositivo. apagado em uma reinicialização de inicialização e não afetado
O bit 0 é o bit de status de reinicialização de Brown-out, BOR. O BOR de outra forma. O usuário deve definir este bit após um Power-on
bit é desconhecido em um Power-on Reset. Deve então ser definido Redefinir.
pelo usuário e verificado nas Reinicializações subsequentes para ver se
foi apagado, indicando que ocorreu um BOR.

TABELA 14-3: TEMPO LIMITADO EM VÁRIAS SITUAÇÕES

Energizar
Despertar de
Configuração do oscilador Apagão
POBRE = 0 POBRE = 1 Dorme

XT, HS, LP 72 ms + 1024 TOSC 1024 GROSSO 72 ms + 1024 TOSC 1024 GROSSO

RC 72ms — 72ms —

TABELA 14-4: BITS DE STATUS E SEU SIGNIFICADO

POR BOR PARA PD Doença

0 x 11 Reinicialização ao ligar

0 x 0x Ilegal, TO é definido em POR


0 x x0 Ilegal, PD está definido em POR
1 0 11 Reinicialização de Brown-out
1 1 01 Reinicialização WDT

1 1 00 WDT Despertar
1 1 uu MCLR Reinicialização durante a operação normal
1 1 10 MCLR Redefinir durante o sono ou interromper o despertar do sono

Legenda: x = não importa, u = inalterado

TABELA 14-5: CONDIÇÕES DE REINICIALIZAÇÃO PARA REGISTOS ESPECIAIS

Programa Status PCON


Doença
Contador Registro Registro

Reinicialização ao ligar 000h 0001 1xxx ---- --0x

Reinicialização MCLR durante a operação normal 000h 000 uuuu ---- -- Ei

Redefinição de MCLR durante o sono 000h 0001 0uuuu ---- -- Ei

Redefinir WDT 000h 0000 1uuu ---- -- Ei

Despertar WDT PC + 1 uuu0 0uuu ---- -- Ei

Reinicialização de Brown-out 000h 0001 1uuu ---- --u0

Interromper o despertar do sono PC + 1(1) uuu1 0uuu ---- -- Ei

Legenda: u = inalterado, x = desconhecido, - = bit não implementado, lido como '0'


Nota 1: Quando o despertar é devido a uma interrupção e o bit GIE está definido, o PC é carregado com o vetor de interrupção
(0004h).

ÿ 2003 Microchip Technology Inc. DS39582B-página 149


Machine Translated by Google

PIC16F87XA
TABELA 14-6: CONDIÇÕES DE INICIALIZAÇÃO PARA TODOS OS REGISTOS

Reinicialização de inicialização, Reinicializações MCLR, Despertar via WDT ou


Registro Dispositivos
Reinicialização de Brown-out Redefinir WDT Interromper
Dentro 73A 74A 76A 77A xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu

INC 73A 74A 76A 77A N/D N/D N/D

TMR0 73A 74A 76A 77A xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu

PCL 73A 74A 76A 77A 0000 0000 0000 0000 PC + 1(2)
STATUS 73A 74A 76A 77A 0001 1xxx 000q quuu(3) uau uau (3)
FSR 73A 74A 76A 77A xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu

TRAZ 73A 74A 76A 77A --0x 0000 --0u 0000 --uuuuuuuuuuuuuuuuuuuuuuuuuuuu

PORTB 73A 74A 76A 77A xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu

PORTO 73A 74A 76A 77A xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu

PORTD 73A 74A 76A 77A xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu

PORTÃO 73A 74A 76A 77A ---- -xxx -----uuu -----uuu


PCLATH 73A 74A 76A 77A ---0 0000 ---0 0000 ---uuuu
INTCON 73A 74A 76A 77A 0000 000x 0000 000u uau uau(1)
73A 74A 76A 77A r000 0000 r000 0000 uau uau(1)
PIR1
73A 74A 76A 77A 0000 0000 0000 0000 uau uau(1)
PIR2 73A 74A 76A 77A -0-0 0--0 -0-0 0--0 -uu u--u(1)
TMR1L 73A 74A 76A 77A xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu

TMR1H 73A 74A 76A 77A xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu

T1CON 73A 74A 76A 77A --00 0000 --uuuuuuuuuuuuuuuuuuuuuuuuuuuu --uuuuuuuuuuuuuuuuuuuuuuuuuuuu

TMR2 73A 74A 76A 77A 0000 0000 0000 0000 uuuuuuuuuuuuuuuuuuuuuu

T2CON 73A 74A 76A 77A -000 0000 -000 0000 -uuuuuuuuuuuuuuuuuuuuuuuuu

SSPBUF 73A 74A 76A 77A xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu

SSPCON 73A 74A 76A 77A 0000 0000 0000 0000 uuuuuuuuuuuuuuuuuuuuuu

CCPR1L 73A 74A 76A 77A xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu

CCPR1H 73A 74A 76A 77A xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu

CCP1CON 73A 74A 76A 77A --00 0000 --00 0000 --uuuuuuuuuuuuuuuuuuuuuuuuuuuu

RCSTA 73A 74A 76A 77A 0000 000x 0000 000x uuuuuuuuuuuuuuuuuuuuuu

TXREG 73A 74A 76A 77A 0000 0000 0000 0000 uuuuuuuuuuuuuuuuuuuuuu

RCREG 73A 74A 76A 77A 0000 0000 0000 0000 uuuuuuuuuuuuuuuuuuuuuu

CCPR2L 73A 74A 76A 77A xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu

CCPR2H 73A 74A 76A 77A xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu

CCP2CON 73A 74A 76A 77A 0000 0000 0000 0000 uuuuuuuuuuuuuuuuuuuuuu

ENDEREÇO 73A 74A 76A 77A xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu

ADCON0 73A 74A 76A 77A 0000 00-0 0000 00-0 uuuuuuuuuuuuuuuuuuuuuuuuuuuu

OPTION_REG 73A 74A 76A 77A 1111 1111 1111 1111 uuuuuuuuuuuuuuuuuuuuuu

TRISA 73A 74A 76A 77A --11 1111 --11 1111 --uuuuuuuuuuuuuuuuuuuuuuuuuuuu

TRISB 73A 74A 76A 77A 1111 1111 1111 1111 uuuuuuuuuuuuuuuuuuuuuu

TRISC 73A 74A 76A 77A 1111 1111 1111 1111 uuuuuuuuuuuuuuuuuuuuuu

Legenda: u = inalterado, x = desconhecido, - = bit não implementado, lido como '0', q = valor depende da condição, r = reservado,
mantenha limpo. As células sombreadas indicam que as condições não se aplicam ao dispositivo designado.
Nota 1: Um ou mais bits em INTCON, PIR1 e/ou PIR2 serão afetados (para causar despertar).
2: Quando o despertar é devido a uma interrupção e o bit GIE é definido, o PC é carregado com o vetor de interrupção
(0004h).
3: Consulte a Tabela 14-5 para Redefinir o valor para condição específica.

DS39582B-página 150 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
TABELA 14-6: CONDIÇÕES DE INICIALIZAÇÃO PARA TODOS OS REGISTOS (CONTINUAÇÃO)

Reinicialização de inicialização, Reinicializações MCLR, Despertar via WDT ou


Registro Dispositivos
Reinicialização de Brown-out Redefinir WDT Interromper

TERCEIRO 73A 74A 76A 77A 1111 1111 1111 1111 uuuuuuuuuuuuuuuuuuuuuu

TRÊS 73A 74A 76A 77A 0000 -111 0000 -111 uuuuuuuuuuuuuuuuuuuuuu

73A 74A 76A 77A r000 0000 r000 0000 uuuuuuuuuuuuuuuuuuu


TORTA1
73A 74A 76A 77A 0000 0000 0000 0000 uuuuuuuuuuuuuuuuuuuuuu

PIE2 73A 74A 76A 77A -0-0 0--0 -0-0 0--0 -uh e--e

PCON 73A 74A 76A 77A ---- --qq ---- -- Ei ---- -- Ei

SSPCON2 73A 74A 76A 77A 0000 0000 0000 0000 uuuuuuuuuuuuuuuuuuuuuu

PR2 73A 74A 76A 77A 1111 1111 1111 1111 1111 1111

SPADD 73A 74A 76A 77A 0000 0000 0000 0000 uuuuuuuuuuuuuuuuuuuuuu

SSPSTAT 73A 74A 76A 77A --00 0000 --00 0000 --uuuuuuuuuuuuuuuuuuuuuuuuuuuu

TXT 73A 74A 76A 77A 0000 -010 0000 -010 uuuuuuuuuuuuuuuuuuuuuu

SPBRG 73A 74A 76A 77A 0000 0000 0000 0000 uuuuuuuuuuuuuuuuuuuuuu

CMCON 73A 974 76A 77A 0000 0111 0000 0111 uuuuuuuuuuuuuuuuuuuuuu

CVRCON 73A 74A 76A 77A 000-0000 000-0000 ugh- ugh

MORADA 73A 74A 76A 77A xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu

ADCON1 73A 74A 76A 77A 00-- 0000 00-- 0000 ugh-- ugh

A DAMA 73A 74A 76A 77A xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu

EEADR 73A 74A 76A 77A xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu

EEDATH 73A 74A 76A 77A xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu

EEADRH 73A 74A 76A 77A xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu

EECON1 73A 74A 76A 77A x--- x000 u--- u000 u--- uuuu
EECON2 73A 74A 76A 77A ---- ---- ---- ---- ---- ----

Legenda: u = inalterado, x = desconhecido, - = bit não implementado, lido como '0', q = valor depende da condição, r = reservado,
mantenha limpo. As células sombreadas indicam que as condições não se aplicam ao dispositivo designado.
Nota 1: Um ou mais bits em INTCON, PIR1 e/ou PIR2 serão afetados (para causar despertar).
2: Quando o despertar é devido a uma interrupção e o bit GIE é definido, o PC é carregado com o vetor de interrupção
(0004h).
3: Consulte a Tabela 14-5 para Redefinir o valor para condição específica.

FIGURA 14-6: SEQUÊNCIA DE TEMPO LIMITE NA LIGAÇÃO (MCLR LIGADO A VDD VIA REDE RC)

VDD

MCLR

POR interno

TPWRT

Tempo limite PWRT TOST

Tempo limite OST

Redefinição interna

ÿ 2003 Microchip Technology Inc. DS39582B-página 151


Machine Translated by Google

PIC16F87XA
FIGURA 14-7: SEQUÊNCIA DE TEMPO LIMITE NA LIGAÇÃO (MCLR NÃO LIGADO A VDD): CASO 1

VDD

MCLR

POR interno
TPWRT

Tempo limite PWRT TOST

Tempo limite OST

Redefinição interna

FIGURA 14-8: SEQUÊNCIA DE TEMPO LIMITE NA LIGAÇÃO (MCLR NÃO LIGADO A VDD): CASO 2

VDD

MCLR

POR interno

TPWRT

Tempo limite PWRT TOST

Tempo limite OST

Redefinição interna

FIGURA 14-9: TEMPO DE AUMENTO LENTO (MCLR ATUALIZADO A VDD VIA REDE RC)

5V

VDD 0V 1V

MCLR

POR interno

TPWRT

Tempo limite PWRT


TOST

Tempo limite OST

Redefinição interna

DS39582B-página 152 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
14.11 Interrupções A interrupção do pino RB0/INT, a interrupção de mudança de porta
RB e os sinalizadores de interrupção de estouro TMR0 estão
A família PIC16F87XA possui até 15 fontes de interrupção. O contidos no registro INTCON.
registrador de controle de interrupção (INTCON) registra solicitações
Os sinalizadores de interrupção periféricos estão contidos nos
de interrupção individuais em bits de sinalização. Ele também possui
registradores de função especial, PIR1 e PIR2. Os bits de habilitação
bits de habilitação de interrupção individual e global.
de interrupção correspondentes estão contidos nos registradores de
Nota: Os bits de flag de interrupção individuais são definidos função especial, PIE1 e PIE2, e o bit de habilitação de interrupção
independentemente do status de seu bit de máscara periférica está contido no registrador de função especial, INTCON.
correspondente ou do bit GIE.

Um bit de habilitação de interrupção global, GIE (INTCON<7>), Quando uma interrupção é respondida, o bit GIE é limpo para
habilita (se definido) todas as interrupções não mascaradas ou desabilitar qualquer outra interrupção, o endereço de retorno é
desabilita (se desmarcado) todas as interrupções. Quando o bit GIE colocado na pilha e o PC é carregado com 0004h. Uma vez na
está habilitado e o bit de flag e o bit de máscara de uma interrupção Rotina de Serviço de Interrupção, a(s) fonte(s) da interrupção
são definidos, a interrupção será vetorizada imediatamente. pode(m) ser determinada pelo polling dos bits de flag de interrupção.
Interrupções individuais podem ser desabilitadas através de seus O(s) bit(s) do sinalizador de interrupção deve(m) ser apagado(s) no
bits de habilitação correspondentes em vários registradores. Bits de software antes de reativar as interrupções para evitar interrupções
interrupção individuais são definidos independentemente do status recursivas.
do bit GIE. O bit GIE é apagado em Reset.
Para eventos de interrupção externos, como o pino INT ou
A instrução “return from interrupt”, RETFIE, sai da rotina de interrupção de alteração PORTB, a latência da interrupção será de
interrupção, assim como energiza o bit GIE, que reativa as três ou quatro ciclos de instrução. A latência exata depende de
interrupções. quando ocorre o evento de interrupção. A latência é a mesma para
instruções de um ou dois ciclos. Os bits de sinalização de interrupção
individuais são definidos independentemente do status de seu bit de
máscara correspondente, bit PEIE ou bit GIE.

FIGURA 14-10: LÓGICA DE INTERRUPÇÃO

EEIF
ISTO

PSPIF(1)
PSPI (1)

ADIF
FRANGO

Despertar (se estiver no modo de suspensão)


RCIF TMR0IF
RCIE TMR0IE

INTF
TXIF
NÃO
ESSA Interrupção para CPU
RBIF
SSPIF RBIE
SSPIE

CCP1IF ASSIM

CCP1IE
GIE

TMR2IF
TMR2IE

TMR1IF
TMR1IE

CCP2IF
CCP2IE
BCLIF
BCLIE

CMIF
CMIE

Nota 1: A interrupção PSP é implementada somente em dispositivos PIC16F874A/877A.

ÿ 2003 Microchip Technology Inc. DS39582B-página 153


Machine Translated by Google

PIC16F87XA
14.11.1 INTERRUPÇÃO INT 14.12 Salvamento de contexto durante interrupções
A interrupção externa no pino RB0/INT é acionada por borda, Durante uma interrupção, apenas o valor de retorno do PC é salvo
ou subindo se o bit INTEDG (OPTION_REG<6>) estiver definido ou na pilha. Normalmente, os usuários podem desejar salvar registros de
caindo se o bit INTEDG estiver limpo. Quando uma aresta válida chave durante uma interrupção (ou seja, registro W e status
aparece no pino RB0/INT, bit de flag, INTF registro). Isso terá que ser implementado em software.
(INTCON<1>), está definido. Esta interrupção pode ser desabilitada por
Para os dispositivos PIC16F873A/874A, o registro
apagando o bit de habilitação, INTE (INTCON<4>). Bit de sinalização INTF
W_TEMP deve ser definido nos Bancos 0 e 1 e
deve ser limpo em software no Interrupt Service
deve ser definido no mesmo deslocamento da base bancária
Rotina antes de reativar esta interrupção. O INT
endereço (ou seja, se W_TEMP for definido em 0x20 no Banco 0,
interrupção pode acordar o processador da suspensão se o bit
também deve ser definido em 0xA0 no Banco 1). Os registros,
INTE foi definido antes de entrar em suspensão. O Estado de
PCLATH_TEMP e STATUS_TEMP, são apenas
bit de habilitação de interrupção global, GIE, decide se
definido no Banco 0.
o processador ramifica para o vetor de interrupção seguindo
acordar. Consulte a Seção 14.14 “Modo de desligamento Como os 16 bytes superiores de cada banco são comuns em
(Sleep)” para obter detalhes sobre o modo Sleep. os dispositivos PIC16F876A/877A, registros de retenção temporária,
W_TEMP, STATUS_TEMP e PCLATH_TEMP,
14.11.2 INTERRUPÇÃO TMR0 deve ser colocado aqui. Esses 16 locais não

Um overflow (FFh ÿ 00h) no registrador TMR0 irá definir exigem serviços bancários e, portanto, facilitam o salvamento e a
restauração de contexto. O mesmo código mostrado em
bit de sinalizador, TMR0IF (INTCON<2>). A interrupção pode ser
habilitado/desabilitado configurando/apagando o bit de habilitação, O Exemplo 14-1 pode ser usado.

TMR0IE (INTCON<5>). Consulte a Seção 5.0 “Temporizador0


Módulo".

14.11.3 MUDANÇA DE INTCON DE PORTAB

Uma mudança de entrada em PORTB<7:4> define o bit de sinalização, RBIF


(INTCON<0>). A interrupção pode ser habilitada/desabilitada
definindo/limpando o bit de habilitação, RBIE (INTCON<4>). Ver
Seção 4.2 “PORTB e o Registro TRISB”.

EXEMPLO 14-1: SAVING STATUS, W E PCLATH REGISTERS NA RAM


MOVWF W_TEMP ;Copiar W para registro TEMP
SWAPF ESTADO, W ;Swap status a ser salvo em W ;banco 0, independente
CLRF STATUS do banco atual, Compensa IRP,RP1,RP0
MOVWF STATUS_TEMP ;Salva o status no banco zero STATUS_TEMP registrador
MOVF PCLATH, W ;Necessário apenas se estiver usando as páginas 1, 2 e/ou 3
MOVWF PCLATH_TEMP ;Salva PCLATH em W
CLRF PCLATH ;Página zero, independente da página atual
:
:(ISR) ;(Insira o código do usuário aqui)
:
MOVF PCLATH_TEMP, W ;Restaurar PCLATH
MOVWF PCLATH ;Mova W para PCLATH
SWAPF STATUS_TEMP,W ;Troca o registro STATUS_TEMP para W ;(define o banco
para o estado original)
MOVWF STATUS ;Move W para o registrador STATUS
SWAPF W_TEMP,F ;Trocar W_TEMP
SWAPF W_TEMP,W ;Troca W_TEMP por W

DS39582B-página 154 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
14.13 Cronômetro de Watchdog (WDT) Os valores do período de tempo limite do WDT podem ser encontrados em
Seção 17.0 "Características Elétricas" sob
O Watchdog Timer é um RC on-chip de execução gratuita parâmetro #31. Valores para o prescaler WDT (na verdade
oscilador que não requer nenhum um pós-escalador, mas compartilhado com o pré-escalador Timer0) pode
componentes. Este oscilador RC é separado do ser atribuído usando o registrador OPTION_REG.
Oscilador RC do pino OSC1/CLKI. Isso significa que
o WDT funcionará mesmo que o relógio no OSC1/CLKI Nota 1: As instruções CLRWDT e SLEEP

e os pinos OSC2/CLKO do dispositivo foram parados, limpe o WDT e o postscaler, se


por exemplo, pela execução de uma instrução SLEEP. atribuído ao WDT e impedi-lo de
tempo limite e gerando uma reinicialização do dispositivo
Durante a operação normal, um time-out WDT gera um doença.
Reinicialização do dispositivo (Reinicialização do temporizador do Watchdog). Se o dispositivo estiver
2: Quando uma instrução CLRWDT é executada
no modo Sleep, um tempo limite WDT faz com que o dispositivo
despertar e continuar com a operação normal (Watch dog Timer e o prescaler é atribuído ao WDT,
Wake-up). O bit TO no registrador de status a contagem do prescaler será apagada, mas o
será apagado após um tempo limite do Watchdog Timer. a atribuição do prescaler não é alterada.

O WDT pode ser desativado permanentemente limpando


bit de configuração, WDTE (Seção 14.1 “Configuração
bits”).

FIGURA 14-11: DIAGRAMA DE BLOCO DE TEMPORIZADOR DE WATCHDOG

Da fonte de relógio TMR0


(Figura 5-1)

0
M Pós-escalador
1
DENTRO

Temporizador WDT
X
8

8-para-1 MUX PS2:PS0

PSA
WDT
Ativar bit

Para TMR0 (Figura 5-1)

0 1

MUX PSA

WDT
Tempo esgotado

Nota: PSA e PS2:PS0 são bits no registrador OPTION_REG.

TABELA 14-7: RESUMO DOS REGISTROS DO TEMPORIZADOR DO WATCHDOG

Endereço Nome Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

2007h Config. bits (1) TERRA(1) CP1 CP0 PWRTE (1) WDTE FOSC1 FOSC0

81h, 181h OPTION_REG RBPU INTEDG T0CS T0SE Legenda: Células sombreadas PSA PS2 PS1 PS0

não são usadas pelo Watchdog Timer.


Nota 1: Veja o Registro 14-1 para operação destes bits.

ÿ 2003 Microchip Technology Inc. DS39582B-página 155


Machine Translated by Google

PIC16F87XA
14.14 Modo de Desligamento (Repouso) Quando a instrução SLEEP está sendo executada, a próxima instrução
(PC + 1) é pré-buscada. Para que o dispositivo acorde através de um
O modo de desligamento é inserido executando uma instrução SLEEP. evento de interrupção, o bit de habilitação de interrupção correspondente
deve ser definido (habilitado). O despertar é independente do estado do
Se habilitado, o Watchdog Timer será apagado, mas continua bit GIE. Se o bit GIE estiver limpo (desabilitado), o dispositivo continua
funcionando, o bit PD (Status<3>) é apagado, o bit TO (Status<4>) é a execução na instrução após a instrução SLEEP. Se o bit GIE estiver
definido e o driver do oscilador é desligado. As portas de E/S mantêm o setado (habilitado), o dispositivo executa a instrução após a instrução

status que tinham antes da execução da instrução SLEEP (condução SLEEP e então desvia para o endereço de interrupção (0004h). Nos
alta, baixa ou alta impedância). casos em que a execução da instrução após SLEEP não for desejável,
o usuário deve ter um NOP após a instrução SLEEP.

Para o menor consumo de corrente neste modo, coloque todos os pinos


de E/S em VDD ou VSS, certifique-se de que nenhum circuito externo
esteja consumindo corrente do pino de E/S, desligue o A/D e desative
14.14.2 DESPERTAR USANDO INTERRUPÇÕES
os relógios externos. Puxe todos os pinos de E/S que são entradas de
alta impedância, alta ou baixa externamente, para evitar correntes de Quando as interrupções globais são desabilitadas (GIE desenergizado)
comutação causadas por entradas flutuantes. A entrada T0CKI também e qualquer fonte de interrupção tem o bit de habilitação de interrupção e
deve estar em VDD ou VSS para menor consumo de corrente. A o bit de sinalização de interrupção definidos, ocorrerá um dos seguintes:
contribuição dos pull-ups on-chip no PORTB também deve ser • Se a interrupção ocorrer antes da execução de uma instrução
considerada. SLEEP, a instrução SLEEP será concluída como um NOP.
Portanto, o postscaler WDT e WDT não será apagado, o bit TO
O pino MCLR deve estar em um nível lógico alto (VIHMC). não será definido e os bits PD não serão apagados.

14.14.1 DESPERTAR DO SONO • Se a interrupção ocorrer durante ou após o


execução de uma instrução SLEEP, o dispositivo despertará
O dispositivo pode acordar da suspensão por meio de um dos seguintes
eventos: imediatamente do Sleep. A instrução SLEEP será executada
completamente antes do despertar. Portanto, o postscaler WDT
1. Entrada de reset externo no pino MCLR.
e WDT será apagado, o bit TO será definido e o bit PD será
2. Ativação do Watchdog Timer (se o WDT estiver ativado). apagado.
3. Interrupção do pino INT, mudança de porta RB ou interrupção
periférica.
Mesmo que os bits de sinalização tenham sido verificados antes de
A reinicialização externa do MCLR causará uma reinicialização do executar uma instrução SLEEP, pode ser possível que os bits de
dispositivo. Todos os outros eventos são considerados uma continuação sinalização sejam ativados antes que a instrução SLEEP seja concluída.
da execução do programa e causam um “despertar”. Os bits TO e PD Para determinar se uma instrução SLEEP foi executada, teste o bit PD.
no registrador de Status podem ser usados para determinar a causa do Se o bit PD estiver energizado, a instrução SLEEP foi executada como
Reset do dispositivo. O bit PD, que é definido na inicialização, é apagado NOP.
quando a suspensão é invocada. O bit TO é apagado se ocorrer um
Para garantir que o WDT seja limpo, uma instrução CLRWDT deve ser
tempo limite WDT e causar o despertar. executada antes de uma instrução SLEEP.
As seguintes interrupções periféricas podem despertar o dispositivo da
suspensão:

1. Leitura ou gravação do PSP (somente PIC16F874/877).


2. Interrupção TMR1. Timer1 deve estar operando como um contador
assíncrono.
3. Interrupção do modo de captura CCP.
4. Acionador de evento especial (Timer1 em modo Assíncrono
usando um relógio externo).
5. Interrupção de detecção de bit SSP (Iniciar/Parar).
6. SSP transmite ou recebe no modo Slave (SPI/I2C).
7. USART RX ou TX (modo escravo síncrono).
8. Conversão A/D (quando a fonte do relógio A/D é RC).
9. Conclusão da operação de gravação da EEPROM.
10. A saída do comparador muda de estado.

Outros periféricos não podem gerar interrupções, pois durante a


suspensão não há relógios no chip.

DS39582B-página 156 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
FIGURA 14-12: DESPERTAR DO SONO ATRAVÉS DA INTERRUPÇÃO

Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
OSC1

CLKO(4) TOST(2)

pino INT

Sinalizador INTF
(INTCON<1>) Interromper latência(2)

bit GIE
Processador em
(INTCON<7>)
Dorme
FLUXO DE INSTRUÇÕES

computador computador PC+1 PC+2 PC+2 PC + 2 0004h 0005h


Instrução
Buscado Inst(PC) = Dormir Inst(PC + 1) Inst(PC + 2) Inst(0004h) Inst(0005h)

Instrução
Inst(PC - 1) Dorme Inst(PC + 1) Ciclo fictício Ciclo fictício Inst(0004h)
Executado

Nota 1: Modo oscilador XT, HS ou LP assumido.


2: TOST = 1024 TOSC (desenho fora de escala). Este atraso não estará lá para o modo RC Oscillator.
3: GIE = 1 assumido. Neste caso, após o despertar, o processador salta para a rotina de interrupção.
Se GIE = 0, a execução continuará em linha.
4: CLKO não está disponível nestes modos de oscilador, mas é mostrado aqui para referência de tempo.

14.15 Depurador em Circuito 14.16 Verificação do Programa/Proteção do


Código
Quando o bit DEBUG na palavra de configuração é programado para
'0', a funcionalidade do depurador no circuito é Se o(s) bit(s) de proteção do código não foram
ativado. Esta função permite depuração simples programado, a memória de programa no chip pode ser
funções quando usado com MPLAB® ICD. Quando o
leia para fins de verificação.
microcontrolador tem esse recurso habilitado, alguns dos
recursos não estão disponíveis para uso geral. Tabela 14-8 14.17 Locais de identificação
mostra quais recursos são consumidos pelo
depurador em segundo plano. Quatro locais de memória (2000h-2003h) são designados
como locais de ID, onde o usuário pode armazenar checksum ou
TABELA 14-8: RECURSOS DO DEBUGGER outros números de identificação de código. Esses locais são
não acessíveis durante a execução normal, mas são
Pinos de E/S RB6, RB7
legível e gravável durante a programação/verificação. Isso é
Pilha 1 nível
recomendado que apenas os 4 bits menos significativos de
Memória do programa O endereço 0000h deve ser NOP a localização do ID são usados.

Últimas 100h palavras

Memória de dados 0x070 (0x0F0, 0x170, 0x1F0)


0x1EB-0x1EF

Para usar a função de depuração em circuito do microcontrolador, o


projeto deve implementar conexões de programação serial em
circuito para MCLR/VPP, VDD, GND, RB7
e RB6. Isso fará a interface com o depurador no circuito
módulo disponível da Microchip ou um dos terceiros
empresas de ferramentas de desenvolvimento de festas.

ÿ 2003 Microchip Technology Inc. DS39582B-página 157


Machine Translated by Google

PIC16F87XA
14.18 Programação serial em circuito Nota 1: O modo de programação de alta tensão está sempre
disponível, independentemente do estado do bit
Os microcontroladores PIC16F87XA podem ser programados em
LVP, aplicando VIHH ao pino MCLR.
série enquanto estão no circuito de aplicação final. Isso é feito
simplesmente com duas linhas para clock e dados e três outras
linhas para alimentação, terra e tensão de programação. Isso 2: Enquanto estiver no modo ICSP de baixa tensão, o
permite que os clientes fabriquem placas com dispositivos não pino RB3 não pode mais ser usado como um pino
programados e depois programem o microcontrolador antes de de E/S de uso geral.
enviar o produto. Isso também permite que o firmware mais recente
3: Ao usar Programação ICSP de Baixa Tensão (LVP)
ou um firmware personalizado seja programado.
e os pull-ups no PORTB estão habilitados, o bit 3
no registro TRISB deve ser desenergizado para
Ao usar ICSP, a peça deve ser fornecida em 4,5 V a 5,5 V se for desabilitar o pull-up no RB3 e garantir o bom
executado um apagamento em massa. Isso inclui a reprogramação funcionamento do dispositivo.
do código de proteção, tanto de um estado ligado para um estado
desligado. Para todos os outros casos de ICSP, a peça pode ser 4: O RB3 não deve flutuar se o LVP estiver habilitado.
programada nas tensões normais de operação.
Um dispositivo pull-down externo deve ser usado
Isso significa que valores de calibração, IDs de usuário exclusivos ou código para padronizar o dispositivo para o modo de
de usuário podem ser reprogramados ou adicionados.
operação normal. Se o RB3 flutuar alto, o dispositivo
Para detalhes completos da programação serial, consulte a PIC16F87XA entrará no modo de programação.
“Especificação de programação de memória flash
PIC16F87XA” (DS39589).
5: O modo LVP é ativado por padrão em todos os
dispositivos enviados pela Microchip. Ele pode ser
14.19 Baixa Tensão (Fornecimento Único) desabilitado limpando o bit LVP no registrador
Programação ICSP CONFIG.

O bit LVP da palavra de configuração habilita a programação ICSP 6: Desativar o LVP fornecerá compatibilidade máxima
de baixa tensão. Este modo permite que o microcontrolador seja com outros dispositivos PIC16CXXX.
programado via ICSP utilizando uma fonte VDD na faixa de tensão
de operação. Isso significa apenas que o VPP não precisa ser
levado ao VIHH, mas pode ser deixado na tensão normal de Se o modo de programação de baixa tensão não for usado, o bit
operação. Neste modo, o pino RB3/PGM é dedicado à função de LVP pode ser programado para '0' e RB3/PGM se torna um pino de
programação e deixa de ser um pino de E/S de uso geral. Durante E/S digital. No entanto, o bit LVP só pode ser programado quando
a programação, o VDD é aplicado ao pino MCLR. Para entrar no a programação é inserida com VIHH no MCLR. O bit LVP só pode
modo de programação, o VDD deve ser aplicado ao RB3/PGM ser carregado ao usar alta tensão no MCLR.
desde que o bit LVP esteja definido.
Deve-se notar que, uma vez que o bit LVP é programado para '0',
O bit LVP é padronizado como ligado ('1') de fábrica. somente o modo de programação de alta tensão está disponível e
somente o modo de programação de alta tensão pode ser usado
para programar o dispositivo.

Ao usar ICSP de baixa tensão, a peça deve ser fornecida em 4,5 V


a 5,5 V se for executado um apagamento em massa. Isso inclui a
reprogramação dos bits de proteção de código de um estado ligado
para um estado desligado. Para todos os outros casos de ICSP de
baixa tensão, a peça pode ser programada na tensão de operação
normal. Isso significa que valores de calibração, IDs de usuário
exclusivos ou código de usuário podem ser reprogramados ou adicionados.

DS39582B-página 158 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
15.0 RESUMO DO CONJUNTO DE INSTRUÇÕES Por exemplo, uma instrução “CLRF PORTB” lerá
PORTB, limpe todos os bits de dados e escreva o resultado
O conjunto de instruções PIC16 é altamente ortogonal e de volta para PORTB. Este exemplo teria o resultado não intencional
composto por três categorias básicas: de que a condição que define o sinalizador RBIF
seria limpo.
• Operações orientadas a bytes

• Operações orientadas a bits


TABELA 15-1: CAMPO OPCODE
• Operações literais e de controle DESCRIÇÕES
Cada instrução PIC16 é uma palavra de 14 bits dividida em um
Campo Descrição
opcode que especifica o tipo de instrução e um ou
mais operandos que especificam ainda mais a operação de f Endereço do arquivo de registro (0x00 a 0x7F)
a instrução. Os formatos para cada uma das categorias Dentro
Registro de trabalho (acumulador)
é apresentado na Figura 15-1, enquanto os vários opcodes b Endereço de bit dentro de um registro de arquivo de 8 bits
campos estão resumidos na Tabela 15-1.
k Campo literal, dados constantes ou rótulo
A Tabela 15-2 lista as instruções reconhecidas pelo
x Não importa a localização (= 0 ou 1).
Montador MPASM™. Uma descrição completa de cada
O montador irá gerar código com x = 0.
instrução também está disponível no PICmicro® Mid-Range
É a forma de uso recomendada para
Manual de referência da família MCU (DS33023).
compatibilidade com todas as ferramentas de software Microchip.
Para instruções orientadas a byte , 'f' representa um arquivo
d Seleção de destino; d = 0: armazena o resultado em W,
registrador designador e 'd' representa um destino
d = 1: armazena o resultado no registro do arquivo f.
designador. O designador de registro de arquivo especifica quais
O padrão é d = 1.
registrador de arquivo deve ser usado pela instrução.
Contador de programas para PC
O designador de destino especifica onde o resultado da
TO bit de tempo limite
a operação deve ser colocada. Se 'd' for zero, o resultado é
colocado no registrador W. Se 'd' for um, o resultado é colocado Bit de desligamento PD
no registrador de arquivo especificado na instrução.

Para instruções orientadas a bits , 'b' representa um campo de bits FIGURA 15-1: FORMATO GERAL PARA
designador que seleciona o bit afetado pela operação, enquanto 'f' INSTRUÇÕES

representa o endereço do arquivo no qual


o bit está localizado. Operações de registro de arquivo orientadas a byte
13 876 0
Para operações literais e de controle , 'k' representa um d
CÓDIGO DE OPERAÇÃO
f (arquivo #)
constante de oito ou onze bits ou valor literal
d = 0 para destino W
Um ciclo de instrução consiste em quatro períodos de oscilador; d = 1 para destino f
para uma frequência de oscilador de 4 MHz, isso dá um f = endereço de registro de arquivo de 7 bits

tempo de execução da instrução de 1 µs. Todas as instruções são


executado dentro de um único ciclo de instrução, a menos que um Operações de registro de arquivo orientadas a bits
teste condicional é verdadeiro, ou o contador de programa é 13 10 9 76 0
alterado como resultado de uma instrução. Quando isso ocorre, CÓDIGO DE OPERAÇÃO
b (BIT #) f (arquivo #)
a execução leva dois ciclos de instrução com o
b = endereço de bits de 3 bits
segundo ciclo executado como um NOP.
f = endereço de registro de arquivo de 7 bits
Nota: Para manter a compatibilidade ascendente com
futuros produtos PIC16F87XA, não use Operações literais e de controle
as instruções OPTION e TRIS.
Em geral
Todos os exemplos de instruções usam o formato '0xhh' para 13 87 0
representam um número hexadecimal, onde 'h' significa um CÓDIGO DE OPERAÇÃO
k (literal)
dígito hexadecimal.
k = valor imediato de 8 bits
15.1 OPERAÇÕES DE LEITURA-MODIFICAÇÃO-
GRAVAÇÃO Apenas instruções CALL e GOTO
13 11 10 0
Qualquer instrução que especifique um registro de arquivo como parte de
CÓDIGO DE OPERAÇÃO
k (literal)
a instrução executa um Read-Modify-Write (RMW)
Operação. O registro é lido, os dados são modificados, k = valor imediato de 11 bits
e o resultado é armazenado de acordo com a instrução ou o designador
de destino 'd'. Uma operação de leitura
é executado em um registrador mesmo se a instrução escreve
a esse registro.

ÿ 2003 Microchip Technology Inc. DS39582B-página 159


Machine Translated by Google

PIC16F87XA
TABELA 15-2: CONJUNTO DE INSTRUÇÕES PIC16F87XA

Código de operação de 14 bits


Mnemônico, Status
Descrição Ciclos Notas
Operandos Afetado
MSb LSb

OPERAÇÕES DE REGISTRO DE ARQUIVO ORIENTADO A BYTE

JURAMENTO f, Adicione W e f 1 00 0111 dfff ffff C,DC,Z 1,2


EWF df, E W com f 1 00 0101 dfff ffff A PARTIR DE
1,2
CLRF df Limpar f 1 00 0001 ffff ffff A PARTIR DE 2
CLRW - Limpar W 1 00 0001 0xxx xxxx A PARTIR DE

COMF f, Complemento f 1 00 1001 dfff ffff A PARTIR DE


1,2
DECF df, Diminuir f 1 00 0011 dfff ffff A PARTIR DE
1,2
DECFSZ df, Decrementa f, Pule se 0 1(2) 1 00 1011 dfff ffff 1,2,3
INCF df, Incrementar f 1(2) 00 1010 dfff ffff A PARTIR DE
1,2
INCFSZ df, Incrementar f, pular se 0 1111 00 1111 dfff ffff 1,2,3
IORWF df, Inclusivo OR W com f 111 00 0100 dfff ffff A PARTIR DE
1,2
MOVF df, Mover f 11 00 1000 dfff ffff A PARTIR DE
1,2
MOVWF df Mover W para f 00 0000 ffff ffff
NOP - 00 0000 0xx0 0000
Nenhuma operação
RLF f, Girar para a esquerda f através de Carregar 00 1101 dfff ffff C 1,2
RRF df, Girar para a direita f através do transporte 00 1100 dfff ffff C 1,2
SUBWF df, Subtraia W de f 00 0010 dfff ffff C,DC,Z 1,2
SWAPF df, Trocar petiscos em f 00 1110 dfff ffff 1,2
XORWF df, d Exclusivo OU W com f 00 0110 dfff ffff A PARTIR DE
1,2

OPERAÇÕES DE REGISTRO DE ARQUIVO ORIENTADO A BIT

BCF f, Bit Limpar f 01 00bb bffff ffff 1,2


BSF bf, Conjunto de bits f 01 01bb bffff ffff 1,2
BTFSC bf, Teste de Bit f, Ignorar se Limpar 111 01 10bb bffff ffff 3
BTFSS bf, b Teste de Bit f, Ignorar se Definido (2) 1 (2) 01 11bb bffff ffff 3

OPERAÇÕES LITERAIS E DE CONTROLE

ADDW Adicione Literal e W 1 11 111x kkkk kkkk C,DC,Z


ANDLW E Literal com W 1 11 1001 kkkk kkkk A PARTIR DE

LIGAR kkk Chamar sub-rotina 2 10 0kkk kkkk kkkk


CLRWDT - 1 00 0000 0110 0100 PARA, PD
Limpar temporizador do watchdog
VÁ PARA Ir para o endereço 2 10 1 kkk kkkk kkkk
IORLW Inclusivo OU Literal com W 1 11 1000 kkkk kkkk A PARTIR DE

MOVLW kkk Mover Literal para W 1 11 00xx kkkk kkkk


RETFIE - 00 0000 0000 1001
Retorno da interrupção 2

RETIRAR k Retorno com Literal em W 2 11 01xx kkkk kkkk


RETORNA - Retorno da Sub-rotina 2 00 0000 0000 1000
DORME - 00 0000 0110 0011
Entre no modo de espera 1 PARA, PD
SUBLW Subtraia W de Literal 1 11 110x kkkk kkkk C,DC,Z
XORLW kk Exclusivo OU Literal com W 1 11 1010 kkkk kkkk A PARTIR DE

Nota 1: Quando um registrador de E/S é modificado em função de si mesmo (por exemplo, MOVF PORTB, 1), o valor utilizado será aquele valor presente nos
próprios pinos. Por exemplo, se a trava de dados for '1' para um pino configurado como entrada e for baixado por um dispositivo externo, os dados
serão escritos de volta com um '0'.
2: Se esta instrução for executada no registrador TMR0 (e onde aplicável, d = 1), o prescaler será zerado se atribuído ao módulo Timer0.

3: Se Program Counter (PC) for modificado, ou um teste condicional for verdadeiro, a instrução requer dois ciclos. O segundo ciclo é
executado como um NOP.

Nota: Informações adicionais sobre o conjunto de instruções de médio porte estão disponíveis no Manual de referência da
família PICmicro® Mid-Range MCU (DS33023).

DS39582B-página 160 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
15.2 Descrições das Instruções
ADDW Adicione Literal e W BCF Bit Limpar f

Sintaxe: [ etiqueta ] ADDLW k Sintaxe: [ etiqueta ] BCF f,b

Operandos: 0 ÿ k ÿ 255 Operandos: 0 ÿ f ÿ 127


0ÿbÿ7
Operação: (W) + k ÿ (W)

Status Afetado: C, DC, Z Operação: 0 ÿ (f<b>)


Status Afetado: Nenhum
Descrição: O conteúdo do registrador W é
adicionado ao literal de oito bits 'k' e o Descrição: O bit 'b' no registrador 'f' é apagado.
resultado é colocado no registrador W.

JURAMENTO Adicione W e f BSF Conjunto de bits f

Sintaxe: [ label ] ADDWF f,d Sintaxe: [ etiqueta ] BSF f,b

Operandos: 0 ÿ f ÿ 127 Operandos: 0 ÿ f ÿ 127


d ÿ [0,1] 0ÿbÿ7

Operação: (W) + (f) ÿ (destino) Operação: 1 ÿ (f<b>)

Status Afetado: C, DC, Z Status Afetado: Nenhum

Descrição: Adicione o conteúdo do registrador W com Descrição: Bit 'b' no registrador 'f' é definido.
o registrador 'f'. Se 'd' for '0', o resultado é
armazenado no registrador W. Se 'd' for
'1', o resultado é armazenado de volta no
registrador 'f'.

ANDLW E Literal com W BTFSS Teste de Bit f, Ignorar se Definido

Sintaxe: [ label ] ANDLW k Sintaxe: [ label ] BTFSS f,b

Operandos: 0 ÿ k ÿ 255 Operandos: 0 ÿ f ÿ 127


0ÿb<7
Operação: (VARINHA. (k) ÿ (W)
Status Afetado: Z Operação: pule se (f<b>) = 1
Status Afetado: Nenhum
Descrição: O conteúdo do registrador W é AND'ed
com o literal de oito bits 'k'. O resultado Descrição: Se o bit 'b' no registrador 'f' for '0', a
é colocado no registrador W. próxima instrução é executada.
Se o bit 'b' for '1', então a próxima instrução
é descartada e um NOP é executado em
seu lugar, tornando esta uma instrução 2
TCY .

EWF E W com f BTFSC Teste de Bits, Ignorar se Limpar

Sintaxe: [ label ] ANDWF f,d Sintaxe: [ etiqueta ] BTFSC f,b

Operandos: 0 ÿ f ÿ 127 Operandos: 0 ÿ f ÿ 127


d ÿ [0,1] 0ÿbÿ7

Operação: (VARINHA. (f) ÿ (destino) Operação: pule se (f<b>) = 0

Status Afetado: Z Status Afetado: Nenhum

Descrição: E o registrador W com registrador 'f'. Se Descrição: Se o bit 'b' no registrador 'f' for '1', a
'd' for '0', o resultado é armazenado no próxima instrução é executada.
registrador W. Se 'd' for '1', o resultado é Se o bit 'b' no registrador 'f' for '0', a
armazenado de volta no registrador 'f'. próxima instrução é descartada e um NOP
é executado em vez disso, tornando esta
uma instrução 2 TCY .

ÿ 2003 Microchip Technology Inc. DS39582B-página 161


Machine Translated by Google

PIC16F87XA

LIGAR Chamar sub-rotina CLRWDT Limpar temporizador do watchdog

Sintaxe: [ etiqueta ] LIGUE k Sintaxe: [rótulo] CLRWDT

Operandos: 0 ÿ k ÿ 2047 Operandos: Nenhum

Operação: (PC)+ 1ÿ TOS, Operação: 00h ÿ WDT


k ÿ PC<10:0>, 0 ÿ pré-escalador WDT,
(PCLATH<4:3>) ÿ PC<12:11> 1 ÿ PARA
1 ÿ DP
Status Afetado: Nenhum
Status Afetado: TO, PD
Descrição: Chamar sub-rotina. Primeiro, o
endereço de retorno (PC+1) é colocado Descrição: A instrução CLRWDT reinicializa o
na pilha. O endereço imediato de onze Watchdog Timer. Ele também redefine o
bits é carregado nos bits do PC <10:0>. prescaler do WDT. Os bits de status, TO
Os bits superiores do PC são carregados e PD, são definidos.
do PCLATH.
CALL é uma instrução de dois ciclos.

CLRF Limpar f COMF Complemento f

Sintaxe: [ label ] CLRF f Sintaxe: [ etiqueta ] COMF f,d

Operandos: 0 ÿ f ÿ 127 Operandos: 0 ÿ f ÿ 127


d ÿ [0,1]
Operação: 00h ÿ (f)
1ÿZ Operação: (f) ÿ (destino)
Status Afetado: Z Status Afetado: Z

Descrição: O conteúdo do registrador 'f' é Descrição: O conteúdo do registrador 'f' é


apagado e o bit Z é definido. complementado. Se 'd' for '0', o
resultado será armazenado em W. Se
'd' for '1', o resultado será armazenado
de volta no registrador 'f'.

CLRW Limpar W DECF Diminuir f

Sintaxe: [rótulo] CLRW Sintaxe: [ etiqueta ] DECF f,d

Operandos: Nenhum Operandos: 0 ÿ f ÿ 127


d ÿ [0,1]
Operação: 00h ÿ (W)
1ÿZ Operação: (f) - 1 ÿ (destino)

Status Afetado: Z Status Afetado: Z

Descrição: O registrador W é apagado. Bit zero (Z) Descrição: Decrementar o registro 'f'. Se 'd' for '0', o
está definido. resultado é armazenado no registrador
W. Se 'd' for '1', o resultado é armazenado
de volta no registrador 'f'.

DS39582B-página 162 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA

DECFSZ Decrementa f, Pule se 0 INCFSZ Incrementar f, pular se 0

Sintaxe: [ label ] DECFSZ f,d Sintaxe: [ label ] INCFSZ f,d

Operandos: 0 ÿ f ÿ 127 Operandos: 0 ÿ f ÿ 127


d ÿ [0,1] d ÿ [0,1]

Operação: (f) - 1 ÿ (destino); pule se Operação: (f) + 1 ÿ (destino),


resultado = 0 pule se resultado = 0
Status Afetado: Nenhum Status Afetado: Nenhum

Descrição: O conteúdo do registrador 'f' é Descrição: O conteúdo do registrador 'f' é


decrementado. Se 'd' for '0', o resultado é incrementado. Se 'd' for '0', o resultado é
colocado no registrador W. Se 'd' for '1', o colocado no registrador W. Se 'd' for '1', o
resultado é colocado de volta no registrador resultado é colocado de volta no registrador
'f'. 'f'.
Se o resultado for '1', a próxima instrução Se o resultado for '1', a próxima instrução
é executada. Se o resultado for '0', então é executada. Se o resultado for '0', um
um NOP é executado, tornando-se uma NOP é executado, tornando-se uma
instrução 2 TCY . instrução 2 TCY .

VÁ PARA Ramificação Incondicional IORLW Inclusivo OU Literal com W

Sintaxe: [ label ] GOTO k Sintaxe: [ label ] IORLW k

Operandos: 0 ÿ k ÿ 2047 Operandos: 0 ÿ k ÿ 255

Operação: k ÿ PC<10:0> Operação: (W) .OR. k ÿ (W)


PCLATH<4:3> ÿ PC<12:11>
Status Afetado: Z
Status Afetado: Nenhum
Descrição: O conteúdo do registrador W é OR'ed com
Descrição: GOTO é uma ramificação incondicional. o literal de oito bits 'k'.
O valor imediato de onze bits é carregado O resultado é colocado no registrador
em bits de PC <10:0>. Os bits superiores W.
do PC são carregados de PCLATH<4:3>.
GOTO é uma instrução de dois ciclos.

INCF Incrementar f IORWF Inclusivo OR W com f

Sintaxe: [ etiqueta ] INCF f,d Sintaxe: [ label ] IORWF f,d

Operandos: 0 ÿ f ÿ 127 Operandos: 0 ÿ f ÿ 127


d ÿ [0,1] d ÿ [0,1]

Operação: (f) + 1 ÿ (destino) Operação: (W) .OR. (f) ÿ (destino)

Status Afetado: Z Status Afetado: Z

Descrição: O conteúdo do registrador 'f' é Descrição: Inclusivo OR o registrador W com


incrementado. Se 'd' for '0', o resultado é registrador 'f'. Se 'd' for '0', o resultado é
colocado no registrador W. Se 'd' for '1', o colocado no registrador W. Se 'd' for '1', o
resultado é colocado de volta no registrador resultado é colocado de volta no registrador
'f'. 'f'.

ÿ 2003 Microchip Technology Inc. DS39582B-página 163


Machine Translated by Google

PIC16F87XA

RLF Girar para a esquerda f através de Carregar DORME

Sintaxe: [ etiqueta ] RLF f,d Sintaxe: [ etiqueta ] DORMIR

Operandos: 0 ÿ f ÿ 127 Operandos: Nenhum

d ÿ [0,1]
Operação: 00h ÿ WDT,
Operação: Veja a descrição abaixo 0 ÿ pré-escalador WDT,
Status Afetado: C 1 ÿ PARA,
0 ÿ DP
Descrição: O conteúdo do registrador 'f' é girado
Status Afetado: TO, PD
um bit para a esquerda através do sinalizador
Carry. Se 'd' for '0', o resultado é colocado Descrição: O bit de status de desligamento, PD, é
no registrador W. Se 'd' for '1', o resultado é apagado. O bit de status de tempo
armazenado de volta no registrador 'f'. limite, TO, é definido. Watchdog Timer
C Registre-se e seu prescaler são apagados.
O processador é colocado no modo
Sleep com o oscilador parado.

RETORNA Retorno da Sub-rotina SUBLW Subtraia W de Literal

Sintaxe: [ etiqueta ] VOLTAR Sintaxe: [ etiqueta ] SUBLW k

Operandos: Nenhum Operandos: 0 ÿ k ÿ 255

Operação: TOS ÿ PC Operação: k - (W) ÿ (W)


Status Afetado: Nenhum Status Afetado: C, DC, Z

Descrição: Retorno da sub-rotina. A pilha é POPed e Descrição: O registrador W é subtraído (método do


o topo da pilha (TOS) é carregado no complemento de 2) do literal de oito bits
contador de programa. Esta é uma 'k'. O resultado é colocado no registrador
instrução de dois ciclos. W.

RRF Girar para a direita f através do transporte SUBWF Subtraia W de f

Sintaxe: [ etiqueta ] RRF f,d Sintaxe: [ label ] SUBWF f,d

Operandos: 0 ÿ f ÿ 127 Operandos: 0 ÿ f ÿ 127


d ÿ [0,1] d ÿ [0,1]

Operação: Veja a descrição abaixo Operação: (f) - (W) ÿ (destino)


Status Afetado: C Status C, DC, Z
Afetado:
Descrição: O conteúdo do registrador 'f' é girado
um bit para a direita através do sinalizador Descrição: Subtrair (método do complemento de 2)
Carry. Se 'd' for '0', o resultado é colocado Registro W do registro 'f'. Se 'd' for '0', o
no registrador W. resultado é armazenado no registrador W.
Se 'd' for '1', o resultado é colocado Se 'd' for '1', o resultado é armazenado de
de volta no registrador 'f'. volta no registrador 'f'.
C Registre-se

DS39582B-página 164 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA

SWAPF Trocar Nibbles em f XORWF Exclusivo OU W com f

Sintaxe: [ etiqueta ] SWAPF f,d Sintaxe: [ label ] XORWF f,d


Operandos: 0 ÿ f ÿ 127 Operandos: 0 ÿ f ÿ 127
d ÿ [0,1] d ÿ [0,1]
Operação: (f<3:0>) ÿ (destino<7:4>), Operação: (W) .XOR. (f) ÿ (destino)
(f<7:4>) ÿ (destino<3:0>) Status Afetado: Z
Status Afetado: Nenhum
Descrição: OR exclusivo o conteúdo do registrador
Descrição: Os nibbles superior e inferior do W com o registrador 'f'. Se 'd' for '0', o
registro 'f' são trocados. Se 'd' for '0', resultado é armazenado no registrador
o resultado é colocado no registrador W. Se 'd' for '1', o resultado é
W. Se 'd' for '1', o resultado é colocado armazenado de volta no registrador 'f'.
no registrador 'f'.

XORLW Exclusivo OU Literal com W

Sintaxe: [ label ] XORLW k


Operandos: 0 ÿ k ÿ 255

Operação: (W) .XOR. k ÿ (W)


Status Afetado: Z

Descrição: O conteúdo do registrador W é


submetido a um XOR com o literal
de oito bits 'k'. O resultado é
colocado no registrador W.

ÿ 2003 Microchip Technology Inc. DS39582B-página 165


Machine Translated by Google

PIC16F87XA
NOTAS:

DS39582B-página 166 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
16.0 SUPORTE AO DESENVOLVIMENTO 16.1 Software do Ambiente de Desenvolvimento
Integrado MPLAB
Os microcontroladores PICmicro® são suportados com uma gama
completa de ferramentas de desenvolvimento de hardware e software: O software MPLAB IDE traz uma facilidade de desenvolvimento de

• Ambiente de desenvolvimento integrado software nunca vista no mercado de microcontroladores de 8/16 bits. O
MPLAB IDE é um aplicativo baseado em Windows® que contém:
- Software MPLAB® IDE •

Montadores/Compiladores/Linkers
- Montador MPASMTM • Uma interface para ferramentas de
depuração - simulador
- Compiladores MPLAB C17 e MPLAB C18 C
- programador (vendido separadamente) -
- Ligador de Objetos MPLINKTM/
Bibliotecário de Objetos MPLIBTM emulador (vendido separadamente) -

- Compilador MPLAB C30 C depurador no circuito (vendido separadamente) •


Um editor completo com contexto codificado por cores
- Montador/Linker/Biblioteca MPLAB ASM30 • Simuladores
• Um gerente de projeto múltiplo •

- Simulador de software MPLAB SIM Janelas de dados personalizáveis com edição direta de
conteúdo
- Simulador de software MPLAB dsPIC30
• Emuladores • Depuração de código-fonte de alto nível •
Inspeção com o mouse sobre variáveis • Ampla
- Emulador em circuito MPLAB ICE 2000
- Emulador em circuito MPLAB ICE 4000 ajuda on-line

• Depurador em circuito O MPLAB IDE permite:

- MPLAB ICD 2 • Edite seus arquivos de origem (montagem ou C) • Montagem

• Programadores de dispositivos (ou compilação) com um toque e download para ferramentas de


emulador e simulador PICmicro (atualiza automaticamente todas
- Programador de dispositivo universal PRO MATE® II
as informações do projeto)
- Programador de Desenvolvimento PICSTART® Plus • Placas
de Demonstração de Baixo Custo • Depure usando:

- Placa de Demonstração PICDEMTM 1 - arquivos de origem (assembly ou C) -

- Placa de Demonstração PICDEM.netTM arquivo de listagem absoluta (assembly misto e C) - código


de máquina
- Placa de Demonstração PICDEM 2 Plus
- Placa de Demonstração PICDEM 3 O MPLAB IDE suporta várias ferramentas de depuração em um único

- Placa de Demonstração PICDEM 4 paradigma de desenvolvimento, desde simuladores econômicos, passando


por depuradores de circuito de baixo custo, até emuladores completos.
- Placa de Demonstração PICDEM 17
Isso elimina a curva de aprendizado ao atualizar para ferramentas com
- Placa de Demonstração PICDEM 18R
maior flexibilidade e potência.
- Placa de Demonstração PICDEM LIN
- Placa de demonstração USB PICDEM
16.2 Montagem MPASM
• Kits de avaliação
- KEELOQ® O montador MPASM é um montador de macro universal completo para
- PICDEM MSC - todos os PICmicro MCUs.

microID® O montador MPASM gera arquivos de objetos relocáveis para o vinculador


- POSSO de objetos MPLINK, arquivos HEX padrão Intel®, arquivos MAP para

- PowerSmart® detalhar o uso de memória e referência de símbolos, arquivos LST


absolutos que contêm linhas de origem e código de máquina gerado e
- Analógico
arquivos COFF para depuração.

Os recursos do montador MPASM incluem:

• Integração em projetos MPLAB IDE • Macros


definidas pelo usuário para simplificar o código assembly • Montagem
condicional para fonte multiuso
arquivos

• Diretrizes que permitem controle total sobre o processo de


montagem

ÿ 2003 Microchip Technology Inc. DS39582B-página 167


Machine Translated by Google

PIC16F87XA
16.3 MPLAB C17 e MPLAB C18 16.6 Montador, Linker e Bibliotecário MPLAB ASM30
Compiladores C
Desenvolvimento do Código MPLAB C17 e MPLAB C18 A montadora MPLAB ASM30 produz
Os sistemas são compiladores ANSI C completos para código de máquina da linguagem assembly simbólica para
A família PIC17CXXX e PIC18CXXX da Microchip de dispositivos dsPIC30F. O compilador MPLAB C30 usa o
microcontroladores. Esses compiladores fornecem poderosos assembler para produzir seu arquivo objeto. O montador
capacidades de integração, otimização de código superior e gera arquivos de objetos relocáveis que podem então ser
facilidade de uso não encontrada com outros compiladores. arquivados ou vinculados a outros arquivos de objetos realocáveis e
archives para criar um arquivo executável. Recursos notáveis
Para facilitar a depuração no nível do código-fonte, os compiladores fornecem
da montadora incluem:
informações de símbolo que são otimizadas para o MPLAB IDE
depurador. • Suporte para todo o conjunto de instruções dsPIC30F
• Suporte para dados de ponto fixo e ponto flutuante
16.4 Ligador de Objetos MPLINK/ • Interface da Linha de comando
Bibliotecário de Objetos MPLIB • Conjunto de diretivas ricas

O vinculador de objetos MPLINK combina • Linguagem de macro flexível


objetos criados pelo montador MPASM e o • Compatibilidade com MPLAB IDE
Compiladores MPLAB C17 e MPLAB C18 C. Ele pode ligar
objetos relocáveis de bibliotecas pré-compiladas, usando 16.7 Simulador de Software MPLAB SIM
diretivas de um script vinculador.
O simulador de software MPLAB SIM permite o desenvolvimento de
O bibliotecário de objetos MPLIB gerencia a criação e
código em um ambiente hospedado em PC, simulando a
modificação de arquivos de biblioteca de código pré-compilado. Quando Microcontroladores da série PICmicro em uma instrução
uma rotina de uma biblioteca é chamada de um arquivo fonte, apenas
nível. Em qualquer instrução, as áreas de dados podem ser
os módulos que contêm essa rotina serão vinculados em
examinados ou modificados e os estímulos podem ser aplicados a partir
com o aplicativo. Isso permite que grandes bibliotecas sejam
um arquivo, ou pressionamento de tecla definido pelo usuário, para
usado eficientemente em muitas aplicações diferentes.
qualquer pino. A execução pode ser realizada em Single-Step, Execute Until
Os recursos do vinculador/biblioteca de objetos incluem: Modo de interrupção ou rastreamento.

• Vinculação eficiente de bibliotecas únicas em vez de muitas O simulador MPLAB SIM suporta totalmente
arquivos menores depuração usando o MPLAB C17 e MPLAB C18
• Manutenibilidade de código aprimorada por agrupamento Compiladores C, bem como o montador MPASM. o
módulos relacionados juntos simulador de software oferece a flexibilidade de desenvolver e
código de depuração fora do ambiente de laboratório,
• Criação flexível de bibliotecas com fácil listagem, substituição,
tornando-o um software excelente e econômico
exclusão e extração de módulos
ferramenta de desenvolvimento.

16.5 Compilador MPLAB C30 C


16.8 Simulador de Software MPLAB SIM30
O compilador MPLAB C30 C é um compilador ANSI completo
O simulador de software MPLAB SIM30 permite
compatível, otimizando o compilador que traduz o padrão
desenvolvimento em um ambiente hospedado por PC, simulando
Programas ANSI C em linguagem assembly dsPIC30F
os microcontroladores da série dsPIC30F em uma instrução
fonte. O compilador também suporta muitas opções de linha de
nível. Em qualquer instrução, as áreas de dados podem ser
comando e extensões de linguagem para
examinados ou modificados e os estímulos podem ser aplicados a partir
vantagem dos recursos de hardware do dispositivo dsPIC30F e permite
um arquivo, ou pressionamento de tecla definido pelo usuário, para qualquer um dos pinos.
um controle preciso do código do compilador
gerador. O simulador MPLAB SIM30 suporta totalmente
depuração usando o compilador MPLAB C30 C e
MPLAB C30 é distribuído com um ANSI C completo
Montador MPLAB ASM30. O simulador é executado em qualquer
biblioteca padrão. Todas as funções da biblioteca foram validadas e
um modo de linha de comando para tarefas automatizadas ou de
estão em conformidade com o padrão de biblioteca ANSI C. o
IDE MPLAB. Este simulador de alta velocidade foi projetado para
biblioteca inclui funções para manipulação de strings,
depurar, analisar e otimizar o DSP demorado
alocação dinâmica de memória, conversão de dados, cronometragem
rotinas.
e funções matemáticas (trigonométricas, exponenciais e hiperbólicas).
O compilador fornece símbolos
informações para depuração de fonte de alto nível com o
IDE MPLAB.

DS39582B-página 168 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
16.9 MPLAB ICE 2000 16.11 MPLAB ICD 2 In-Circuit Debugger
Universal de alto desempenho O In-Circuit Debugger da Microchip, MPLAB ICD 2, é uma
Emulador de circuito ferramenta de desenvolvimento em tempo de execução
O emulador de circuito universal MPLAB ICE 2000 destina-se poderosa, de baixo custo, que se conecta ao PC host através
de uma interface RS-232 ou USB de alta velocidade. Esta
a fornecer ao engenheiro de desenvolvimento de produto um
ferramenta é baseada nos MCUs Flash PICmicro e pode ser
conjunto completo de ferramentas de projeto de
usada para desenvolver para estes e outros microcontroladores
microcontroladores para microcontroladores PICmicro. O
PICmicro. O MPLAB ICD 2 utiliza o recurso de depuração no
controle de software do emulador de circuito MPLAB ICE
circuito integrado aos dispositivos Flash. Esse recurso,
2000 é avançado pelo MPLAB Integrated Development
juntamente com o protocolo In-Circuit Serial ProgrammingTM
Environment, que permite edição, construção, download e
(ICSPTM) da Microchip , oferece depuração de Flash in-circuit
depuração de origem a partir de um único ambiente.
com custo reduzido a partir da interface gráfica do usuário do
O MPLAB ICE 2000 é um sistema emulador completo com MPLAB Integrated Development Environment. Isso permite
recursos aprimorados de rastreamento, disparo e que um designer desenvolva e depure o código-fonte definindo
monitoramento de dados. Módulos de processador pontos de interrupção, variáveis de passo único e de
intercambiáveis permitem que o sistema seja facilmente observação, status da CPU e registros de periféricos. A
reconfigurado para emulação de diferentes processadores. A execução em velocidade máxima permite testar hardware e
arquitetura universal do emulador de circuito MPLAB ICE aplicativos em tempo real. O MPLAB ICD 2 também serve
permite a expansão para suportar novos microcontroladores PICmicro. como programador de desenvolvimento para dispositivos PICmicro selecionados
O sistema emulador de circuito MPLAB ICE 2000 foi projetado
como um sistema de emulação em tempo real com recursos 16.12 Dispositivo Universal PRO MATE II
avançados que normalmente são encontrados em ferramentas Programador
de desenvolvimento mais caras. A plataforma do PC e o
O PRO MATE II é um programador de dispositivo universal
sistema operacional Microsoft® Windows de 32 bits foram
escolhidos para melhor disponibilizar esses recursos em um compatível com CE com verificação de tensão programável
em VDDMIN e VDDMAX para máxima confiabilidade. Possui
aplicativo simples e unificado.
um display LCD para instruções e mensagens de erro e um
16.10 MPLAB ICE 4000 conjunto de soquete destacável modular para suportar vários
tipos de embalagens. No modo Stand-Alone, o programador
Universal de alto desempenho
de dispositivos PRO MATE II pode ler, verificar e programar
Emulador de circuito
dispositivos PICmicro sem uma conexão com o PC. Ele
O emulador de circuito universal MPLAB ICE 4000 destina-se também pode definir a proteção de código neste modo.
a fornecer ao engenheiro de desenvolvimento de produtos um
conjunto completo de ferramentas de projeto de 16.13 Programador de Desenvolvimento
microcontroladores para microcontroladores PICmicro de PICSTART Plus
ponta. O controle de software do emulador de circuito MPLAB
O programador de desenvolvimento PICSTART Plus é um
ICE é fornecido pelo MPLAB Integrated Development
programador de protótipo fácil de usar e de baixo custo. Ele
Environment, que permite edição, construção, download e
se conecta ao PC através de uma porta COM (RS-232). O
depuração de origem a partir de um único ambiente.
software MPLAB Integrated Development Environment torna
O MPLAB ICD 4000 é um sistema emulador premium, o uso do programador simples e eficiente. O programador de
fornecendo os recursos do MPLAB ICE 2000, mas com maior desenvolvimento PICSTART Plus suporta a maioria dos
memória de emulação e desempenho de alta velocidade para dispositivos PICmicro de até 40 pinos. Dispositivos de
dispositivos dsPIC30F e PIC18XXXX. Seus recursos contagem de pinos maiores, como o PIC16C92X e o
avançados de emulador incluem disparo e temporização PIC17C76X, podem ser suportados com um soquete
complexos, até 2 Mb de memória de emulação e a capacidade adaptador. O programador de desenvolvimento PICSTART
de visualizar variáveis em tempo real. Plus é compatível com CE.
O sistema emulador de circuito MPLAB ICE 4000 foi projetado
como um sistema de emulação em tempo real com recursos
avançados que normalmente são encontrados em ferramentas
de desenvolvimento mais caras. A plataforma PC e o sistema
operacional Microsoft Windows de 32 bits foram escolhidos
para melhor disponibilizar esses recursos em um aplicativo
simples e unificado.

ÿ 2003 Microchip Technology Inc. DS39582B-página 169


Machine Translated by Google

PIC16F87XA
16.14 Placa de Demonstração 16.17 Placa de Demonstração PICDEM
PICDEM 1 PICmicro 3 PIC16C92X

A placa de demonstração PICDEM 1 demonstra as A placa de demonstração PICDEM 3 suporta o PIC16C923


capacidades do PIC16C5X (PIC16C54 a PIC16C58A), e PIC16C924 no pacote PLCC. Todo o hardware e software
PIC16C61, PIC16C62X, PIC16C71, PIC16C8X, PIC17C42, necessários estão incluídos para executar os programas de
PIC17C43 e PIC17C44. Todo o hardware e software demonstração.
necessários estão incluídos para executar programas de
demonstração básicos. Os microcontroladores de amostra 16.18 PICDEM 4 8/14/18-Pin Painel de
fornecidos com a placa de demonstração PICDEM 1 podem Demonstração
ser programados com um programador de dispositivo PRO
MATE II ou um programador de desenvolvimento PICSTART Plus. O PICDEM 4 pode ser usado para demonstrar as
A placa de demonstração PICDEM 1 pode ser conectada ao capacidades dos MCUs PIC16XXXX e PIC18XXXX de 8, 14
emulador de circuito MPLAB ICE para teste. Uma área de e 18 pinos, incluindo os microcontroladores PIC16F818/819,
protótipo estende o circuito para componentes de aplicação PIC16F87/88, PIC16F62XA e PIC18F1320. O PICDEM 4
adicionais. Os recursos incluem uma interface RS-232, um destina-se a mostrar os muitos recursos dessas peças de
potenciômetro para entrada analógica simulada, interruptores baixa contagem de pinos, incluindo LIN e controle de motor
de botão e oito LEDs. usando ECCP. Provisões especiais são feitas para operação
de baixa potência com o circuito supercapacitor, e jumpers
16.15 Placa de Demonstração de Internet/ permitem que o hardware integrado seja desabilitado para
eliminar o consumo de corrente neste modo. Incluído na
Ethernet PICDEM.net
placa de demonstração estão provisões para os modos
A placa de demonstração PICDEM.net é uma placa de Crystal, RC ou Canned Oscillator, um regulador de cinco
demonstração de Internet/Ethernet usando o microcontrolador volts para uso com um adaptador de parede de nove volts
PIC18F452 e firmware TCP/IP. A placa suporta qualquer ou bateria, interface DB-9 RS-232, conector ICD para
dispositivo DIP de 40 pinos que esteja em conformidade programação via ICSP e desenvolvimento com MPLAB ICD
com a pinagem padrão usada pelo PIC16F877 ou 2, display de cristal líquido 2x16, pegadas de PCB para
PIC18C452. Este kit apresenta uma pilha TCP/IP amigável, driver de motor H-Bridge, transceptor LIN e EEPROM.
servidor web com HTML, um EEPROM serial 24L256 para Também estão incluídos: header para expansão, oito LEDs,
download de Xmodem para páginas web em um conector quatro potenciômetros, três botões e uma área de
de interface Serial EEPROM, ICSP/MPLAB ICD 2, uma prototipagem. Incluído com o kit está um PIC16F627A e um
interface Ethernet, interface RS-232 e um Visor LCD de 16 PIC18F1320. O firmware do tutorial está incluído junto com
x 2. Também está incluído o livro e CD-ROM “TCP/IP Lean, o Guia do usuário.
Web Servers for Embedded Systems”, de Jeremy Bentham.
16.19 Quadro de Demonstração do PICDEM 17

A placa de demonstração PICDEM 17 é uma placa de


16.16 PICDEM 2 Plus
avaliação que demonstra as capacidades de vários
Quadro de Demonstração
microcontroladores Microchip, incluindo PIC17C752,
A placa de demonstração PICDEM 2 Plus suporta muitos PIC17C756A, PIC17C762 e PIC17C766. Uma amostra
microcontroladores de 18, 28 e 40 pinos, incluindo programada está incluída. O programador de dispositivo
dispositivos PIC16F87X e PIC18FXX2. Todo o hardware e PRO MATE II, ou o programador de desenvolvimento
software necessários estão incluídos para executar os PICSTART Plus, pode ser usado para reprogramar o
programas de demonstração. Os microcontroladores de dispositivo para o desenvolvimento de aplicativos
amostra fornecidos com a placa de demonstração PICDEM personalizados pelo usuário. A placa de demonstração
2 podem ser programados com um programador de PICDEM 17 suporta download e execução de programas a
dispositivo PRO MATE II, programador de desenvolvimento partir de memória Flash interna externa. Uma área de
PICSTART Plus ou MPLAB ICD 2 com um adaptador de programador protótipo
universal.generosa está disponível para expansão de hardware do usuário.
Os emuladores de circuito MPLAB ICD 2 e MPLAB ICE
também podem ser usados com a placa de demonstração
PICDEM 2 para testar o firmware. Uma área de protótipo
estende o circuito para componentes de aplicativos
adicionais. Alguns dos recursos incluem uma interface
RS-232, um display LCD 2 x 16, um alto-falante piezo, um
sensor de temperatura integrado, quatro LEDs e
microcontroladores Flash PIC18F452 e PIC16F877 de amostra.

DS39582B-página 170 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
16.20 PICDEM 18R PIC18C601/801 Placa de 16.23 PICDEM USB PIC16C7X5
Demonstração Quadro de Demonstração
A placa de demonstração PICDEM 18R serve para auxiliar O PICDEM USB Demonstration Board mostra o
desenvolvimento da família PIC18C601/801 de Microchip capacidades do PIC16C745 e PIC16C765 USB
microcontroladores. Ele fornece implementação de hardware microcontroladores. Esta placa fornece a base para
de multiplexado/desmultiplexado de 8 bits e de 16 bits futuros produtos USB.
Modos de memória. A placa inclui 2 Mb externos
Memória flash e memória SRAM de 128 Kb, bem como 16.24 Ferramentas de
EEPROM serial, permitindo acesso a uma ampla gama de Avaliação e Programação
tipos de memória suportados pelo PIC18C601/801.
Além da série de circuitos PICDEM, a Microchip
tem uma linha de kits de avaliação e software de demonstração
16.21 Placa de Demonstração PICDEM
para estes produtos.
LIN PIC16C43X
• Ferramentas de avaliação e programação KEELOQ para
O poderoso kit de hardware e software LIN inclui um
Produtos de dados seguros HCS da Microchip
série de placas e três microcontroladores PICmicro.
• Kit de desenvolvedores CAN para aplicativos de rede
O tamanho pequeno PIC16C432 e PIC16C433 são
usados como escravos na comunicação LIN e apresentam automotiva

transceptores LIN integrados. Um microcontrolador Flash PIC16F874 • Placas de design analógico e software de design de filtro
serve como mestre. Todos os três microcontroladores são • Avaliação de carregamento da bateria PowerSmart/
programados com firmware para fornecer barramento LIN kits de calibração
comunicação. • Kit de desenvolvimento IrDA®
• desenvolvimento de microID e desenvolvimento de rfLabTM
16.22 PICkitTM 1 Flash Starter Kit Programas

Um completo “sistema de desenvolvimento em uma caixa”, o PICkit • Kit de designer SEEVAL® para avaliação de memória e cálculos
O Flash Starter Kit inclui um conveniente multi-seção de resistência
conselho de programação, avaliação e desenvolvimento de • Placas de demonstração PICDEM MSC para fonte de alimentação
Microcontroladores Flash PIC® de 8/14 pinos. Alimentado por de modo de comutação, driver IR de alta potência, delta sigma
USB, a placa opera em uma GUI simples do Windows. ADC e sensor de vazão
O PICkit 1 Starter Kit inclui o guia do usuário (no
Verifique a página da Web do Microchip e o Produto mais recente
CD ROM), software tutorial PICkit 1 e código para várias aplicações.
Cartão de linha para a lista completa de demonstração e
Também estão incluídos o software MPLAB® IDE (Ambiente de kits de avaliação.
Desenvolvimento Integrado), software
e hardware “Dicas e truques para Flash PIC® de 8 pinos
Manual de microcontroladores” e uma interface USB
Cabo. Suporta todos os atuais PIC Flash de 8/14 pinos
microcontroladores, bem como muitos futuros
dispositivos.

ÿ 2003 Microchip Technology Inc. DS39582B-página 171


Machine Translated by Google

PIC16F87XA
NOTAS:

DS39582B-página 172 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
17.0 CARACTERÍSTICAS ELÉTRICAS

Classificações Máximas Absolutas †


Temperatura ambiente sob polarização ............................................. .................................................. .........-55 a +125°C
Temperatura de armazenamento ................................................ .................................................. ......................... -65°C a +150°C
Tensão em qualquer pino em relação ao VSS (exceto VDD, MCLR. e RA4) .............................. ........ -0,3V a (VDD + 0,3V)
Tensão no VDD em relação ao VSS ............................................. .................................................. ............... -0,3 a +7,5V
Tensão no MCLR em relação ao VSS (Nota 2) ............................................. .................................................. ........0 a +14V
Tensão em RA4 em relação a Vss............................................. .................................................. .......................0 a +8,5V
Dissipação total de energia (Nota 1) ............................................. .................................................. ......................... 1,0 W
Corrente máxima fora do pino VSS .................................................. .................................................. ......................... 300 mA
Corrente máxima no pino VDD ............................................. .................................................. ..............................250 mA
Corrente do alicate de entrada, IIK (VI < 0 ou VI > VDD).................................... .................................................. .............................. ± 20 mA
Corrente do alicate de saída, IOK (VO < 0 ou VO > VDD) .............................. .................................................. ....................... ± 20 mA
Corrente máxima de saída absorvida por qualquer pino de E/S........................................ .................................................. ................25 mA
Corrente máxima de saída originada por qualquer pino de E/S ........................................ .................................................. ..........25 mA
Corrente máxima afundada por PORTA, PORTB e PORTE (combinados) (Nota 3).................................. ....................200 mA
Corrente máxima originada por PORTA, PORTB e PORTE (combinados) (Nota 3).................................. ..............200 mA
Corrente máxima afundada por PORTC e PORTD (combinados) (Nota 3) ................................. .................................. 200 mA
Corrente máxima fornecida por PORTC e PORTD (combinado) (Nota 3) ................................. .......................200 mA
Nota 1: A dissipação de energia é calculada da seguinte forma: Pdis = VDD x {IDD - ÿ IOH} + ÿ {(VDD - VOH) x IOH} + ÿ(VOl x IOL)
2: Picos de tensão abaixo de VSS no pino MCLR, induzindo correntes maiores que 80 mA, podem causar travamento.
Assim, um resistor em série de 50-100ÿ deve ser usado ao aplicar um nível “baixo” ao pino MCLR em vez de
puxando este pino diretamente para VSS.

3: PORTD e PORTE não são implementados em dispositivos PIC16F873A/876A.

† AVISO: Estresses acima daqueles listados em “Classificações Máximas Absolutas” podem causar danos permanentes ao dispositivo.
Esta é apenas uma classificação de estresse e a operação funcional do dispositivo nessas ou quaisquer outras condições acima das
indicadas nas listas de operação desta especificação não está implícita. A exposição a condições de classificação máxima por longos
períodos pode afetar a confiabilidade do dispositivo.

ÿ 2003 Microchip Technology Inc. DS39582B-página 173


Machine Translated by Google

PIC16F87XA
FIGURA 17-1: PIC16F87XA GRÁFICO DE TENSÃO-FREQUÊNCIA (INDUSTRIAL, ESTENDIDO)

6,0 V
5,5 V

5,0 V
PIC16F87XA
4,5 V

Tensão 4,0 V

3,5 V

3,0 V
2,5 V

2,0 V

20MHz
Frequência

FIGURA 17-2: PIC16LF87XA GRÁFICO DE TENSÃO-FREQUÊNCIA (INDUSTRIAL)

6,0 V
5,5 V

5,0 V

4,5 V

Tensão 4,0 V PIC16LF87XA

3,5 V
3,0 V
2,5 V

2,0 V

4MHz 10MHz

Frequência
FMAX = (6,0 MHz/V) (VDDAPPMIN – 2,0V) + 4 MHz
Nota 1: VDDAPPMIN é a tensão mínima do dispositivo PICmicro® na aplicação.
Nota 2: FMAX tem uma frequência máxima de 10 MHz.

DS39582B-página 174 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
17.1 Características DC: PIC16F873A/874A/876A/877A (Industrial, Estendido)
PIC16LF873A/874A/876A/877A (Industrial)
PIC16LF873A/874A/876A/877A Condições Operacionais Padrão (salvo indicação em contrário)
(Industrial) Temperatura de operação -40°C ÿ TA ÿ +85°C para indústria

Condições Operacionais Padrão (salvo indicação em contrário)


PIC16F873A/874A/876A/877A
Temperatura de operação -40°C ÿ TA ÿ +85°C para indústria
(Industrial, Estendido)
-40°C ÿ TA ÿ +125°C para prolongado

Parâmetro Característica/
Símbolo Tipo mín.† Unidades máximas Condições
Não. Dispositivo

VDD Tensão de Alimentação

D001 16LF87XA 2.0 — 5.5 V Todas as configurações


(DC a 10 MHz)
D001 16F87XA 4.0 — 5.5 V Todas as configurações
D001A VBOR 5,5 V BOR habilitado, FMAX = 14 MHz(7)
D002 Retenção de dados RAM VDR — 1,5 — V
Voltagem(1)
D003 VPOR VDD Start Voltage para — VSS — V Consulte a Seção 14.5 “Reinicialização na inicialização
garantir a inicialização interna (POR)” para obter detalhes
Redefinir sinal
D004 SVDD VDD Rise Rate para garantir o sinal 0,05 — — V/ms Consulte a Seção 14.5 “Reinicialização na inicialização
interno de Power-on Reset (POR)” para obter detalhes

D005 Redefinição de Brown-out VBOR 3,65 4,0 Bit 4,35 V BODEN na palavra de configuração habilitado
Tensão
Legenda: As linhas apenas com dados do dispositivo de tensão padrão são sombreadas para melhorar a legibilidade.
† Os dados na coluna “Typ” estão a 5V, 25°C, salvo indicação em contrário. Esses parâmetros são apenas para orientação do
projeto e não são testados.
Nota 1: Este é o limite para o qual o VDD pode ser reduzido sem perder dados de RAM.
2: A corrente de alimentação é principalmente uma função da tensão e frequência de operação. Outros fatores, como carregamento de
pinos de E/S, taxa de comutação, tipo de oscilador, padrão de execução de código interno e temperatura, também têm impacto
no consumo de corrente.
As condições de teste para todas as medições IDD no modo de operação ativo são:
OSC1 = onda quadrada externa, de trilho a trilho; todos os pinos de E/S tri-state, puxados para VDD;
MCLR = VDD; WDT ativado/desativado conforme especificado.
3: A corrente de desligamento no modo Sleep não depende do tipo de oscilador. A corrente de desligamento é
medido com a peça em modo Sleep, com todos os pinos de E/S em estado de alta impedância e vinculados a VDD e VSS.
4: Para configuração RC osc, a corrente através de REXT não está incluída. A corrente no resistor pode ser
estimado pela fórmula Ir = VDD/2REXT (mA) com REXT em kÿ.
5: O oscilador Timer1 (quando habilitado) adiciona aproximadamente 20 µA à especificação. Este valor é de
caracterização e é apenas para orientação de projeto. Isso não é testado.
6: A corrente ÿ é a corrente adicional consumida quando este periférico é habilitado. Esta corrente deve ser adicionada à medição de
base IDD ou IPD .

7: Quando o BOR está habilitado, o dispositivo funcionará corretamente até que o ponto de desarme de tensão VBOR seja alcançado.

ÿ 2003 Microchip Technology Inc. DS39582B-página 175


Machine Translated by Google

PIC16F87XA
17.1 Características DC: PIC16F873A/874A/876A/877A (Industrial, Estendido)
PIC16LF873A/874A/876A/877A (Industrial) (Continuação)
PIC16LF873A/874A/876A/877A Condições Operacionais Padrão (salvo indicação em contrário)
(Industrial) Temperatura de operação -40°C ÿ TA ÿ +85°C para indústria

Condições Operacionais Padrão (salvo indicação em contrário)


PIC16F873A/874A/876A/877A
Temperatura de operação -40°C ÿ TA ÿ +85°C para indústria
(Industrial, Estendido)
-40°C ÿ TA ÿ +125°C para prolongado

Parâmetro Característica/
Símbolo Tipo mín.† Unidades máximas Condições
Não. Dispositivo

IDD Corrente de Fornecimento (2,5)

D010 16LF87XA — 0,6 2,0 mA XT, configurações RC osc,


ESCURO = 4 MHz, VDD = 3,0 V
D010 16F87XA — 1,6 4 mA XT, configurações RC osc,
ESCURO = 4 MHz, VDD = 5,5 V
D010A 16LF87XA — 20 35 µA LP osc configuração,
FOSC = 32 kHz, VDD = 3,0 V,
WDT desativado
D013 16F87XA — 7 15 mA HS configuração osc,
ESCURO = 20 MHz, VDD = 5,5 V
D015 ÿIBOR Brown-out — 85 200 µA BOR habilitado, VDD = 5,0 V
Redefinir corrente (6)

Legenda: As linhas apenas com dados do dispositivo de tensão padrão são sombreadas para melhorar a legibilidade.
† Os dados na coluna “Typ” estão a 5V, 25°C, salvo indicação em contrário. Esses parâmetros são apenas para orientação do
projeto e não são testados.
Nota 1: Este é o limite para o qual o VDD pode ser reduzido sem perder dados de RAM.
2: A corrente de alimentação é principalmente uma função da tensão e frequência de operação. Outros fatores, como carregamento
de pinos de E/S, taxa de comutação, tipo de oscilador, padrão de execução de código interno e temperatura, também têm
impacto no consumo de corrente.
As condições de teste para todas as medições IDD no modo de operação ativo são:
OSC1 = onda quadrada externa, de trilho a trilho; todos os pinos de E/S tri-state, puxados para VDD;
MCLR = VDD; WDT ativado/desativado conforme especificado.
3: A corrente de desligamento no modo Sleep não depende do tipo de oscilador. A corrente de desligamento é
medido com a peça em modo Sleep, com todos os pinos de E/S em estado de alta impedância e vinculados a VDD e VSS.
4: Para configuração RC osc, a corrente através de REXT não está incluída. A corrente no resistor pode ser
estimado pela fórmula Ir = VDD/2REXT (mA) com REXT em kÿ.
5: O oscilador Timer1 (quando habilitado) adiciona aproximadamente 20 µA à especificação. Este valor é de
caracterização e é apenas para orientação de projeto. Isso não é testado.
6: A corrente ÿ é a corrente adicional consumida quando este periférico é habilitado. Esta corrente deve ser adicionada à medição
de base IDD ou IPD .
7: Quando o BOR está habilitado, o dispositivo funcionará corretamente até que o ponto de desarme de tensão VBOR seja alcançado.

DS39582B-página 176 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
17.1 Características DC: PIC16F873A/874A/876A/877A (Industrial, Estendido)
PIC16LF873A/874A/876A/877A (Industrial) (Continuação)
PIC16LF873A/874A/876A/877A Condições Operacionais Padrão (salvo indicação em contrário)
(Industrial) Temperatura de operação -40°C ÿ TA ÿ +85°C para indústria

Condições Operacionais Padrão (salvo indicação em contrário)


PIC16F873A/874A/876A/877A
Temperatura de operação -40°C ÿ TA ÿ +85°C para indústria
(Industrial, Estendido)
-40°C ÿ TA ÿ +125°C para prolongado

Parâmetro Característica/
Símbolo Tipo mín.† Unidades máximas Condições
Não. Dispositivo

DPI Corrente de desligamento (3,5)


D020 16LF87XA — 7,5 30 µA VDD = 3,0 V, WDT habilitado,
-40°C a +85°C
D020 16F87XA — 10,5 42 µA VDD = 4,0V, WDT habilitado,
-40°C a +85°C
60 µA VDD = 4,0V, WDT habilitado,
-40°C a +125°C (estendido)
D021 16LF87XA — 0,9 5 µA VDD = 3,0V, WDT desabilitado,
0°C a +70°C
D021 16F87XA — 1,5 16 µA VDD = 4,0V, WDT desabilitado,
-40°C a +85°C
20 µA VDD = 4,0V, WDT desabilitado,
-40°C a +125°C (estendido)
D021A 16LF87XA 0,9 5 µA VDD = 3,0V, WDT desabilitado,
-40°C a +85°C
D021A 16F87XA 1,5 19 µA VDD = 4,0 V, WDT desabilitado,
-40°C a +85°C
D023 ÿIBOR Brown-out — 85 200 µA BOR habilitado, VDD = 5,0 V
Redefinir corrente (6)

Legenda: As linhas apenas com dados do dispositivo de tensão padrão são sombreadas para melhorar a legibilidade.
† Os dados na coluna “Typ” estão a 5V, 25°C, salvo indicação em contrário. Esses parâmetros são apenas para orientação do
projeto e não são testados.
Nota 1: Este é o limite para o qual o VDD pode ser reduzido sem perder dados de RAM.
2: A corrente de alimentação é principalmente uma função da tensão e frequência de operação. Outros fatores, como carregamento
de pinos de E/S, taxa de comutação, tipo de oscilador, padrão de execução de código interno e temperatura, também têm
impacto no consumo de corrente.
As condições de teste para todas as medições IDD no modo de operação ativo são:
OSC1 = onda quadrada externa, de trilho a trilho; todos os pinos de E/S tri-state, puxados para VDD;
MCLR = VDD; WDT ativado/desativado conforme especificado.
3: A corrente de desligamento no modo Sleep não depende do tipo de oscilador. A corrente de desligamento é
medido com a peça em modo Sleep, com todos os pinos de E/S em estado de alta impedância e vinculados a VDD e VSS.
4: Para configuração RC osc, a corrente através de REXT não está incluída. A corrente no resistor pode ser
estimado pela fórmula Ir = VDD/2REXT (mA) com REXT em kÿ.
5: O oscilador Timer1 (quando habilitado) adiciona aproximadamente 20 µA à especificação. Este valor é de
caracterização e é apenas para orientação de projeto. Isso não é testado.
6: A corrente ÿ é a corrente adicional consumida quando este periférico é habilitado. Esta corrente deve ser adicionada à medição
de base IDD ou IPD .
7: Quando o BOR está habilitado, o dispositivo funcionará corretamente até que o ponto de desarme de tensão VBOR seja alcançado.

ÿ 2003 Microchip Technology Inc. DS39582B-página 177


Machine Translated by Google

PIC16F87XA
17.2 Características DC: PIC16F873A/874A/876A/877A (Industrial, Estendido)
PIC16LF873A/874A/876A/877A (Industrial)
Condições Operacionais Padrão (salvo indicação em contrário)
Temperatura de operação -40°C ÿ TA ÿ +85°C para indústria
CARACTERÍSTICAS DC -40°C ÿ TA ÿ +125°C para prolongado
Faixa de tensão de operação VDD conforme descrito na especificação
DC (Seção 17.1)
Parâmetro
Sim Característica Tipo mín.† Unidades máximas Condições
Não.

VAI Baixa Tensão de Entrada

Portas de E/S:

D030 com buffer TTL VSS — 0,15 VDD V Para toda a faixa VDD
D030A VSS — 0,8VV 4,5V ÿ VDD ÿ 5,5V

D031 com buffer de disparo Schmitt VSS — 0,2 VDD V


D032 MCLR, OSC1 (no modo RC) VSS — 0,2 VDD V
D033 OSC1 (nos modos XT e LP) VSS - 0,3VV (Nota 1)
OSC1 (no modo HS) VSS — 0,3 VDD V
Portas RC3 e RC4: —

D034 com buffer de disparo Schmitt VSS — 0,3 VDD V Para toda a faixa VDD
D034A com SMBBus -0,5 — 0,6 V Para VDD = 4,5 a 5,5 V
HIV Alta Tensão de Entrada

Portas de E/S:

D040 com buffer TTL 2.0 — VDD V 4,5 V ÿ VDD ÿ 5,5 V


D040A 0,25 VDD — VDD V Para toda a gama VDD
+ 0,8 V
D041 com buffer de disparo Schmitt 0,8 VDD — VDD V Para toda a faixa de VDD
D042 MCLR 0,8 VDD — VDD V
D042A OSC1 (nos modos XT e LP) 1,6 V - VDD V (Nota 1)
OSC1 (no modo HS) 0,7 VDD — VDD V
D043 OSC1 (no modo RC) 0,9 VDD — VDD V
Portas RC3 e RC4:
D044 com buffer de disparo Schmitt 0,7 VDD — VDD V Para toda a faixa de VDD
D044A com SMBBus 1,4 — 5,5 V Para VDD = 4,5 a 5,5 V

D070 IPURB PORTB Corrente de pull-up fraca 50 250 400 µA VDD = 5V, VPIN = VSS, -40°C A +85°C

IIL
Corrente de Fuga de Entrada (2, 3)
D060 Portas de E/S — — ±1 µA VSS ÿ VPIN ÿ VDD, pino
em alta impedância
D061 MCLR, RA4/T0CKI — — ±5 µA VSS ÿ VPIN ÿ VDD
D063 OSC1 — — ±5 µA VSS ÿ VPIN ÿ VDD, XT, HS e LP
osc configuração
*
Esses parâmetros são caracterizados mas não testados.
† Os dados na coluna “Typ” estão a 5V, 25°C, salvo indicação em contrário. Esses parâmetros são para orientação de projeto
apenas e não são testados.
Nota 1: Na configuração do oscilador RC, o pino OSC1/CLKI é uma entrada Schmitt Trigger. Não é recomendado que o
PIC16F87XA ser acionado com clock externo em modo RC.
2: A corrente de fuga no pino MCLR é fortemente dependente do nível de tensão aplicado. Os níveis especificados representam
condições normais de operação. A corrente de fuga mais alta pode ser medida em diferentes tensões de entrada.
3: A corrente negativa é definida como a corrente originada pelo pino.

DS39582B-página 178 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
17.2 Características DC: PIC16F873A/874A/876A/877A (Industrial, Estendido)
PIC16LF873A/874A/876A/877A (Industrial) (Continuação)
Condições Operacionais Padrão (salvo indicação em contrário)
Temperatura de operação -40°C ÿ TA ÿ +85°C para indústria
CARACTERÍSTICAS DC -40°C ÿ TA ÿ +125°C para prolongado
Faixa de tensão de operação VDD conforme descrito na especificação DC
(Seção 17.1)
Parâmetro
Sim Característica Tipo mín.† Unidades máximas Condições
Não.

VOL Baixa tensão de saída


D080 Portas de E/S — — 0,6 V IOL = 8,5 mA, VDD = 4,5 V, -40°C a +85°C

D083 OSC2/CLKO (configuração RC osc) — — 0,6 V IOL = 1,6 mA, VDD = 4,5 V,
-40°C a +85°C

Alta Tensão de Saída VOH


D090 Portas de E/S (3) VDD – 0,7 — — V IOH = -3,0 mA, VDD = 4,5 V, -40°C a +85°C

D092 OSC2/CLKO (configuração RC osc) VDD – 0,7 — — V IOH = -1,3 mA, VDD = 4,5 V, -40°C a +85°C

D150* VOD de alta tensão de drenagem aberta — — pino RA4 de 8,5 V


Especificações de carregamento capacitivo ativado
Pinos de saída
D100 COSC2 OSC2 pino — — 15 pF Nos modos XT, HS e LP quando o clock
externo é usado para conduzir
OSC1
D101 CIO — — 50
Todos os pinos de E/S e OSC2 (modo RC) pF
D102 CB — — 400
SCL, SDA (modo I2C ) pF
Memória EEPROM de dados
D120 ED Resistência 100K 1M — E/W -40°C a +85°C
D121 VDRW VDD para leitura/gravação VMIN — 5,5 V Usando EECON para ler/escrever,
VMIN = mín. tensão operacional
D122 TDEW Tempo de ciclo de apagamento/gravação —4 8 EM

Memória Flash do Programa


D130 EP Resistência 10K 100K - E/W -40°C a +85°C
D131 VPR VDD para leitura VMIN — 5,5 V VMIN = min. tensão operacional
D132A VDD para apagar/gravar VMIN — 5,5 V Usando EECON para ler/escrever,
VMIN = mín. tensão operacional
D133 TPEW Erase/Write tempo de ciclo —4 8 EM
*
Esses parâmetros são caracterizados mas não testados.
† Os dados na coluna “Typ” estão a 5V, 25°C, salvo indicação em contrário. Esses parâmetros são para orientação de projeto
apenas e não são testados.
Nota 1: Na configuração do oscilador RC, o pino OSC1/CLKI é uma entrada Schmitt Trigger. Não é recomendado que o
PIC16F87XA ser acionado com clock externo em modo RC.
2: A corrente de fuga no pino MCLR é fortemente dependente do nível de tensão aplicado. Os níveis especificados representam
condições normais de operação. A corrente de fuga mais alta pode ser medida em diferentes tensões de entrada.
3: A corrente negativa é definida como a corrente originada pelo pino.

ÿ 2003 Microchip Technology Inc. DS39582B-página 179


Machine Translated by Google

PIC16F87XA
TABELA 17-1: ESPECIFICAÇÕES DO COMPARADOR

Condições de operação: 3,0 V < VDD < 5,5 V, -40°C < TA < +85°C (salvo indicação em contrário)
4,0 V < VDD < 5,5 V , -40° C < TA < +125° C (salvo indicação em contrário)

Parâmetro
Sim Características Mín. Modelo Comentários máximos de unidades
Não.

D300 VIOFF Tensão de compensação de entrada — ± 5,0 ± 10 mV


D301 VICM Tensão de Modo Comum de Entrada* 0 - VDD - 1,5 V
D302 Taxa de Rejeição do Modo Comum CMRR* 55 - — dB
300 TRESP Tempo de Resposta*(1) - 150 400 ns PIC16F87XA
300A 600 ns PIC16LF87XA
301 Alteração do modo do comparador TMC2OV — — 10 µs
para saída válida*
*
Esses parâmetros são caracterizados mas não testados.
Nota 1: Tempo de resposta medido com uma entrada do comparador em (VDD – 1,5)/2 enquanto a outra entrada transita de
VSS para VDD.

TABELA 17-2: ESPECIFICAÇÕES DE REFERÊNCIA DE TENSÃO

Condições de operação: 3,0 V < VDD < 5,5 V, -40°C < TA < +85°C (salvo indicação em contrário)
4,0 V < VDD < 5,5 V , -40° C < TA < +125° C (salvo indicação em contrário)

Especificação
Sim Características Mín. Tipo Máx. de Unidades Comentários
Não.

D310 VRES Resolução VDD/24 — VDD/32 LSb


D311 — — 1/2 LSb
Precisão absoluta VRAA Faixa baixa (VRR = 1)
— — 1/2 LSb Alcance alto (VRR = 0)
D312 Valor do resistor da unidade VRUR (R)* — 2k — Ah
310 TSET Tempo de Liquidação*(1) — — 10 µs
*
Esses parâmetros são caracterizados mas não testados.
Nota 1: Tempo de acomodação medido enquanto VRR = 1 e VR<3:0> transita de '0000' para '1111'.

DS39582B-página 180 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
17.3 Simbologia do Parâmetro de Temporização

Os símbolos dos parâmetros de tempo foram criados


seguindo um dos seguintes formatos:

1. TppS2ppS 3. TCC:ST ( somente especificações I2C )


2. TppS 4. Ts ( somente especificações I2C )
T
F Frequência T Tempo

Letras minúsculas (pp) e seus significados:


pp
cc PCC1 osc OSC1
k CLKO rd RD
cs CS rw RD ou WR
a partir de SDI sc SCK
Faz SDO ss SS
dt Dados em t0 T0CKI
isto porta de entrada/saída
t1 T1CKI
mc MCLR wr WR

Letras maiúsculas e seus significados:


S
F Cair P Período
H Alto R Subir
EU

Inválido (alta impedância) DENTRO Válido


eu Baixo A PARTIR DE

Alta impedância

Eu 2C apenas

AA acesso de saída Alto Alto


BUF Ônibus grátis Baixo Baixo

TCC:ST ( somente especificações I2C )


CC
HD Aguarde Eles são
Configurar

ST
QUE Entrada de dados em espera O QUE Condição de parada
STA Condição inicial

FIGURA 17-3: CONDIÇÕES DE CARGA

Condição de carga 1 Condição de Carga 2

VDD/2

RL

CL CL
Alfinete Alfinete

VSS VSS

RL = 464ÿ

CL = 50 pF para todos os pinos exceto OSC2, mas incluindo saídas PORTD e PORTE como portas,

15 pF para saída OSC2

Nota: PORTD e PORTE não são implementados em dispositivos PIC16F873A/876A.

ÿ 2003 Microchip Technology Inc. DS39582B-página 181


Machine Translated by Google

PIC16F87XA
FIGURA 17-4: CRONOGRAMA DE RELÓGIO EXTERNO

Q4 Q1 Q2 Q3 Q4 Q1

OSC1
1 3 3 4 4
2
CLKO

TABELA 17-3: REQUISITOS DE CRONOGRAMA DE RELÓGIO EXTERNO

Param
Símbolo Característica Tipo mín.† Unidades máximas Condições
No.

SOMBRIO
Frequência CLKI Externa DC — 1 Modo MHz XT e RC Osc
(Nota 1) DC — 20 MHz HS Modo Osc
CD - 32 kHz LP Modo Osc

Frequência do oscilador DC — 4 Modo MHz RC Osc


(Nota 1) 0,1 - 4 Modo MHz XT Osc
4 — 20 MHz Modo HS Osc
5 — 200 kHz Modo LP Osc
1 RUDE Período CLKI Externo 1000 — — ns Modo XT e RC Osc
(Nota 1) 50 — — ns Modo Osc HS

5—— Modo µs LP Osc


Período do oscilador 250 — — ns Modo RC Osc
(Nota 1) 250 - 1 Modo µs XT Osc
100 - 250 ns Modo Osc HS
50 - 250 ns Modo Osc HS

31.25 — — µs LP Modo Osc TCY DC ns TCY = 4/


2 TCY Tempo de Ciclo de Instrução 200 FOSC
(Nota 1)
3 TOSL, Relógio externo em (OSC1) alto ou 100 — — ns oscilador XT
PEDRA Tempo baixo
2,5 — — oscilador LP µs
15 — — ns oscilador HS
4 TOSR, Relógio Externo em (OSC1) Aumentar ou — — 25 oscilador ns XT
TOSF Tempo de outono
— — 50 ns oscilador LP
— — 15 ns oscilador HS

† Os dados na coluna “Typ” estão a 5V, 25°C, salvo indicação em contrário. Esses parâmetros são para orientação de projeto
apenas e não são testados.
Nota 1: O período do ciclo de instrução (TCY) é igual a quatro vezes o período base de tempo do oscilador de entrada. Todos os valores
especificados são baseados em dados de caracterização para esse tipo de oscilador específico, sob condições de operação
padrão, com o código de execução do dispositivo. Exceder esses limites especificados pode resultar em uma operação instável do
oscilador e/ou consumo de corrente maior do que o esperado. Todos os dispositivos são testados para operar em “min”. valores
com um clock externo aplicado ao pino OSC1/CLKI. Quando uma entrada de clock externa é usada, o valor “max.” O limite de
tempo de ciclo é “DC” (sem relógio) para todos os dispositivos.

DS39582B-página 182 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
FIGURA 17-5: CLKO E TEMPO DE E/S

Q4 Q1 Q2 Q3

OSC1

10 11

CLKO

13 12
18
14 19 16

Pino de E/S
(Entrada)

17 15

Pino de E/S Valor antigo Novo valor


(Resultado)

20, 21

Observação: Consulte a Figura 17-3 para obter as condições de carga.

TABELA 17-4: REQUISITOS DE TEMPORIZAÇÃO DE CLKO E E/S

Parâmetro
Símbolo Característica Mín. Modelo† Máx. Condições das unidades
Não.

10* TOSH2CKL OSC1 ÿ para CLKO ÿ — 75 200 ns (Nota 1)


11* TOSH2CKH OSC1 ÿ para CLKO ÿ — 75 200 ns (Nota 1)
12* TCKR Tempo de subida CLKO — 35 100 ns (Nota 1)
13* TCKF Tempo de queda CLKO — 35 100 ns (Nota 1)
14* TCKL2IOV CLKO ÿ para saída de porta válida — — 0,5 TCY + 20 ns (Nota 1)
15* Entrada de porta TIOV2CKH válida antes de CLKO ÿ GROSSO + 200 — — ns (Nota 1)
16* Porta TCKH2IOI em espera após CLKO ÿ 0 — — ns (Nota 1)
17* TOSH2IOV OSC1 ÿ (ciclo Q1) para porta de saída válida - 100 255 ns
18* TOSH2IOI OSC1 ÿ (ciclo Q2) para entrada da porta Padrão (F) 100 — — ns
Inválido (E/S em tempo de espera) 200 — — ns
Estendido (LF)
19* Entrada da porta TIOV2OSH Válido para OSC1 ÿ (E/S no tempo de configuração) 0 — — ns
20* TIOR Tempo de subida da saída da porta Padrão (F) — 10 40 ns

Estendido (LF) — — 145 ns


21* TIOF Tempo de queda de saída da porta Padrão (F) — 10 40 ns

Estendido (LF) — — 145 ns

22††* TINP Tempo alto ou baixo do pino INT TCY — — ns

23††* TRBP RB7:RB4 Alterar INT Alta ou Baixa Hora TCY — — ns


*
Esses parâmetros são caracterizados mas não testados.
† Os dados na coluna “Typ” estão a 5V, 25°C, salvo indicação em contrário. Esses parâmetros são apenas para orientação do projeto e são
não testado.
†† Esses parâmetros são eventos assíncronos não relacionados a nenhuma borda de clock interna.
Nota 1: As medições são feitas no modo RC onde a saída CLKO é 4 x TOSC.

ÿ 2003 Microchip Technology Inc. DS39582B-página 183


Machine Translated by Google

PIC16F87XA
FIGURA 17-6: REINICIAR, TEMPORIZADOR WATCHDOG, TEMPORIZADOR DE INICIALIZAÇÃO DO OSCILADOR E LIGAÇÃO
TEMPORIZADOR

VDD

MCLR

30
interno
POR

33
PWRT
Tempo esgotado
32

OSC
Tempo esgotado

interno
Redefinir

cão de guarda
Cronômetro

Redefinir
31
34
34

Pinos de E/S

Observação: Consulte a Figura 17-3 para obter as condições de carga.

FIGURA 17-7: TEMPO DE REINICIALIZAÇÃO DE BROWN-OUT

VDD VBOR

35

TABELA 17-5: REINICIALIZAÇÃO, TEMPORIZADOR WATCHDOG, TEMPORIZADOR DE INICIALIZAÇÃO DO OSCILADOR, TEMPORIZADOR DE LIGAÇÃO
E REQUISITOS DE REINICIALIZAÇÃO DE BROWN-OUT

Parâmetro
Símbolo Característica Mín. Modelo† Unidades máximas Condições
Não.

30 Largura de pulso TMCL MCLR (baixa) 2 — — µs VDD = 5V, -40°C a +85°C


31* TWDT Período de tempo limite do Watchdog Timer 7 18 33 ms VDD = 5V, -40°C a +85°C
(sem pré-escalador)
32 TOST Período do temporizador de inicialização de oscilação — 1024 TOSC — —TOSC = período OSC1
33* Período do temporizador de inicialização do TPWRT 28 72 132 ms VDD = 5V, -40°C a +85°C

34 TIOZ — - 2.1
Alta impedância de E/S de MCLR Low ou µs
Watchdog Timer Reset
35 TBOR Largura de Pulso de Redefinição de Brown-out 100 — — µs VDD ÿ VBOR (D005)
*
Esses parâmetros são caracterizados mas não testados.
† Os dados na coluna “Typ” estão a 5V, 25°C, salvo indicação em contrário. Esses parâmetros são apenas para orientação do projeto e são
não testado.

DS39582B-página 184 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
FIGURA 17-8: TEMPORIZAÇÕES DE RELÓGIO EXTERNO TIMER0 E TIMER1

RA4/T0CKI

40 41

42

RC0/T1OSO/T1CKI

45 46

47 48

TMR0 ou TMR1

Observação: Consulte a Figura 17-3 para obter as condições de carga.

TABELA 17-6: REQUISITOS DE RELÓGIO EXTERNO DE TIMER0 E TIMER1


Param
Símbolo Característica Mín. Typ† Max Units Condições
No.

40* TT0H Largura de Pulso Alta T0CKI Sem pré-escalador 0,5 TCY + 20 — — ns Também deve atender — — ns parâmetro
Com Pré-escalador 10 42
41* TT0L Largura de Pulso Baixa T0CKI Sem pré-escalador 0,5 TCY + 20 — — ns Também deve atender — — ns parâmetro
Com Pré-escalador 10 42
42* TT0P Período T0CKI Sem pré-escalador TCY + 40 — — ns
Com Prescaler Maior de: — — ns N = valor de pré-escala (2, 4,..., 256)
20 ou TCY + 40
N
45* TT1H T1CKI Alto Síncrono, Pré-escalador = 1 0,5 TCY + 20 — — ns Também deve atender
Tempo 15 — — ns parâmetro 47
Síncrono, Padrão (F)
Pré-escalador = 2, 4, 8 Estendido (LF) 25 — — ns
Assíncrono Padrão (F) 30 — — ns
Estendido (LF) 50 — — ns
46* TT1L T1CKI Síncrono de Tempo Baixo, Pré-escalonador = 1 0,5 TCY + 20 — — ns Também deve atender
Síncrono, Padrão (F) 15 — — ns parâmetro 47
Pré-escalador = 2, 4, 8 Estendido (LF) 25 — — ns
Assíncrono Padrão (F) 30 — — ns
Estendido (LF) 50 — — ns
47* TT1P Entrada T1CKI Síncrono Padrão (F) Maior de: — — ns N = valor de pré-escala (1, 2, 4, 8)
Período 30 ou TCY + 40
N

Estendido (LF) Maior de: N = valor pré-escala


50 ou TCY + 40 (1, 2, 4, 8)
N

Assíncrono Padrão (F) 60 — — ns


Estendido (LF) 100 — — ns
FT1 Faixa de Frequência de Entrada do Oscilador DC - 200kHz
Timer1 (oscilador habilitado configurando o bit T1OSCEN)
48 TCKEZTMR1 Atraso da Borda do Relógio Externo para o Incremento do 2 ÁSPERO — 7 ÁSPERO —
*
Temporizador Esses parâmetros são caracterizados, mas não testados.
† Os dados na coluna “Typ” estão a 5V, 25°C, salvo indicação em contrário. Esses parâmetros são apenas para orientação do projeto e são
não testado.

ÿ 2003 Microchip Technology Inc. DS39582B-página 185


Machine Translated by Google

PIC16F87XA
FIGURA 17-9: CAPTURAR/COMPARAR/HORÁRIOS PWM (CCP1 E CCP2)

RC1/T1OSI/CCP2
e RC2/CCP1
(Modo de captura)

50 51

52

RC1/T1OSI/CCP2
e RC2/CCP1
(Comparar ou modo PWM)

53 54

Observação: Consulte a Figura 17-3 para obter as condições de carga.

TABELA 17-7: REQUISITOS DE CAPTURA/COMPARAÇÃO/PWM (CCP1 E CCP2)


Param
Símbolo Característica Mín. Typ† Max Units Condições
No.

50* TCCL CCP1 e CCP2 Sem pré-escalador 0,5 TCY + 20 — — ns


Tempo baixo de entrada 10 — — ns
Padrão (F)
Com Pré-escalador
Estendido (LF) 20 — — ns
51* TCCH CCP1 e CCP2 Sem pré-escalador 0,5 TCY + 20 — — ns
Tempo máximo de entrada 10 — — ns
Padrão (F)
Com Pré-escalador
Estendido (LF) 20 — — ns
52* Período de entrada TCCP CCP1 e CCP2 3 TCY + 40 — — ns N = valor de pré-escala (1, 4 ou 16)
N
53* Padrão de tempo de subida de saída TCCR CCP1 e CCP2 (F) - 10 25 ns

Estendido (LF) — 25 50 ns
54* Tempo de queda de saída TCCF CCP1 e CCP2 Padrão (F) - 10 25 ns

Estendido (LF) — 25 45 ns
*
Esses parâmetros são caracterizados mas não testados.
† Os dados na coluna “Typ” estão a 5V, 25°C, salvo indicação em contrário. Esses parâmetros são apenas para orientação do projeto e são
não testado.

DS39582B-página 186 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
FIGURA 17-10: TEMPORIZAÇÃO DA PORTA ESCRAVA PARALELA (SOMENTE PIC16F874A/877A)

RE2/CS

RE0/RD

RE1/WR

65

RD7: RD0

62
64

63
Observação: Consulte a Figura 17-3 para obter as condições de carga.

TABELA 17-8: REQUISITOS DA PORTA ESCRAVA PARALELA (SOMENTE PIC16F874A/877A)


Parâmetro
Símbolo Característica Tipo Mínimo† Condições de Unidades Máximas
Não.

62 Entrada de dados TDTV2WRH Válido antes de WR ÿ ou CS ÿ (tempo de configuração) 20 — — ns


63* TWRH2DTI WR ÿ ou CS ÿ para dados inválidos (tempo Padrão (F) 20 — — ns
de espera) Estendido (LF) 35 — — ns
64 TRDL2DTV RD ÿ e CS ÿ para saída de dados Válido — — 80 ns
65 TRDH2DTI RD ÿ ou CS ÿ para saída de dados inválida 10 - 30 ns
*
Esses parâmetros são caracterizados mas não testados.
† Os dados na coluna “Typ” estão a 5V, 25°C, salvo indicação em contrário. Esses parâmetros são apenas para orientação do projeto e são
não testado.

ÿ 2003 Microchip Technology Inc. DS39582B-página 187


Machine Translated by Google

PIC16F87XA
FIGURA 17-11: TEMPORIZAÇÃO DO MODO SPI MASTER (CKE = 0, SMP = 0)

SS

70
SCK
(CKP = 0)

71 72
78 79

SCK
(CKP = 1)

79 78
80

SDO MSb Bit 6 - - - - - -1 LSb

75, 76

SDI MSb em Bit 6 - - - -1 LSb em

74
73

Observação: Consulte a Figura 17-3 para obter as condições de carga.

FIGURA 17-12: TEMPORIZAÇÃO DO MODO SPI MASTER (CKE = 1, SMP = 1)

SS

81
SCK
(CKP = 0)

71 72
79
73

SCK
(CKP = 1)
80

78

SDO MSb Bit 6 - - - - - -1 LSb

75, 76

SDI MSb em Bit 6 - - - -1 LSb em

74

Observação: Consulte a Figura 17-3 para obter as condições de carga.

DS39582B-página 188 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
FIGURA 17-13: TEMPORIZAÇÃO DO MODO ESCRAVO SPI (CKE = 0)

SS

70
SCK
(CKP = 0) 83

71 72
78 79

SCK
(CKP = 1)

79 78
80

SDO MSb Bit 6 - - - - - -1 LSb

75, 76 77

SDI MSb em Bit 6 - - - -1 LSb em

74
73

Observação: Consulte a Figura 17-3 para obter as condições de carga.

FIGURA 17-14: TEMPORIZAÇÃO DO MODO SPI ESCRAVO (CKE = 1)

82
SS

70
SCK
83
(CKP = 0)

71 72

SCK
(CKP = 1)
80

SDO MSb Bit 6 - - - - - -1 LSb

75, 76 77

SDI
MSb em Bit 6 - - - -1 LSb em

74

Observação: Consulte a Figura 17-3 para obter as condições de carga.

ÿ 2003 Microchip Technology Inc. DS39582B-página 189


Machine Translated by Google

PIC16F87XA
TABELA 17-9: REQUISITOS DO MODO SPI
Param
Símbolo Característica Mín. Typ† Condições de Unidades Máximas
No.

70* TSSL2SCH, SS ÿ para SCK ÿ ou SCK ÿ Entrada TCY — — ns


TSSL2SCL
71* CH SCK Input High Time (modo Slave) TCY + 20 — — ns
72* TSCL Tempo baixo de entrada SCK (modo escravo) TCY + 20 — — ns
73* TDIV2SCH, Tempo de configuração da entrada de dados SDI para SCK Edge 100 — — ns
TDIV2SCL
74* TSCH2DIL, Tempo de espera da entrada de dados SDI para SCK Edge 100 — — ns
TSCL2DIL

75* TDOR — 10 25 ns
Tempo de subida da saída de dados SDO Padrão (F)
— 25 50 ns
Estendido (LF)
76* TDOF — 10 25 ns
Tempo de queda de saída de dados SDO

77* TSSH2DOZ SS ÿ para saída SDO de alta impedância 10 — 50 ns


78* TSCR — 10 25 ns
Tempo de subida de saída SCK Padrão (F)
— 25 50 ns
(Modo mestre) Estendido (LF)
79* TSCF — 10 25 ns
Tempo de queda de saída SCK (modo mestre)
80* TSCH2DOV, — — 50 ns
Saída de dados SDO Válido após Padrão (F)
TSCL2DOV — — 145
Borda SCK Estendido (LF)
81* TDOV2SCH, Configuração de saída de dados SDO para SCK Edge TCY — — ns
TDOV2SCL
82* — — 50 ns
Saída de dados SDO TSSL2DOV Válido após SS ÿ Edge
83* TSCH2SSH, SS ÿ após SCK Edge 1,5 TCY + 40 — — ns
TSCL2SSH
*
Esses parâmetros são caracterizados mas não testados.
† Os dados na coluna “Typ” estão a 5V, 25°C, salvo indicação em contrário. Esses parâmetros são apenas para orientação do projeto e são
não testado.

FIGURA 17-15: TEMPORIZAÇÃO DOS BITS DE PARTIDA/PARADA DO BUS I2C

SCL
91 93

90 92

SDA

Começar Pare
Doença Doença

Observação: Consulte a Figura 17-3 para obter as condições de carga.

DS39582B-página 190 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
TABELA 17-10: REQUISITOS DOS BITS DE PARTIDA/PARADA DO BUS I2C
Parâmetro
Símbolo Característica Unidades Mín. Tipo Máx. Condições
Não.

90 TSU:STA Condição inicial Modo de 100 kHz 4700 — — ns Relevante apenas para a condição de partida repetida

Tempo de preparação Modo de 400 kHz 600 — —

91 THD: STA Condição inicial Modo de 100 kHz 4000 — — ns Após este período, o primeiro pulso de clock é gerado
Tempo de espera Modo de 400 kHz 600 — —

92 TSU:STO Condição de parada Modo de 100 kHz 4700 — — ns

Tempo de preparação Modo de 400 kHz 600 — —

93 THD: STO Condição de parada Modo de 100 kHz 4000 — — ns

Tempo de espera Modo de 400 kHz 600 — —

FIGURA 17-16: TEMPORIZAÇÃO DE DADOS DO BUS I2C

103 100 102

101

SCL
90
106
107
91 92
SDA
Dentro

110
109 109

SDA
Fora

Observação: Consulte a Figura 17-3 para obter as condições de carga.

ÿ 2003 Microchip Technology Inc. DS39582B-página 191


Machine Translated by Google

PIC16F87XA
TABELA 17-11: REQUISITOS DE DADOS DO BUS I2C
Parâmetro
Sim Característica Mín. Unidades máximas Condições
Não.

100 COXAS Hora alta do relógio Modo de 100 kHz 4,0 — µs


Modo de 400 kHz 0,6 — µs
Módulo SSP 0,5 TCY —
101 TLOW Hora baixa do relógio Modo de 100 kHz 4,7 - µs
Modo de 400 kHz 1,3 — µs
Módulo SSP 0,5 TCY —
102 TR Ascensão SDA e SCL Modo de 100 kHz - 1000 ns
Tempo
Modo de 400 kHz 20 + 0,1 CB 300 ns Cb é especificado para ser de 10 a 400 pF

103TF _ Queda SDA e SCL Modo de 100 kHz — 300 ns


Tempo
Modo de 400 kHz 20 + 0,1 CB 300 ns CB é especificado para ser de 10 a 400 pF

90 TSU:STA Iniciar configuração de condição Modo de 100 kHz 4,7 — µs Relevante apenas para a condição de partida repetida 0,6 —
Tempo
Modo de 400 kHz µs

91 THD:STA Start Condition Hold Modo de 100 kHz 4,0 — µs Após este período, o primeiro pulso de clock é gerado 0,6
Tempo — µs
Modo de 400 kHz
106 THD:DAT Modo de tempo de espera de entrada de dados 100 kHz 0 — ns
Modo de 400 kHz 0 0,9 µs
107 TSU:DAT Tempo de configuração de entrada de dados modo 100 kHz 250 - ns (Nota 2)
Modo de 400 kHz 100 - ns
92 TSU:STO Parar Configuração da Condição Modo de 100 kHz 4,7 - µs
Tempo
Modo de 400 kHz 0,6 — µs
109 HOJE Saída válida de Modo de 100 kHz — 3500 ns (Nota 1)
Relógio
Modo de 400 kHz — — ns
110 TBUF Tempo livre de ônibus Modo de 100 kHz 4,7 — µs Tempo em que o barramento deve estar livre antes de 1,3 — µs
Modo de 400 kHz uma nova transmissão pode começar

CB Carregamento capacitivo — 400 pF


do barramento Nota 1: Como transmissor, o dispositivo deve fornecer esse tempo de atraso mínimo interno para conectar a região indefinida (mín. 300 ns)
da borda descendente do SCL para evitar a geração não intencional de condições de partida ou parada.
2: Um dispositivo de barramento I2C de modo rápido (400 kHz) pode ser usado em um sistema de barramento I2C de modo padrão (100
kHz) , mas o requisito de que TSU:DAT ÿ 250 ns deve ser atendido. Este será automaticamente o caso se o dispositivo não esticar
o período BAIXO do sinal SCL. Se tal dispositivo alongar o período LOW do sinal SCL, ele deve enviar o próximo bit de dados para
a linha SDA, TR MAX. + TSU:DAT = 1000 + 250 = 1250 ns (de acordo com a especificação de barramento I2C do modo padrão ),
antes que a linha SCL seja liberada.

DS39582B-página 192 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
FIGURA 17-17: CRONOGRAMA DE TRANSMISSÃO SÍNCRONA USART (MESTRE/ESCRAVO)

RC6/TX/CK
121
alfinete

121
RC7/RX/DT
alfinete

120
122

Observação: Consulte a Figura 17-3 para obter as condições de carga.

TABELA 17-12: REQUISITOS DE TRANSMISSÃO SÍNCRONA USART


Parâmetro
Símbolo Característica Tipo Mínimo† Condições de Unidades Máximas
Não.

120 TCKH2DTV SYNC XMIT (MESTRE E ESCRAVO)


Relógio alto para saída de dados válido Padrão(F) — — 80 ns
Estendido(LF) — — 100 ns
121 TCKRF Tempo de subida e descida do relógio Padrão(F) — — 45 ns
(Modo mestre) Estendido(LF) — — 50 ns
122 TDTRF Padrão de tempo de subida e descida de dados (F) — — 45 ns
Estendido(LF) — — 50 ns
† Os dados na coluna “Typ” estão a 5V, 25°C, salvo indicação em contrário. Esses parâmetros são apenas para orientação
do projeto e não são testados.

FIGURA 17-18: CRONOGRAMA DE RECEPÇÃO SÍNCRONA DE USART (MESTRE/ESCRAVO)

RC6/TX/CK
alfinete 125

RC7/RX/DT
alfinete

126

Observação: Consulte a Figura 17-3 para obter as condições de carga.

TABELA 17-13: REQUISITOS DE RECEBIMENTO SÍNCRONO DE USART


Parâmetro
Símbolo Característica Mín. Typ† Condições de Unidades Máximas
Não.

125 TDTV2CKL SYNC RCV (MESTRE E ESCRAVO)


Configuração de dados antes de CK ÿ (tempo de configuração DT) 15 — — ns
126 Retenção de dados TCKL2DTL após CK ÿ (tempo de retenção DT) 15 — — ns
† Os dados na coluna “Typ” estão a 5V, 25°C, salvo indicação em contrário. Esses parâmetros são apenas para orientação
do projeto e não são testados.

ÿ 2003 Microchip Technology Inc. DS39582B-página 193


Machine Translated by Google

PIC16F87XA
TABELA 17-14: CARACTERÍSTICAS DO CONVERSOR A/D: PIC16F873A/874A/876A/877A (INDUSTRIAL)
PIC16LF873A/874A/876A/877A (INDUSTRIAL)
Parâmetro
Sim Característica Mín. Modelo† Máx. Unidades Condições
Não.

Resolução A01 NR — — 10 bits bit VREF = VDD = 5,12 V, VSS


ÿ VAIN ÿ VREF

A03 — — <±1 LSb VREF = VDD = 5,12 V, VSS


NÃO Erro de linearidade integral
ÿ VAIN ÿ VREF
A04 — — <±1 LSb VREF = VDD = 5,12 V, VSS
Erro de linearidade diferencial EDL
ÿ VAIN ÿ VREF
A06 Erro de deslocamento EOFF — — <±2 LSb VREF = VDD = 5,12 V, VSS
ÿ VAIN ÿ VREF

A07 Erro de ganho EGN — — <±1 LSb VREF = VDD = 5,12 V, VSS
ÿ VAIN ÿ VREF

A10 - Monotonicidade — garantido(3) — —VSS ÿ VAIN ÿ VREF


A20 Tensão de Referência VREF (VREF+ – VREF- ) 2,0 — VDD + 0,3 V
A21 VREF+ Tensão de Referência Alta AVDD – 2,5V AVDD + 0,3VV

A22 VREF- Baixa Tensão de Referência AVSS - 0,3V VREF+ – 2,0VV

A25 VAIN Tensão de Entrada Analógica VSS – 0,3V — VREF + 0,3VV


— — 2,5
A30 ZAIN Impedância recomendada de kÿ (Nota 4)
Fonte de tensão analógica
A40 Conversão A/D IAD PIC16F87XA — 220 — µA Consumo médio de corrente
Atual (VDD) PIC16LF87XA — 90 quando A/D é — µA
em (Nota 1)
A50 — — 5
Corrente de entrada IREF VREF (Nota 2) µA Durante a aquisição VAIN .
Com base no diferencial de
VHOLD para VAIN para
carregar CHOLD, consulte a
Seção 11.1 “Requisitos de
aquisição A/D”.
— — 150 µA Durante o ciclo de
conversão A/D
*
Esses parâmetros são caracterizados mas não testados.
† Os dados na coluna “Typ” estão a 5V, 25°C, salvo indicação em contrário. Esses parâmetros são apenas para orientação do projeto e são
não testado.
Nota 1: Quando o A/D está desligado, ele não consumirá nenhuma corrente além da corrente de fuga menor. A especificação de corrente de
desligamento inclui qualquer vazamento do módulo A/D.
2: A corrente VREF é do pino RA3 ou pino VDD , o que for selecionado como entrada de referência.
3: O resultado da conversão A/D nunca diminui com o aumento da tensão de entrada e não possui códigos ausentes.
4: A impedância máxima permitida para fonte de tensão analógica é 10 kÿ. Isso requer maior tempo de aquisição.

DS39582B-página 194 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
FIGURA 17-19: TEMPO DE CONVERSÃO A/D

BSF ADCON0, GO 1 TCY

(TOSC/2)(1)
131
Q4
130

A/D CLK 132

DADOS A/D 9 8 7 ... ... 2 10

MORADA OLD_DATA NOVOS DADOS

ADIF

VAI FEITO

AMOSTRA Amostragem interrompida

Nota: Se a fonte do relógio A/D for selecionada como RC, um tempo de TCY é adicionado antes do início do relógio A/D. Isso permite que o SONO
instrução a ser executada.

TABELA 17-15: REQUISITOS DE CONVERSÃO A/D


Param
Símbolo Característica Mín. Typ† Max Units Condições
No.

130 ENTÃO Período do relógio A/D PIC16F87XA 1,6 — — µs baseado em TOSC, VREF ÿ 3,0V
PIC16LF87XA 3,0 — — µs baseado em TOSC, VREF ÿ 2,0V
PIC16F87XA 2,0 4,0 6,0 Modo µs A/D RC
PIC16LF87XA 3,0 6,0 9,0 Modo µs A/D RC
131 Tempo de conversão TCNV (não incluindo o tempo S/H) - 12 ENTÃO

(Nota 1)
40 —
132 Tempo de Aquisição TACQ (Nota 2) µs

10* — —
µs O tempo mínimo é o tempo de
estabilização do amplificador. Isso pode
ser usado se a “nova” tensão de entrada
não tiver mudado em mais de 1 LSb (ou
seja, 20,0 mV @ 5,12 V) da última
tensão amostrada (conforme indicado
em CHOLD).
134 TGO Q4 para início do relógio A/D — TOSC/2 § — — Se a fonte do relógio A/D for selecionada como RC, um
tempo de TCY será adicionado antes do
início do relógio A/D. Isso permite que o
SONO
instrução a ser executada.
*
Esses parâmetros são caracterizados mas não testados.
† Os dados na coluna “Typ” estão a 5V, 25°C, salvo indicação em contrário. Esses parâmetros são apenas para orientação do projeto e são
não testado.

§ Esta especificação assegurada pelo projeto.


Nota 1: O registro ADRES pode ser lido no ciclo TCY seguinte .
2: Consulte a Seção 11.1 “Requisitos de Aquisição A/D” para obter as condições mínimas.

ÿ 2003 Microchip Technology Inc. DS39582B-página 195


Machine Translated by Google

PIC16F87XA
NOTAS:

DS39582B-página 196 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
18.0 GRÁFICOS E TABELAS DE CARACTERÍSTICAS DC E AC

Nota: Os gráficos e tabelas fornecidos após esta nota são um resumo estatístico baseado em um número limitado de
amostras e são fornecidos apenas para fins informativos. As características de desempenho listadas aqui
não são testados ou garantidos. Em alguns gráficos ou tabelas, os dados apresentados podem estar fora do especificado
faixa de operação (por exemplo, fora da faixa de alimentação especificada) e, portanto, fora da faixa garantida.

“Típico” representa a média da distribuição a 25°C. “Máximo” ou “mínimo” representa (média + 3ÿ) ou (média – 3ÿ)
respectivamente, onde ÿ é um desvio padrão, em toda a faixa de temperatura.

FIGURA 18-1: IDD TÍPICO vs. FOSC SOBRE VDD (MODO HS)
7

Típico: média estatística @ 25°C


Máximo: média + 3ÿ (-40°C a +125°C)
6
Mínimo: média – 3ÿ (-40°C a +125°C)
5,5 V

5 5,0 V

4,5 V
4
4,0 V
(mA)
IDD

3 3,5 V

3,0 V

2
2,5 V

2,0 V

0
4 6 8 10 12 14 16 18 20

ESCURO (MHz)

FIGURA 18-2: IDD MÁXIMO vs. FOSC SOBRE VDD (MODO HS)
8

Típico: média estatística @ 25°C


7
Máximo: média + 3ÿ (-40°C a +125°C)
Mínimo: média – 3ÿ (-40°C a +125°C)
5,5 V

6
5,0 V

4,5 V
5

4,0 V

4
(mA)
IDD

3,5 V

3,0 V
3

2,5 V

2 2,0 V

0
4 6 8 10 12 14 16 18 20

ESCURO (MHz)

ÿ 2003 Microchip Technology Inc. DS39582B-página 197


Machine Translated by Google

PIC16F87XA
FIGURA 18-3: IDD TÍPICO vs. FOSC SOBRE VDD (MODO XT)

1,8

1,6 Típico: média estatística @ 25°C


Máximo: média + 3ÿ (-40°C a +125°C)
Mínimo: média – 3ÿ (-40°C a +125°C) 5,5 V
1,4
5,0 V

1.2 4,5 V

4,0 V
1,0
(mA)
IDD
3,5 V

0,8
3,0 V

2,5 V
0,6
2,0 V

0,4

0,2

0,0
0 500 1000 1500 2000 2500 3000 3500 4000

ESCURO (MHz)

FIGURA 18-4: IDD MÁXIMO vs. FOSC SOBRE VDD (MODO XT)

2,5

Típico: média estatística @ 25°C


Máximo: média + 3ÿ (-40°C a +125°C)
Mínimo: média – 3ÿ (-40°C a +125°C)
2,0

5,5 V

5,0 V

1,5
4,5 V

(mA)
IDD 4,0 V

3,5 V
1,0
3,0 V

2,5 V

2,0 V

0,5

0,0
0 500 1000 1500 2000 2500 3000 3500 4000

ESCURO (MHz)

DS39582B-página 198 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
FIGURA 18-5: IDD TÍPICO vs. FOSC SOBRE VDD (MODO LP)
70

Típico: média estatística @ 25°C


Máximo: média + 3ÿ (-40°C a +125°C)
60 Mínimo: média – 3ÿ (-40°C a +125°C)
5,5 V

50 5,0 V

4,5 V

40
4,0 V
(uA)
IDD

3,5 V
30
3,0 V

2,5 V
20
2,0 V

10

0
20 30 40 50 60 70 80 90 100

ESCURO (kHz)

FIGURA 18-6: IDD MÁXIMO vs. FOSC SOBRE VDD (MODO LP)

120

Típico: média estatística @ 25°C 5,5 V


Máximo: média + 3ÿ (-40°C a +125°C)
Mínimo: média – 3ÿ (-40°C a +125°C)
100
5,0 V

4,5 V
80

4,0 V

(uA)
IDD
60 3,5 V

3,0 V

2,5 V
40
2,0 V

20

0
20 30 40 50 60 70 80 90 100

ESCURO (kHz)

ÿ 2003 Microchip Technology Inc. DS39582B-página 199


Machine Translated by Google

PIC16F87XA
FIGURA 18-7: FOSC MÉDIO vs. VDD PARA VÁRIOS VALORES DE R (MODO RC, C = 20 pF, +25°C)

4,5

Operação acima de 4 MHz não é recomendada


4,0

5,1 kOhm
3,5

3,0

2,5
10 kOhm
Frequência
(MHz)

2,0

1,5

1,0

0,5
100 kOhm

0,0
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5

VDD (V)

FIGURA 18-8: FOSC MÉDIO vs. VDD PARA VÁRIOS VALORES DE R (MODO
RC, C = 100 pF, +25°C)

2,5

2,0
3,3 kOhm

1,5
5,1 kOhm

Frequência
(MHz)

1,0

10 kOhm

0,5

100 kOhm

0,0
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5

VDD (V)

DS39582B-página 200 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
FIGURA 18-9: MÉDIA FOSC vs. VDD PARA VÁRIOS VALORES DE R (MODO
RC, C = 300 pF, +25°C)

0,9

0,8

3,3 kOhm
0,7

0,6

5,1 kOhm

0,5

Frequência
(MHz)

0,4

10 kOhm
0,3

0,2

0,1
100 kOhm

0,0
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5

VDD (V)

FIGURA 18-10: IPD vs. VDD, -40°C A +125°C (MODO SLEEP, TODOS OS PERIFÉRICOS DESATIVADOS)

100

Máx (125°C)
10

Máx. (85°C)

(uA)
IPD

0,1

0,01

Tipo (25°C) Típico: média estatística @ 25°C


Máximo: média + 3ÿ (-40°C a +125°C)
Mínimo: média – 3ÿ (-40°C a +125°C)

0,001
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5

VDD (V)

ÿ 2003 Microchip Technology Inc. DS39582B-página 201


Machine Translated by Google

PIC16F87XA
FIGURA 18-11: TÍPICO E MÁXIMO ÿITMR1 vs. VDD SOBRETEMPERATURA (-10°C A +70°C,
TIMER1 COM OSCILADOR, XTAL = 32 kHz, C1 E C2 = 47 pF)

14

Típico: média estatística @ 25°C


12 Máximo: média + 3ÿ (-10°C a +70°C)
Mínimo: média – 3ÿ (-10°C a +70°C)

Máx.
Máx.(+70°C)
(70C)
10

(µA)
IPD
(uA)
IPD
Tipo
Tipo(+25°C)
(25C)

0
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5

VDD (V)

FIGURA 18-12: TÍPICO E MÁXIMO ÿIWDT vs. VDD SOBRETEMPERATURA (WDT ATIVADO)

100

Típico: média estatística @ 25°C


Máximo: média + 3ÿ (-40°C a +125°C)
Mínimo: média – 3ÿ (-40°C a +125°C)

Máx. (+125°C)
10

Máx (+85°C)

(uA)
IPD

Tipo (+25°C)

0,1
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5

VDD (V)

DS39582B-página 202 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
FIGURA 18-13: ÿIBOR vs. VDD SOBRETEMPERATURA

1.000

Máx (125°C)

Tipo (25°C)
Dispositivo em

Eles são indeterminados Dorme


Estado

Dispositivo em
Redefinir
(µA)
IDD

100

Nota: A corrente do dispositivo em


Máx (125°C)
Reset depende do modo do
oscilador, frequência e circuito.

Típico: média estatística @ 25°C


Tipo (25°C)
Máximo: média + 3ÿ (-40°C a +125°C)
Mínimo: média – 3ÿ (-40°C a +125°C)

10
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5

VDD (V)

FIGURA 18-14: PERÍODO DE WDT TÍPICO, MÍNIMO E MÁXIMO vs. VDD (-40°C A +125°C)

50

45
Típico: média estatística @ 25°C
Máximo: média + 3ÿ (-40°C a +125°C)
40 Mínimo: média – 3ÿ (-40°C a +125°C)

35
Máx.
(125°C)
30

25
Período
WDT
(ms)

Modelo

(25°C)
20

Mín.
15
(-40°C)

10

0
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5

VDD (V)

ÿ 2003 Microchip Technology Inc. DS39582B-página 203


Machine Translated by Google

PIC16F87XA
FIGURA 18-15: PERÍODO MÉDIO WDT vs. SOBRETEMPERATURA VDD (-40°C A +125°C)

50

45
Típico: média estatística @ 25°C
Máximo: média + 3ÿ (-40°C a +125°C)
Mínimo: média – 3ÿ (-40°C a +125°C)
40
125°C

35
85°C

30

25°C
25
Período
WDT
(ms)

20
-40°C

15

10

0
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5

VDD (V)

FIGURA 18-16: TÍPICO, MÍNIMO E MÁXIMO VOH vs. IOH (VDD = 5V, -40°C A +125°C)

5,5

5,0

4,5

4,0
Máx.

3,5

Tipo (25°C)
VOH
(V) 3,0

2,5
Mín.

2,0

Típico: média estatística @ 25°C


1,5
Máximo: média + 3ÿ (-40°C a +125°C)
Mínimo: média – 3ÿ (-40°C a +125°C)
1,0

0,5

0,0
0 5 10 15 20 25

IOH (-mA)

DS39582B-página 204 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
FIGURA 18-17: TÍPICO, MÍNIMO E MÁXIMO VOH vs. IOH (VDD = 3V, -40°C A +125°C)

3,5

Típico: média estatística @ 25°C


3,0
Máximo: média + 3ÿ (-40°C a +125°C)
Mínimo: média – 3ÿ (-40°C a +125°C)

2,5
Máx.

2,0

VOH
(V)
Tipo (25°C)

1,5

Mín.

1,0

0,5

0,0
0 5 10 15 20 25

IOH (-mA)

FIGURA 18-18: VOL TÍPICO, MÍNIMO E MÁXIMO vs. LIO (VDD = 5V, -40°C A +125°C)

1,0

0,9

Máx (125°C)
Típico: média estatística @ 25°C
0,8 Máximo: média + 3ÿ (-40°C a +125°C)
Mínimo: média – 3ÿ (-40°C a +125°C)

0,7

0,6 Máx. (85°C)

VOL
(V)
0,5

Tipo (25°C)
0,4

0,3
Mínimo (-40°C)

0,2

0,1

0,0
0 5 10 15 20 25

LIO (-mA)

ÿ 2003 Microchip Technology Inc. DS39582B-página 205


Machine Translated by Google

PIC16F87XA
FIGURA 18-19: VOL TÍPICO, MÍNIMO E MÁXIMO vs. LIO (VDD = 3V, -40°C A +125°C)

3,0

Máx (125°C)

2,5 Típico: média estatística @ 25°C


Máximo: média + 3ÿ (-40°C a +125°C)
Mínimo: média – 3ÿ (-40°C a +125°C)

2,0

VOL
(V)
1,5

Máx. (85°C)

1,0

Tipo (25°C)

0,5
Mínimo (-40°C)

0,0
0 5 10 15 20 25

LIO (-mA)

FIGURA 18-20: VIN MÍNIMO E MÁXIMO vs. VDD (ENTRADA TTL, -40°C A +125°C)

1,5

1,4
Típico: média estatística @ 25°C
Máximo: média + 3ÿ (-40°C a +125°C)
Mínimo: média – 3ÿ (-40°C a +125°C)
1.3
VTH Máx (-40°C)

1.2

1.1
Tipo VTH (25°C)

VIN
(V)
1,0

0,9 VTH Min (125°C)

0,8

0,7

0,6

0,5
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5
VDD (V)

DS39582B-página 206 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
FIGURA 18-21: VIN MÍNIMO E MÁXIMO vs. VDD (ENTRADA ST, -40°C A +125°C)

4,0

Típico: média estatística @ 25°C


3,5 Máximo: média + 3ÿ (-40°C a +125°C)
Mínimo: média – 3ÿ (-40°C a +125°C)

VIH Máx (125°C)


3,0

2,5

VIH Mín. (-40°C)

VIN
(V)
2,0

VAI Máx (-40°C)

1,5

1,0 VAI Mínimo (125°C)

0,5

0,0
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5

VDD (V)

FIGURA 18-22: VIN MÍNIMO E MÁXIMO vs. VDD (ENTRADA I2C , -40°C A +125°C)

3,5

VIH máx .
Típico: média estatística @ 25°C
3,0 Máximo: média + 3ÿ (-40°C a +125°C)
Mínimo: média – 3ÿ (-40°C a +125°C)

2,5

2,0
VILMax
VONTADE Máx .

VIN
(V)

VIH Mín .
1,5

1,0

VONTADE Mínimo

0,5

0,0
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5

VDD (V)

ÿ 2003 Microchip Technology Inc. DS39582B-página 207


Machine Translated by Google

PIC16F87XA
FIGURA 18-23: NÃO LINEARIDADE A/D vs. VREFH (VDD = VREFH, -40°C A +125°C)

3,5

-40°C
-40C

+25°C
25C

2,5

+85°C
85C
2
linearidade
diferencial
integral
(LSB)
Não
ou

1,5

0,5

+125°C
125C
0
2 2,5 3 3,5 4 4,5 5 5,5

VDD e VREFH (V)

FIGURA 18-24: NÃO LINEARIDADE A/D vs. VREFH (VDD = 5V, -40°C A +125°C)

2,5

linearidade
diferencial
integral
(LSB)
Não
ou

1,5

Máx. (-40°Ca a125C)


Máx. (-40C +125°C)

Tipo (+25°C) Tipo (25C)

0,5

0
2 2,5 3 3,5 4 4,5 5 5,5

VREFH (V)

DS39582B-página 208 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
19.0 INFORMAÇÕES DA EMBALAGEM

19.1 Informações de marcação do pacote

PDIP de 40 derivações Exemplo


XXXXXXXXXXXXXXX PIC16F877A/P
XXXXXXXXXXXXXXX 0310017
XXXXXXXXXXXXXXX
YYWNNNN

TQFP de 44 derivações Exemplo

XXXXXXXXX PIC16F877A
XXXXXXXXX /PT
XXXXXXXXX 0310017
YYWNNNN

PLCC de 44 derivações Exemplo

XXXXXXXXX PIC16F877A
XXXXXXXXX -20/L
XXXXXXXXX 0310017
YYWNNNN

Legenda: XX...X Informações específicas do cliente* Y


Código do ano (último dígito do ano civil)
YY Código do ano (últimos 2 dígitos do ano civil)
Código da semana WW (a semana de 1º de janeiro é a semana '01')
Código de rastreabilidade alfanumérico NNN

Nota: Caso o número de peça do Microchip completo não possa ser marcado em uma linha, ele
será transferido para a próxima linha, limitando assim o número de caracteres disponíveis
para informações específicas do cliente.

* A marcação padrão do dispositivo PICmicro consiste no número da peça do Microchip, código do ano, código da semana e código de
rastreabilidade. Para marcação de dispositivos PICmicro além disso, aplicam-se determinados acréscimos de preço. Por favor, verifique
com seu escritório de vendas da Microchip. Para dispositivos QTP, quaisquer adicionadores de marcação especiais estão incluídos no
preço do QTP.

ÿ 2003 Microchip Technology Inc. DS39582B-página 209


Machine Translated by Google

PIC16F87XA
Informações de marcação do pacote (cont.)

QFN de 44 derivações Exemplo

XXXXXXXXX PIC16F877A
XXXXXXXXX -I/ML
XXXXXXXXX 0310017
YYWNNNN

PDIP de 28 derivações (Skinny DIP) Exemplo

XXXXXXXXXXXXXXX PIC16F876A/SP
XXXXXXXXXXXXXXX 0310017
YYWNNNN

28-Lead SEC Exemplo

XXXXXXXXXXXXXXXXXXXX PIC16F876A/SO
XXXXXXXXXXXXXXXXXXXX 0310017
XXXXXXXXXXXXXXXXXXXX
YYWNNNN

SSOP de 28 derivações Exemplo

XXXXXXXXXXXX PIC16F876A/
XXXXXXXXXXXX SS
YYWNNNN 0310017

QFN de 28 derivações Exemplo

XXXXXXXX 16F873A
XXXXXXXX -I/ML
YYWNNNN 0310017

DS39582B-página 210 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
Plástico de 40 derivações em linha dupla (P) - 600 mil (PDIP)

E1

2 uma

n 1

UMA A2

eu
c

B1
b A1
eB B p

Unidades POLEGADAS* MILÍMETROS


Limites de dimensão MIN NOME MÁX. MIN NOME MÁX.
Número de pinos n 40 40
Tom p 0,100 2,54

De cima para o avião sentado UMA .160 .175 .190 4.06 4,45 4,83

Espessura do pacote moldado A2 .140 0,150 .160 3,56 3,81 4.06

Base para avião de assento A1 .015 0,38


Largura ombro a ombro E .595 0,600 0,625 15.11 15,24 15,88

Largura do pacote moldado E1 0,530 .545 0,560 13,46 13,84 14.22

Comprimento total D 2.045 2.058 2.065 51,94 52,26 52,45

Dica para o avião sentado eu .120 .130 .135 3,05 3,30 3,43
Espessura do Chumbo c .008 .012 .015 0,20 0,29 0,38

Largura do cabo superior B1 .030 .050 .070 0,76 1,27 1,78


Largura Inferior do Cabo B 0,014 0,018 0,022 0,36 0,46 0,56

Espaçamento total entre linhas § eB 0,620 0,650 0,680 15,75 16,51 17,27

Ângulo de inclinação do molde uma 5 10 15 5 10 15

Topo Ângulo de inclinação do molde b 5 10 15 5 10 15

Inferior * Parâmetro de controle


§ Característica Significativa
Notas:
As dimensões D e E1 não incluem rebarbas ou saliências do molde. As rebarbas ou saliências do molde não devem exceder 0,010” (0,254
mm) por lado.
JEDEC Equivalente: MO-011
Desenho nº C04-016

ÿ 2003 Microchip Technology Inc. DS39582B-página 211


Machine Translated by Google

PIC16F87XA
Flatpack quádruplo fino de plástico de 44 derivações (PT) Corpo de 10x10x1 mm, forma de derivação de 1,0/0,10 mm (TQFP)

E1

#leads=n1

D1 D

2
1
B

n °
CH x 45
uma

UMA

Phi
b A1 A2
eu

(F)

Unidades POLEGADAS MILÍMETROS*


Limites de dimensão MIN NOME MÁX. MIN NOME MÁX.
Número de pinos n 44 44
Tom .031 0,80

Pinos por lado n1 11 11

Altura Geral UMA 0,039 0,043 0,047 1,00 1.10 1,20

Espessura do pacote moldado A2 0,037 0,039 0,041 0,95 1,00 1,05

Impasse § A1 0,002 0,004 0,006 0,05 0,10 0,15

Comprimento do pé eu 0,018 .024 0,030 0,45 0,60 0,75

Pegada (Referência) (F) .039 1,00

Ângulo do pé f 0 3,5 7 0 3,5 7


Largura total E .463 .472 .482 11,75 12h00 12,25

Comprimento total D .463 .472 .482 11,75 12h00 12,25

Largura do pacote moldado E1 .390 .394 .398 9,90 10,00 10.10

Comprimento do pacote moldado D1 .390 .394 .398 9,90 10,00 10.10


Espessura do Chumbo c 0,004 0,006 0,008 0,09 0,15 0,20
Largura do condutor B 0,012 0,015 0,017 0,30 0,38 0,44
Pino 1 Chanfro de Canto CH 0,025 .035 .045 0,64 0,89 1,14

Topo do ângulo de calado do molde


uma 5 10 15 5 10 15

Inferior do ângulo de inclinação do molde b 5 10 15 5 10 15

* Parâmetro de controle
§ Característica Significativa

Notas:
As dimensões D1 e E1 não incluem rebarbas ou saliências do molde. As rebarbas ou saliências do molde não devem exceder 0,010” (0,254 mm)
por lado.
JEDEC Equivalente: MS-026
Desenho nº C04-076

DS39582B-página 212 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
Porta-cavacos com chumbo de plástico de 44 derivações (L) - Quadrado (PLCC)

E1

#leads=n1

D1 D

n 1 2

CH2 x 45° CH1 x 45°


uma
A3

A2 UMA
35°

B1
c
B A1
b
p

E2 D2

Unidades POLEGADAS* MILÍMETROS


Limites de dimensão MIN NOME MÁX. MIN NOME MÁX.
Número de pinos n 44 44
Tom p 0,050 1,27

Pinos por lado n1 11

Altura Geral UMA .165 .180 4,19 4,39 4,57

Espessura do pacote moldado A2 .145 11.173.153 .160 3,68 3,87 4.06

Impasse § A1 0,020 0,028 0,035 0,51 0,71 0,89

Altura do Chanfro Lateral 1 A3 0,024 0,029 0,034 0,61 0,74 0,86


Chanfro de canto 1 CH1 .040 .045 .050 1,02 1,14 1,27

Chanfro de canto (outros) CH2 .000 .005 .010 0,00 0,13 0,25
Largura total E .685 0,690 0,695 17h40 17,53 17,65

Comprimento total D .685 0,690 0,695 17h40 17,53 17,65

Largura do pacote moldado E1 0,650 .653 .656 16,51 16,59 16,66

Comprimento do pacote moldado D1 .650 .653 .656 16,51 16,59 16,66

Largura da Pegada E2 .590 .620 .630 14,99 15,75 16h00

Comprimento da Pegada D2 0,590 0,620 0,630 14,99 15,75 16h00


Espessura do Chumbo c 0,008 0,011 0,013 0,20 0,27 0,33

Largura do cabo superior B1 .026 .029 .032 0,66 0,74 0,81


Largura do cabo inferior B .013 .020 .021 0,33 0,51 0,53

Ângulo de inclinação do molde uma 0 5 10 0 5 10

superior Ângulo de inclinação do b 0 5 10 0 5 10

molde inferior * Parâmetro de controle


§ Característica Significativa
Notas:
As dimensões D e E1 não incluem rebarbas ou saliências do molde. As rebarbas ou saliências do molde não devem exceder 0,010” (0,254 mm)
por lado.
JEDEC Equivalente: MO-047
Desenho nº C04-048

ÿ 2003 Microchip Technology Inc. DS39582B-página 213


Machine Translated by Google

PIC16F87XA
Pacote de plástico sem chumbo de 44 derivações Quad Flat sem chumbo (ML) Corpo de 8x8 mm (QFN)

E
EXPOR
METAL
ALMOFADA

D D2

2 B
1

n
PIN OPCIONAL 1 PIN 1
ÍNDICE LIGADO
E2
ÍNDICE LIGADO
MARCAÇÃO SUPERIOR BLOCO EXPOSTO eu

VISTA DO TOPO VISTA DE BAIXO

UMA

A1

A3

Unidades POLEGADAS MILÍMETROS*

Limites de dimensão MIN NOME MÁX. MIN NOME MÁX.

Número de pinos n 44 44

Tom p .026 BSC 0,65 BSC

Altura Geral UMA 0,031 0,035 0,039 0,80 0,90 1,00

Impasse A1 0,000 0,001 0,002 0 0,02 0,05

Espessura da Base A3 0,010 REFERÊNCIA 0,25 REFERÊNCIA

Largura total E .315 BSC 8.00 BSC

Largura da almofada exposta E2 .262 .268 .274 6,65 6,80 6,95

Comprimento total D .315 BSC 8.00 BSC

Comprimento da almofada exposta D2 .262 .268 .274 6,65 6,80 6,95

Largura do condutor B 0,012 0,013 0,013 0,30 0,33 0,35

Comprimento do fio eu 0,014 0,016 0,018 0,35 0,40 0,45

*Parâmetro de controle
Notas:

As dimensões D e E1 não incluem rebarbas ou saliências do molde. As rebarbas ou saliências do molde não devem
exceder 0,010" (0,254 mm) por lado.
Equivalente JEDEC: M0-220

Desenho nº C04-103

DS39582B-página 214 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
Plástico fino de 28 derivações em linha dupla (SP) - 300 mil (PDIP)

E1

n 1
uma

E
A2

UMA

eu
c

b A1 B1

eB B p

Unidades POLEGADAS* MILÍMETROS

Limites de dimensão MIN NOME MÁX. MIN NOME MÁX.

Número de pinos n 28 28

Tom p 0,100 2,54

De cima para o avião sentado UMA .140 0,150 .160 3,56 3,81 4.06

Espessura do pacote moldado A2 .125 .130 .135 3,18 3h30 3,43

Base para avião de assento A1 0,015 0,38

Largura ombro a ombro E 0,300 .310 .325 7,62 7,87 8,26

Largura do pacote moldado E1 .275 .285 .295 6,99 7,24 7,49

Comprimento total D 1,345 1,365 1,385 34.16 34,67 35,18

Dica para o avião sentado eu .125 .130 .135 3,18 3h30 3,43

Espessura do Chumbo c 0,008 0,012 0,015 0,20 0,29 0,38

Largura do cabo superior B1 0,040 0,053 0,065 1,02 1,33 1,65

Largura Inferior do Cabo B 0,016 0,019 0,022 0,41 0,48 0,56

Espaçamento total entre linhas § eB .320 0,350 .430 8.13 8,89 10,92

Ângulo de inclinação do molde uma 5 10 15 5 10 15

Topo Ângulo de inclinação do molde b 5 10 15 5 10 15

Inferior * Parâmetro de controle


§ Característica Significativa
Notas:
As dimensões D e E1 não incluem rebarbas ou saliências do molde. As rebarbas ou saliências do molde não devem exceder 0,010” (0,254
mm) por lado.
JEDEC Equivalente: MO-095
Desenho nº C04-070

ÿ 2003 Microchip Technology Inc. DS39582B-página 215


Machine Translated by Google

PIC16F87XA
Contorno pequeno de plástico de 28 derivações (SO) - Largo, 300 mil (SOIC)

E1
p

B
2
n 1

h
uma

45°

c
UMA A2

Phi

b eu A1

Unidades POLEGADAS* MILÍMETROS


Limites de dimensão MIN NOME MÁX. MIN NOME MÁX.
Número de pinos n 28 28
Tom p 0,050 1,27

Altura Geral UMA 0,093 0,099 .104 2,36 2,50 2,64

Espessura do pacote moldado A2 0,088 0,091 0,094 2,24 2,31 2,39

Impasse § A1 .004 .008 .012 0,10 0,20 0,30


Largura total E .394 .407 .420 10,01 10,34 10,67

Largura do pacote moldado E1 .288 .295 .299 7,32 7,49 7,59

Comprimento total D 0,695 .704 .712 17,65 17,87 18.08


Distância do chanfro h .010 .020 .029 0,25 0,50 0,74

Comprimento do pé eu .016 .033 .050 0,41 0,84 1,27

Parte superior do ângulo do pé f 048048


Espessura do Chumbo c 0,009 0,011 0,013 0,23 0,28 0,33
Largura do condutor B 0,014 0,017 0,020 0,36 0,42 0,51

Topo do ângulo de calado do molde


uma 0 12 15 0 12 15

Inferior do ângulo de inclinação do molde b 0 12 15 0 12 15

* Parâmetro de controle
§ Característica Significativa

Notas:
As dimensões D e E1 não incluem rebarbas ou saliências do molde. As rebarbas ou saliências do molde não devem exceder 0,010” (0,254
mm) por lado.
JEDEC Equivalente: MS-013
Desenho nº C04-052

DS39582B-página 216 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
Contorno pequeno de plástico retrátil de 28 derivações (SS) - 209 mil, 5,30 mm (SSOP)

E1

2
n 1

uma

UMA

A2

A1
Phi

eu
b

Unidades POLEGADAS MILÍMETROS*


Limites de dimensão MIN NOME MÁX. MIN NOME MÁX.
Número de pinos n 28
Tom p 28.026 0,65

Altura Geral UMA 0,068 0,073 0,078 1,73 1,85 1,98

Espessura do pacote moldado A2 0,064 0,068 0,072 1,63 1,73 1,83

Impasse § A1 .002 .006 .010 0,05 0,15 0,25


Largura total E .299 .309 .319 7,59 7,85 8.10

Largura do pacote moldado E1 .201 .207 .212 5.11 5,25 5,38

Comprimento total D .396 .402 .407 10.06 10.20 10,34

Comprimento do pé eu 0,022 0,030 0,037 0,56 0,75 0,94


Espessura do Chumbo c 0,004 .007 .010 0,10 0,18 0,25

Ângulo do pé Phi 0 4 8 0,00 101,60 203,20


Largura do condutor B 0,010 0,013 0,015 0,25 0,32 0,38

Topo do ângulo de calado do molde


uma 0 5 10 0 5 10

Inferior do ângulo de inclinação do molde b 0 5 10 0 5 10

* Parâmetro de controle
§ Característica Significativa

Notas:
As dimensões D e E1 não incluem rebarbas ou saliências do molde. As rebarbas ou saliências do molde não devem exceder 0,010” (0,254
mm) por lado.
JEDEC Equivalente: MS-150
Desenho nº C04-073

ÿ 2003 Microchip Technology Inc. DS39582B-página 217


Machine Translated by Google

PIC16F87XA
Pacote Quad Flat de plástico de 28 derivações sem chumbo (ML) Corpo 6x6 mm, Punção Singulado (QFN)

E EXPOR
METAL
E1 ALMOFADAS

D1 D D2
p

2
1 B

n
R
E2
CH X 45° eu

VISTA DO TOPO VISTA DE BAIXO

uma

A2 UMA

A1

A3

Unidades POLEGADAS MILÍMETROS*


Limites de dimensão MIN NOME MÁX. MIN NOME MÁX.
Número de pinos n 28 28
Tom p .026 BSC 0,65 BSC

Altura Geral UMA 0,033 0,039 0,85 1,00

Espessura do pacote moldado A2 0,026 0,031 0,65 0,80


Impasse A1 0,000 .0004 0,002 0,00 0,01 0,05
Espessura da Base A3 .008 REFERÊNCIA 0,20 REFERÊNCIA

Largura total E .236 BSC 6,00 BSC

Largura do pacote moldado E1 .226 BSC 5,75 BSC

Largura da almofada exposta E2 .140 .146 .152 3,55 3,70 3,85

Comprimento total D .236 BSC 6,00 BSC

Comprimento do pacote moldado D1 .226 BSC 5,75 BSC

Comprimento da almofada exposta D2 .140 .146 .152 3,55 3,70 3,85


Largura do condutor B 0,009 0,011 0,014 0,23 0,28 0,35

Comprimento do fio eu 0,020 0,024 0,030 0,50 0,60 0,75


Largura da Barra de Amarração R 0,005 0,007 0,010 0,13 0,17 0,23

Comprimento da Barra de Amarração Q 0,012 0,016 0,026 0,30 0,40 0,65


Chanfro CH 0,009 0,017 0,024 0,24 0,42 0,60

Topo do ângulo de calado do molde


uma 12° 12°

*Parâmetro de controle
Notas:

As dimensões D e E1 não incluem rebarbas ou saliências do molde. As rebarbas ou saliências do molde não devem
exceder 0,010" (0,254 mm) por lado.
Equivalente JEDEC: mMO-220

Desenho nº C04-114

DS39582B-página 218 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
APÊNDICE A: HISTÓRICO DE REVISÃO APÊNDICE B: DISPOSITIVO
DIFERENÇAS
Revisão A (novembro de 2001)
As diferenças entre os dispositivos nesta folha de dados
Folha de dados original para dispositivos PIC16F87XA. o estão listados na Tabela B-1.
dispositivos apresentados são versões aprimoradas do
microcontroladores PIC16F87X discutidos no
“Folha de Dados do PIC16F87X” (DS30292).

Revisão B (outubro de 2003)


Esta revisão inclui as características DC e AC
Gráficos e Tabelas. As Especificações Elétricas em
A Seção 17.0 "Características Elétricas" foi
atualizado e houve pequenas correções no
texto da folha de dados.

TABELA B-1: DIFERENÇAS ENTRE DISPOSITIVOS DA FAMÍLIA PIC16F87XA

PIC16F873A PIC16F874A PIC16F876A PIC16F877A

Memória de programa flash 4K 4K 8K 8K


(palavras de 14 bits)

Memória de dados (bytes) 192 192 368 368

Memória de dados EEPROM (bytes) 128 128 256 256

Interrupções 14 15 14 15

Portas de E/S Portas A, B, C Portas A, B, C, D, E Portas A, B, C Portas A, B, C, D, E


Comunicações seriais MSSP, USART MSSP, USART MSSP, USART MSSP, USART
Porta Escrava Paralela Não Sim Não Sim

Módulo analógico-digital de 10 bits 5 canais de entrada 8 canais de entrada 5 canais de entrada 8 canais de entrada

Pacotes PDIP de 28 pinos PDIP de 40 pinos PDIP de 28 pinos PDIP de 40 pinos


SOC de 28 pinos CLP de 44 pinos SOC de 28 pinos CLP de 44 pinos
SSOP de 28 pinos TQFP de 44 pinos SSOP de 28 pinos TQFP de 44 pinos
QFN de 28 pinos QFN de 44 pinos QFN de 28 pinos QFN de 44 pinos

ÿ 2003 Microchip Technology Inc. DS39582B-página 219


Machine Translated by Google

PIC16F87XA
APÊNDICE C: CONVERSÃO
CONSIDERAÇÕES

Considerações para converter de versões anteriores


de dispositivos para os listados nesta folha de dados estão listados
na Tabela C-1.

TABELA C-1: CONSIDERAÇÕES DE CONVERSÃO

Característica PIC16C7X PIC16F87X PIC16F87XA

Alfinetes 28/40 28/40 28/40

Temporizadores 3 3 3

Interrupções 11 ou 12 13 ou 14 14 ou 15

Comunicação PSP, USART, SSP PSP, USART, SSP PSP, USART, SSP
(SPI, Escravo I2C ) (SPI, Mestre/Escravo I2C ) (SPI, Mestre/Escravo I2C )

Frequência 20MHz 20MHz 20MHz

Tensão 2,5V-5,5V 2,2V-5,5V 2,0V-5,5V

DE ANÚNCIOS
8 bits, 10 bits, 10 bits,
4 seleções de relógio de conversão 4 seleções de relógio de conversão 7 seleções de relógio de conversão

PCC 2 2 2
— — 2
Comparador
— — Sim
Tensão do Comparador
Referência

Memória do programa 4K, 8K EPROM Flash 4K, 8K Flash 4K, 8K


(Apagar/Escrever em (Apagar/Escrever em
única palavra) blocos de quatro palavras)

BATER 192, 368 bytes 192, 368 bytes 128, 192, 368 bytes
Dados EEPROM Nenhum 256 bytes 128, 256 bytes
Proteção de código Ligado desligado
Segmentado, começando no final Ligado desligado

da memória do programa

Memória do programa Ligado desligado
Segmentado, começando no
Proteção contra gravação início de
memória de programa
Outro ÿ

Depurador em circuito, Depurador em circuito,


Programação de baixa tensão Programação de baixa tensão

DS39582B-página 220 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
ÍNDICE
UMA Lógica de interrupção ......................................................... .......... 153
DE ANÚNCIOS ............................................... ....................................... 127 MSSP (Modo I2C ) .............................. ................... 80 MSSP (Modo
SPI) ................... .............................. 71 Circuito de reinicialização no
Requisitos de aquisição ........... .................................. 130 ADCON0
chip ............... ......................... 147 Arquitetura PIC16F873A/
Registrador .................. ......................... 127 Registro
PIC16F876A .............. ........ 6 Arquitetura PIC16F874A/
ADCON1 .......... ....................................... 127 bits
PIC16F877A ...................... 7 Pinos de Sobreposição de Saída
ADIF ........ .................................................. .......... 129 Registro
Periférica PORTC (RC2:0, RC7:5) ......................... 46 Pinos de
ADRESH ........................................ ............... 127 Registro
Sobreposição de Saída Periférica (RC4:3) ...... .... 46 PORTD
ADRESL .............................. ................... 127 Pinos da Porta
(no modo de porta de E/S) ................................... ..... 48
Analógica .................... ................... 49, 51 Registros e Bits
PORTD e PORTE (Porta Escrava Paralela) ................. 51
Associados ................... .............. 133 Calculando o Tempo de
PORTE (No modo de porta de E/S) ......... ......................... 49 Pinos
Aquisição .............................. .... 130 Configurando os pinos da porta
RA3:RA0 .............. ............................................. 41 RA4/ Pino
analógica .................... 131 Configurando a
T0CKI ................................................. .......... 42 pinos
interrupção .. ....................................... 129 Configurando o
RA5 .................................. ........................ 42 RB3 :RB0
Módulo ...... ......................................... 129 Relógio de
Pinos ............................................. .............. 44 Pinos
conversão ......... ........... ......................... 131
RB7:RB4 ................... ......................... 44 Modo de oscilador
Conversões ............... ......................................... 132 Características
RC .................. ......................... 146 Circuito MCLR
do conversor . ....................................... 194 Efeitos de uma
Recomendado .............. ................... 148 Modo PWM
reinicialização ...... .............................................. 133 IR/ Bit
Simplificado ................... ......................... 67 Temporizador0/WDT
CONCLUÍDO ................................................. ........... 129 Interruptor
Pré-escalador ........................ ....................... 53
de Amostragem Interno (Rss) Impedância ............. 130 Operação
Temporizador1 .............................. ............................................. 58
Durante o Repouso .............. .................................. 133 Registros de
Temporizador2 ... .................................................. .......... 61 USART
resultados .................. ......................... 132 Impedância da
Receber .................................. .......................117, 119 USART
Fonte .......... ......................................... 130 Requisitos de conversão
Transmissão .............................. ......................... 115 Temporizador
A/D ... ....................................... 195 Classificações Máximas
do Watchdog ................... ................................... 155
Absolutas ........ ......................... 173
ACKSTAT ........... .................................................. ............ 101 Registro
ADCON0 .................................. ......................... 19 Registro
BOR. Consulte Reinicialização de Brown-out.
ADCON1 ......................... .......................... ............... 20 Transmissor
BRG. Consulte Gerador de taxa de transmissão.
Receptor Assíncrono Síncrono Universal Endereçável. Veja USART.
Bit BRGH .................................................. ......................... 113
Reinicialização de Brown-out (BOR) .................. ... 143, 147, 148, 149, 150
Registo ADRESH .................................................. .............. 19 Registro
Status BOR (BOR Bit) ................... ............... 29 Colisão de
ADRESL .................................... ......................... 20 Conversor Analógico-
barramento durante uma condição de partida repetida ............ 108 Colisão
Digital. Veja A/D.
de barramento durante uma condição de partida ........ ......................... 106
Notas de Aplicação
Colisão de Barramento Durante uma Condição de Parada ....................... .......
AN552 (Implementando o Despertar
109 Bit Flag de Interrupção de Colisão de Barramento, BCLIF .............................. 28
ao Toque de Tecla) ...................................... ............. 44 AN556
(Implementando uma Leitura de Tabela) ....................... 30 Montador C
MPASM Montador . .................................................. 167 Registros
Compiladores
Associados de Recepção Assíncrona ....................................... 118,
C MPLAB C17 ............................................. ............... 168 MPLAB
120
C18 .............................. .................................. 168 MPLAB
C30 .................. .......................................... 168 Capturar/Comparar/
Transmissão Assíncrona
PWM ( CCP) ....................................... 63 Registros Associados Capturar,
Registros Associados ....................................... 116
Comparar e Temporizador1 .......................... 68 PWM e
B Temporizador2 ..................... ......................... 69 Modo de
Captura ................... ......................................... 65
Banco, Memória de Dados ............................................. ... Gerador de taxa
de transmissão de 16, 22 bauds ........................................ ............... 97 CCP1IF ....... .................................................. ..... 65 Pré-
escalonador .......................................... ........ 65 Recursos do
Registros Associados .............................. ............... 113
Cronômetro CCP .............................. .......... 63 Comparar
BCLIF ................................. .................................................. 28
saída de acionamento de evento especial de CCP1 .............. 66
B.F................................................. ................................... 101 Diagramas
Saída de acionador de evento especial de CCP2 .... .......... 66 Modo
de Blocos A/D ........ .................................................. .................. 129 Modelo
de Entrada Analógica .................................. ............. 130, 139 Comparar .................................. ......................... 66 Modo de
interrupção do software ......................... ........ ... 66 Gatilho de
Gerador de Taxa de Transmissão ................................ .......... 97
Operação do Modo de Captura .................................. ............... 65 Evento Especial ........................................ 66 Interação de Dois
Módulos CCP (tabela) ................... 63 Modo
Modos de operação de E/S do comparador .............................. 136
PWM ................... ......................................... 67 Ciclo de
Saída do Comparador ............................................. ... 138 Referência
trabalho .... .................................................. ... 67 Exemplo de
de tensão do comparador .............................. 142 Operação do modo
Frequências/Resoluções (tabela) .... 68 Período
de comparação ........ ......................... 66C Operação do ressonador
PWM ........................... ......................... 67 Gatilho de Eventos
de cristal/cerâmica (configuração HS, XT ou LP Osc) .......... 145
Especiais e Conversões A/D ........ 66
Operação de entrada de relógio externo (configuração HS, XT ou LP
Osc) .. .................. 145

ÿ 2003 Microchip Technology Inc. DS39582B-página 221


Machine Translated by Google

PIC16F87XA
Requisitos de Captura/Comparação/PWM Registros Associados à
(CCP1 e CCP2) ........................................ .............. 186 PCC. Memória EEPROM de Dados ............................................. .... 39
Consulte Capturar/Comparar/PWM. Registro EEADR ............................................. .......... 33 Registro
Registro CCP1CON ............................................. ........... 19 Registro EEADRH .................................. ................... 33 Registro
CCP2CON .................................. ......................... 19 Registro EECON1 ................................... ......................... 33 Registro
CCPR1H ........................ ......................... 19, 63 Registro EECON2 ....................... ......................... 33 Operação durante Code-
CCPR1L ............ ......................................... 19, 63 Registro Protect ........... ....................... 39 Proteção contra gravações
CCPR2H . .................................................. ..... 19, 63 Registro espúrias ....................... .... 39
CCPR2L ........................................ ......... 19, 63 CCPxM0 Leitura .................................................... ......................... 35 Write
Bit ........................... .........................................64 CCPxM1 Complete Flag Bit (EEIF) ......... ................ 33
Bit ... .................................................. ......64 Bit Escrita .............................. ......................... 35 Memória de
CCPxM2 .......................... .........................................64 CCPxM3 dados ......... .................................................. ............ 16 Seleção de Banco
Bit ... .................................................. ...................64 Bit (RP1:RP0 Bits) ....................... ....16, 22 Registros de Uso
CCPxX .................... .........................................64 Bit Geral ........................................ 16 Registre o mapa do
CCPxY . .................................................. .......................64 Requisitos de arquivo ...... ......................................... 17, 18 Registros de Função
temporização de CLKO e E/S ........................ 183 Registro Especial ....................................... 19 Gráficos e Tabelas de
CMCON ......... .................................................. .... 20 Exemplos de Código Características DC e AC .. ............ 197 Características
Chamada de uma Sub-rotina na Página 1 da Página 0 ............... 30 DC .................................. .........175–179 Placas de Demonstração PICDEM
Endereçamento Indireto ............... ......................... 31 Inicializando o 1 ........................... ......................................... 170 PICDEM
PORTA .......... ......................................... 41 Carregando o SSPBUF 17 ......... .................................................. ... 170 PICDEM 18R
(SSPSR ) Registrar ................... 74 Lendo dados PIC18C601/801 .............................. 171 PICDEM 2
EEPROM ................... .......... 35 Lendo a memória do programa Plus .... .................................................. .. 170 PICDEM 3
Flash ......................... ...... 36 Salvando Status, Registros W e PIC16C92X ............................................. 170 PICDEM
PCLATH na RAM .............................. ......................... 154 Gravando 4 ............................................. .................. 170 PICDEM LIN
em EEPROM de Dados ........................ ......................... 35 Gravando PIC16C43X .............................. ........... 171 PICDEM USB
na Memória de Programa Flash ......................... ......... 38 PIC16C7X5 ................................... ... 171 PICDEM.net Internet/
Proteção de código ......................................... ......... 143, 157 Módulo Ethernet .............................. 170 Suporte ao
Comparador ........................ ......................... 135 Conexão de Entrada Desenvolvimento .... .................................................. 167 Diferenças
Analógica n Considerações ................................................. .139 Registros do dispositivo .................................................. ........... 219 Visão geral do
Associados ............................................. .140 dispositivo .................................. .............................. 5 Endereçamento
Configuração ................................................. .......... 136 Efeitos de Direto .................. ............................................. 31
uma Reinicialização ........................ ......................... 139
Interrupções .............................. ......................................... 138
E
Operação ......... .................................................. ...... 137 Operação
Durante o Sono ........................................ .... 139 Registo EEADR ........................................................ ...........21, 33 Registro
Saídas .................................................... ......................... 137 EEADRH ............................................. .......................21, 33 Registro
Referência ......................... .......................................... 137 Tempo EECON1 ........................ ..............................21, 33 Registro
de Resposta ..... .................................................. 137 Especificações EECON2 .......... .............................................. 21, 33 Registro
do Comparador ............................................. .180 Referência de EEDATA ............................................. .............. 21 Registro
Tensão do Comparador ........................................ 141 Registros EEDATH .................................... .................................. 21 Características
Associados ... .................................................. 142 Calculado VÁ Elétricas .................. ......................... 173
PARA ................................................. .............. 30 bits de Errata ............... .................................................. ......... 4 Ferramentas de
configuração .................................... ......................... 143 Palavra de Avaliação e Programação .................................. ..... 171 Requisitos de
configuração ................... ....................................... 144 Considerações Temporização do Relógio Externo ....................... 182 Entrada de
sobre conversão ........ ....................................... 220 Registro Interrupção Externa (RB0/INT) . Consulte Fontes de interrupção.
CVRCON ......... .................................................. .. 20 Sinal de Referência Externa ............................................. 137

F
Instruções de Firmware ........................................ ....... 159 Registros
Associados à Memória de Programa Flash ..................................... ............
D 39 Registro EECON1 .................................. ................... 33 Registro
Dados EEPROM e Registro EEADR de Memória de EECON2 ................................... ......................... 33
Programa Flash ............................................. .............. 33 Registro Leitura ......................... ......................................... 36
EEADRH ................................... ......................... 33 Registro Escrita . .................................................. ......................... 37 Registro
EECON1 .............................. ......................... 33 Registro FSR .......................... ..............................19, 20, 31
EECON2 .................. ......................... 33 Registro
EEDATA ............ ............................................. 33 Registro
G
EEDATH ..... ......................................... 33
Suporte geral de endereço de chamada .............................. 94

DS39582B-página 222 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
EU
RRF .................................................... ......................... 164
SONO ........................ ............................................. 164
Portas de E/S ............................................. ......................... 41
SUBLW ... .................................................. ............... 164
Requisitos de dados do barramento I2C .............. ..............................
SUBWF ................................. ................................... 164
192 I 2C Requisitos dos bits de partida/parada do
SWAPF .................... .................................................. ..... 165
barramento ........... ......................... 191 Registros de Modo I
XORLW .......................................... ........................ 165
2C .......................... ......................................... 80 I 2C
XORWF ........................ ......................................... 165 Tabela
Modo ..... .................................................. ......................... 80 ACK
Resumo .... .................................................. 160 INT Interrupção
Pulso .............................. ......................... 84, 85 Reconhecer
(RB0/INT). Consulte Fontes de interrupção.
tempo de sequência .......... ......................... 104 Gerador de
Taxa de Transmissão ........................ ......................... 97 Colisão Registro INTCON ............................................. ............... 24 bits
GIE .............................. ......................................... 24 INTE
de ônibus
Bit ........ .................................................. ........... 24 bits
Condição de Partida Repetida .............................. 108
INTF .................................. ......................... 24 PEIE
Condição de Partida ........... ......................................... 106
Bit .............. .................................................. ..... 24 RBIE
Condição de Parada ......... ......................................... 109
Bit ............................................. ................... 24 bits
Arbitragem do Relógio ......... .................................................. 98
Efeito de uma reinicialização ............................................. ......... RBIF ................... ..................................................24, 44 TMR0IE
Bit . .................................................. .............. 24 Bit
105 Suporte geral de endereço de chamada ......................... 94
TMR0IF ................................... .............................. 24
Modo Mestre ........................................................ .............. 95
Circuito Interintegrado. Veja I2C.
Operação ................................... ......................... 96
Sinal de Referência Interno ............................................. 137
Tempo de Início Repetido ....................... ................ 100
Impedância do Interruptor de Amostragem Interno (Rss) .....................
Recepção no Modo Master .............................. .......... 101
Condição de início do modo mestre .............................. ..... 99 130 Fontes de Interrupção ................. ......................................... 143,
Transmissão do Modo Mestre ....................................... 101 153 Interrupção na Mudança (RB7:RB4) ........................ 44 Pino
RB0/INT, Externo ........... ......................... 9, 11, 154 TMR0
Multi- Comunicação Mestre, Colisão de Barramento e
Estouro ............... ....................................... 154 USART
Arbitragem ........................................ ....... 105 Modo Multi-
Mestre ......... .............................. 105 Informação de Bit de Recepção/Transmissão Concluída ..... .......... 111 Interrupções
Interrupção de colisão de barramento ........................... .......................
Leitura/Gravação (Bit R/W) ........ ........... 84, 85 Relógio Serial
28 Interrupção de porta serial síncrona ........................ ...... 26
(RC3/SCK/SCL) ........................... .......... 85 Modo
Escravo .................................. ......................... 84 Interrupções, Salvando o Contexto Durante ..............................
154 Interrupções , Habilitar Ativação de Interrupção Global de Bits (Bit
Endereçamento ......................... .................................... 84
GIE) .......................24, 153 Interrupção na Alteração (RB7:RB4)
Recepção .................... ......................................... 85
Transmissão . .................................................. ... 85
Operação Dormir .................................................. ........... 105
Habilitar (Bit RBIE) ..............................24, 154 Habilitar
Temporização da condição de parada .............................. ...........
interrupção periférica (Bit PEIE) ....................... 24 Habilitar RB0/
104 Localizações de ID .................................. ......................... 143,
INT (Bit INTE) .............. .......................... 24 Habilitar estouro
157 Depurador em Circuito ....................... ......................... 143, 157
Recursos .............. .................................................. 157 TMR0 (Bit TMR0IE) ................ ........ 24 Interrupções, Bits de
Sinalização Interrupção na Mudança (RB7:RB4) Sinalizador (Bit
Programação Serial In-Circuit (ICSP) ....................... 143, 158 Registro
RBIF) ....................... .......................24, 44, 154 Sinalizador RB0/
INDF .............. .......................................... 19, 20 , 31 Endereçamento
INT (bit INTF) ............ .............................. 24 Sinalizador
Indireto ............................................. .............. 31 Registro
de estouro TMR0 (Bit TMR0IF) ........... ..........24, 154
FSR .................................... ......................... 16 Formato de
Instrução ................... ......................................... 159 Conjunto de
Instruções ...... .................................................. .......... 159 eu
ADDLW ......................................... .............................. 161
ADDWF .................. .................................................. 161 E Carregamento do PC ............................................. ......................... 30
Programação ICSP de Baixa Tensão ....................... .............. 158
LW ................................................. ................... 161
Programação Serial em Circuito de Baixa Tensão ..................... 143
ANDWF ................................... ........................................ 161
BCF ........ .................................................. ................ 161 M
BSF .............................. .......................................... 161
Master Clear (MCLR) ............................................. .............. 8
BTFSC ...... .................................................. .............. 161
Reinicialização MCLR, Operação Normal ...............147, 149,
BTFSS ................................... ......................... 161
150 Reinicialização MCLR, Dormir ...... .......................... 147, 149, 150
CHAMADA .............. . .................................................. ....... 162
Porta serial síncrona mestre (MSSP). Veja MSSP.
CLRF .................................................. ......................... 162
MCLR ................................................. .............................. 148 MCLR/
CLRW .................. .................................................. ... 162
VPP ................ .................................................. ......... 10 Organização
CLRWDT ............................................. ......................... 162
da Memória ........................................ ............... 15 Memória EEPROM
COMF .......................... ......................................... 162
de Dados .............................. ............... 33 Memória de
DECF ..... .................................................. ................ 162
dados .............................. ......................... 16 Memória de
DECFSZ ................................ ................................... 163 IR
programa flash .................. ......................... 33 Memória de
PARA .............. .................................................. ....... 163
programa .................. ................................... 15 MPLAB ASM30
INCF ......................................... .............................. 163
Montador, Linker, Bibliotecário ...... ............ 168 MPLAB ICD 2 In-
INCFSZ ................ .................................................. .. 163
Circuit Debugger .............................. .... 169 MPLAB ICE 2000
IORLW ............................................. ......................... 163
Emulador Universal In-Circuit de Alto Desempenho .............................. .........
IORF ......................... ......................................... 163
169
RETORNO .... .................................................. .........................
164 RLF .............................. .......................................... 164

ÿ 2003 Microchip Technology Inc. DS39582B-página 223


Machine Translated by Google

PIC16F87XA
Emulador Universal In-Circuit de Alto Desempenho MPLAB Programador de Desenvolvimento PICSTART Plus .......... 169 Registro
ICE 4000 ........................................ ............169 Software do Ambiente de PIE1 ....................... .........................................20, 25 Registro
Desenvolvimento Integrado MPLAB ................................ .............. 167 Vinculador PIE2 .... .................................................. ..........20, 27 Descrições de Pinagem
de Objetos MPLINK/Bibliotecário de Objetos MPLIB ............... 168 PIC16F873A/PIC16F876A ........................ ........... 8 Registro
MSSP ........... .................................................. ................... 71 Modo 2C. Veja PIR1 .................................. ......................... 19, 26 Registro
I2C. PIR2 .................. .............................................19, 28
POP . .................................................. ......................... 30 POR. Consulte
Modo SPI ........................................................ ................... 71 Modo SPI. Reinicialização ao ligar.
Veja SPI.
Módulo MSSP PORTA .................................................... ......................... 8, 10 Registros
Alongamento do relógio ............................................. ......... 90 Associados ....................... .............................. 43
Sincronização do Relógio e o Bit CKP ......... 91 Registros de Controle Funções .................. ......................................... 43 Registo
(Geral) ....... ......................... 71 PORTA ........................................................ ...19, 41 Registo
Operação ............... .................................................. 84 Visão TRISA ............................................. ................ 41
geral ............................................. ......................... 71 Modo Mestre PORTA .............................. .................................. 9, 11 Registros
SPI ......................... .............................. 76 Modo Escravo Associados .. ......................................... 45
SPI ............... ......................................... 77 Funções . .................................................. ................ 45 Registro
SSPBUF ......... .................................................. ............ 76 PORTB .............................. ....................19, 44 Habilitação de pull-up (Bit
SSPSR .................................. ......................... 76 Modo Multi- RBPU) ................... ......................... 23 RB0/INT Seleção de Borda (Bit
Mestre .......... ......................................... 105 INTEDG) ....................... ........ 23 Pino RB0/INT, Externo ........................ ..9,
11, 154 RB7:RB4 Interrupção na Mudança ................................ 154 RB7:
O
RB4 Interrupção no Cha nge Habilitar (Bit
Descrições dos Campos Opcode ............................................. 159 OPTION_REG RBIE) ............................................. ........24, 154 RB7:RB4 Sinalizador de
Registrar ............................................. ......23 INTEDG Interrupção na Mudança (Bit RBIF) ....................... ....................24,
Bit ......................................... ................... 23 PS2:PS0 44, 154 Registro TRISB ........................ ..............................21, 44 Registro
Bits ................... ......................................... 23 bits PORTB ............... .................................................. 21
PSA ....... .................................................. .............. 23 RBPU PORTO .................................................. ......................... 9, 12 Registros
Bit ................................... ................................... 23 T0CS Associados .................. .............................. 47
Bit .................... .................................................. ....... 23 T0SE Funções .................. ......................................... 47 Registo
Bit ........................................ ......................... 23 Pino OSC1/ PORTC ........................................................ ...19, 46 RC3/SCK/SCL
CLKI ................ .............................................. 8, 10 OSC2 /CLKO Pino ................................... ............... 85 Pino RC6/TX/
Pin ............................................. .......... 8, 10 Configuração do oscilador CK .............................. ......................... 112 Pino RC7/RX/
HS .............................. ......................... 145, 149 DT ............... ......................... 112, 113 Registro
LP ......... .................................................. .......... 145, 149 TRISC ........... ....................................... 46, 111
RC ...... .................................................. .... 145, 146, 149 PORTO ...... ....................................... ..............................13, 51 Registros
XT ........................................ ......................... 145, 149 Seleção do Associados ............... .................................... 48
oscilador ................ .......................................... 143 Temporizador de Funções .............. .................................................. ... 48 Função da Porta
inicialização do oscilador (OST ) .............................. 143, 148 Oscilador, Escrava Paralela (PSP) ....................... 48 Registro
WDT ............ .................................................. .. 155 Osciladores Seleção de PORTD ........ ..............................19, 48 Registro
Capacitor ........................................... ...... 146 Seleção do Ressonador TRISD .. .................................................. ...... 48
Cerâmico ................................. 145 Ressonadores Cristal e PORTA .......................................... ......................... 13 Pinos da Porta
Cerâmico . ......................... 145 Analógica .......... ......................................... 49, 51 Registros
RC .................................. .................................................. ...... 146 Associados .... ............................................. 50
Funções ... .................................................. .............. 49 Status completo
do buffer de entrada (Bit IBF) .............. ..... 50 Estouro do Buffer de
Entrada (Bit IBOV) ....................... 50 Status Completo do Buffer de Saída
P
(Bit OBF) ....................... 50 Registro PORTE ................ ....................................
Marcação de informações 19, 49 Seleção do Modo PSP (PSPMODE Bit) ........... 48, 49, 50, 51 RE0/
do pacote ............................................. .........................209 Informações RD/AN5 Pin ................ ......................... 49, 51 RE1/WR/AN6
de Embalagem .............................. ................... 209 Busca, Memória de Pino ....... .......................................... 49, 51 RE2/CS/ Pino
Programa ................... .............................. 30 Porta Escrava Paralela AN7 ............................................. ...49, 51 Registro
(PSP) ........... ......................... 13, 48, 51 Registros TRISE ............................................. ................ 49 Postscaler, Atribuição
Associados ............... ......................... 52 RE0/RD/AN5 WDT (PSA Bit) ....................... ......................... 23 Seleção de Taxa
Pino ......... ......................................... 49, 51 RE1/WR/AN6 (PS2:PS0 Bits) .................. ...................... 23
Pino ......................................... 49 , 51 Pino RE2/CS/
AN7 ............................................. ........ 49, 51 Selecionar (PSPMODE
Bit) ..............................48, 49, 50, 51 Requisitos da Porta Escrava Paralela
(somente PIC16F874A/ 877A) .............................. .. 187 Registro
PCL .................................................. ............. 19, 20, 30 Registro Modo de desligamento. Consulte Dormir.
PCLATH .............................. ......................... 19, 20, 30 Registro Reinicialização ao ligar (POR) ....................... 143, 147, 148, 149, 150 Status
PCON ....................... .......... ......................... 20, 29, 149 BOR POR (Bit POR) ....... ....................................... 29 Registro de Controle de
Bit ........................ .............................................. 29 POR Potência (PCON) ... .......................... 149 Desligamento (Bit
Bit .................................................. ..................29 PIC16F87XA Sistema
PD) ............... ..........................22, 147 Temporizador de inicialização
de Identificação do Produto ..................... 231 PICkit 1 Flash Kit
(PWRT) ............ ......................... 143 Tempo limite (TO
iniciante ................................................ .. 171 Bit) .............. ......................... 22, 147

DS39582B-página 224 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
Temporizador de inicialização (PWRT) ............................................. ....... 148 Pino RE0/RD/AN5 .................................................. ................... 13 RE1/WR/AN6

Registro PR2 ........................................ ......................... 20, 61 Pré-escalador, Pino ................... ................................... 13 RE2/CS/AN7
Atribuição de Timer0 (PSA Bit) ............... ......................... 23 Seleção de Taxa Pino .... .................................................. .......... 13 Operações Ler-Modificar-
(PS2:PS0 Bits) ........ ......................... 23 Programador de dispositivo universal Gravar ........................ ....... 159 Arquivo de
PRO MATE II ............ ...... 169 Condições de reinicialização do contador de Registro ........................................ ......................... 16 Mapa de Arquivo de Registro
programa ........................................ ............... 149 Memória de (PIC16F873A/874A) .......... ................... 18 Mapa de Arquivo de Registro
Programa .............................. .............................. 15 Vetor de (PIC16F876A/877A) ...................... ....... 17 Registradores ADCON0 (Controle A/D
interrupção ............... .......................................... 15 0) ........................ ........ 127 ADCON1 (Controle A/D 1) ........................ ........ 128
Paginação ...... .................................................. ................ 30 Mapa e pilha de CCP1CON/CCP2CON (Controle CCP 1 e Controle CCP
memória do programa (PIC16F873A/874A) ....................... ................... 15 2) ....................... .............. 64 CMCON (Controle
Mapa e pilha de memória do programa (PIC16F876A/ Comparador) .............................. .. 135 CVRCON (Controle de Referência
877A) ................... ......................... 15 Redefinir de Tensão do Comparador) ........................................ .. 141 EECON1
Vetor ......................... ....................................... 15 Versão do (Controle EEPROM 1) ........................ ......... 34
Programa ificação ................................................. ........ 157 Pino de FSR ......................................... .................................... 31
Programação (VPP) ............................................. ......................... 8 INTCON .............. .................................................. ....... 24
Programação, Instruções do Dispositivo ......................... .......... 159 PSP. OPÇÃO_REG ......................................... .............23, 54 PCON (Controle de
Consulte Porta Escrava Paralela. Potência) ............................ .................. 29 PIE1 (Habilitar Interrupção
Periférica 1) ....................... 25 PIE2 (Peripheral Interrupt Enable
2) .......................... 27 PIR1 (Peripheral Interrupt Request 1) ....... ................
26 PIR2 (Solicitação de interrupção periférica 2) ....................... 28 RCSTA
Modulação de largura de pulso. Consulte Capturar/Comparar/PWM, Modo ( Status de recebimento e controle) ....................... 112 Função especial,
PWM. resumo ............... ................... 19 SSPCON (MSSP Controle 1, Modo
EMPURRE ................................................. ......................... 30 I2C ) ................... 82 SSPCON (Controle MSSP 1, Modo SPI) .......................
73 SSPCON2 (Controle 2 MSSP, Modo I2C ) ........ ........... 83 SSPSTAT
R (Status MSSP, Modo I2C ) ....................... 81 SSPSTAT (Status MSSP, Modo
Pino RA0/AN0 ............................................. ................... 8, 10 pinos RA1/ SPI) ................... ..... 72 Situação ....................................... .........................
AN1 ................... .......................................... 8, 10 RA2/AN2/ Pino VREF-/ 22 T1CON (Controle do Temporizador1) ............... ......................... 57
CVREF .................................. 8 , 10 pinos RA3/AN3/ T2CON (Controle do Temporizador2) ................ ......................... 61 Registro
VREF+ ............................................. ............. 8, 10 RA4/T0CKI/C1OUT TRISE .................... ......................................... 50 TXSTA (Transmissão de
Pino ............................ ......................... 8, 10 Pino RA5/AN4/SS/ Status e Controle) .... ......... 111
C2OUT ................. .............................. 8, 10 RAM. Consulte Memória de dados. Reinicializar .............................. ......................................... 143, 147
Reinicialização de Brown-out (BOR ). Consulte Reinicialização de Brown-out
Pino RB0/INT ............................................. ......................... 9, 11 pinos (BOR).
RB1 ........................ .................................................. 9, 11 pinos
RB2 ............................................. ................................... 9, 11 pinos RB3/
PGM .............. .................................................. . 9, 11 pinos
RB4 ............................................. .............................. 9, 11 pinos
RB5 ............... .................................................. ......... 9, 11 Pino RB6/
PGC ....................... .............................. 9, 11 Pino RB7/ Reinicialização MCLR. Veja MCLR.
PGD ............ .................................................. ... 9, 11 RC0/T1OSO/T1CKI Reinicialização ao ligar (POR). Consulte Reinicialização ao ligar (POR).
Pino ...................................... ........... 9, 12 pinos RC1/T1OSI/ Condições de reset para registro PCON ......................... 149 Condições de
CCP2 .............................. ......................... 9, 12 pinos RC2/ reset para contador de programa ................. ... 149 Condições de
CCP1 ....................... .......................................... 9, 12 RC3/SCK/SCL Reinicialização para Registro de Status ....................... 149 Reinicialização
Alfinete ................................................. .... .... 9, 12 pinos RC4/SDI/ de WDT. Consulte Temporizador de cão de guarda (WDT).
SDA ..................................... ......................... 9, 12 pinos RC5/ Requisitos de Reset, Watchdog Timer, Temporizador de Inicialização
SDO ...................... .......................................... 9, 12 RC6/TX/ Pino do Oscilador, Temporizador de Inicialização e Reinicialização
CK................................................ .............. 9, 12 pinos RC7/RX/ de Brown-out ....................... ......................... 184 Histórico de
DT .............. ......................... 9, 12 Registro revisões .................. ............................................. 219
RCREG .......... .................................................. .... 19 Registro
RCSTA ............................................. ......................... 19 ADICIONAR
S
Bit .................................. ......................... 112 CREN SCI. Veja USART.
Bit ......... .................................................. ....... 112 FERR SCK .................................................. ................................... 71
Bit ........................................ ......................... 112 OERR SDI .............. .................................................. ...................... 71
Bit ......................... ......................................... 112 RX9 SDO .............................. .................................................. ...... 71 Relógio Serial,
Bit ... .................................................. ............... 112 RX9D SCK ........................................ ....................... 71 Interface de comunicação serial.
Bit .............................. ................................... 112 SPEN Veja USART.
Bit ... .................................................. ..... 111, 112 SREN Entrada de dados seriais, SDI ............................................. ............... 71 Saída de
Bit ........................................ ......................... 112 Pino RD0/ dados seriais, SDO .............................. ......................... 71 Interface Periférica
PSP0 ................... ......................................... 13 Pino RD1/ Serial. Veja SPI.
PSP1 ............................................. ......................... 13 pinos RD2/ Sincronização de Seleção de Escravo .................................. 77 Seleção de Escravo ,
PSP2 ....................... ............................................. 13 pinos RD3/ SS ................................................. ......... 71 Dormir .................................. .........................
PSP3 .................................................. ................... 13 pinos RD4/ 143, 147, 156 Simulador de Software (MPLAB SIM) ...... .................................. 168
PSP4 ................... ......................................... 13 pinos RD5/ Simulador de Software (MPLAB SIM30) .............. ......... 168 Registro
PSP5 .... .................................................. .............. 13 pinos RD6/ SPBRG .............................. ......................... 20 Recursos especiais da
PSP6 ................... ......................... 13 pinos RD7/ CPU .......... ......................... 143
PSP7 ........ .................................................. .......... 13

ÿ 2003 Microchip Technology Inc. DS39582B-página 225


Machine Translated by Google

PIC16F87XA
Registros de funções especiais ............................................. . 19 Temporizador0 ................................................. ......................... 53
Registros de Função Especial (SFRs) .................................. 19 Registros Associados ............... ......................... 55 Seleção de
Velocidade, Operação .. .................................................. .............. 1 Borda da Fonte de Relógio (Bit T0SE) ........ ............... 23 Seleção
Modo SPI .................................... ......................... 71, 77 Registros da fonte do relógio (Bit T0CS) ....................... ...... 23 Relógio
Associados .......... .......................................79 Compatibilidade do Externo ......................................... ................... 54
modo de barramento ......... ......................... 79 Efeitos de uma Interromper .................................... ....................................... 53
reinicialização ....... ......................................... 79 Habilitando E/S Habilitar estouro (Bit TMR0IE) ... ......................... 24 Sinalizador
SPI ............................................. ........... 75 Modo de estouro (Bit TMR0IF) ........... .......................24, 154 Interrupção
Mestre .................................. .............................. 76 Conexão de estouro ........................ ......................... 154 Pré-
Mestre/Escravo ............... ....................... 75 Relógio escalonador .................. ................................................. 54
Serial ........................ ......................................... 71 Dados seriais T0CKI .................................................. ....................... 54 Timer0 e
em ..... .................................................. ...... 71 Saída de dados Timer1 Requisitos de relógio externo ........... 185
seriais ........................................ ......... .......... 71 Seleção do Timer1 ....... .................................................. ......................... 57 Re
Escravo .................................. ......................... 71 Sincronização Associado registros .................................................. 60 Modo
de Seleção de Escravo .................. ......... 77 Operação de Contador Assíncrono .................................. 59 Lendo e Gravando
suspensão .............................. ......................... 79 Relógio em ..... ......................... 59 Operação do
SPI .................. .............................................. 76 Conexão Contador .................. ......................................... 58 Operação no
Típica .................................................. ...75 Requisitos do Modo Modo Temporizador ...... ....................................... 58
SPI ............................................. .... 190 Oscilador ........... .................................................. ......... 59 Seleção
SS .................................................... ............................................. 71 SSP do capacitor ........................................ .... 59 Pré-
escalonador .................................................. ......................... 60
Conexão SPI Mestre/Escravo .................................. 75 Registro Reinicialização dos Registros do Timer1 ....................... ..............
SSPADD ...... .................................................. ...... 20 Registro 60 Reinicializando o Temporizador1 Usando uma Saída de Disparo
SSPBUF ........................................ ......................... 19 Registro CCP ......... 59 Modo de Contador Sincronizado ............... .......................
SSPCON .......................... .................................... 19 Registro 58 TMR1H .............................. ......................................... 59
SSPCON2 ........... .................................................. 20 TMR1L .... .................................................. ......... 59
SSPIF ................................................. ........................ 26 Temporizador2 .............................. ....................................... ......... 61
SSPOV ................ .................................................. ........... 101 Registro Registros Associados .................................. .............. 62
SSPSTAT .................................. ......................... 20 bits R/ Saída .................................... ....................................... 62 Pós-
W ......................... ......................................... 84, 85 escalonador .......... .................................................. ...... 61 Pré-
Pilha .. .................................................. .............................. 30 escalonador .............................................. ......................... 61 Pré-
Transbordamento .................. .................................................. 30 escalonador e Pós-escalonador ....................... ....................... 62
Subfluxo .................................................... ................... 30 Diagramas de
Registro de Status temporização Conversão A/D ............................................. ............
Bit C ................................................. ......................... 22 bits 195 Sequência de
DC .................. .................................................. ... 22 bits Reconhecimento ................................. ...... ..........................................
IRP ............................................. ......................... 22 PD 116 Recepção Assíncrona .... ....................................... 118
Bit ................... ............................................. 22, 147 RP1 :RP0 Recepção Assíncrona com Byte de Endereço
Bits ................................................. .............. 22 bits Primeiro ...... ......................... 120 Recepção Assíncrona com
para ................................. ................... 22, 147 Z Detecção de Endereço ....... .................................. Gerador de 120
Bit .............. .................................................. .............. 22 Baud Rate com Arbitragem de Relógio .. ............ 98 BRG
Recepção mestre síncrona Reinicialização Devido à Arbitragem SDA Durante a Condição de
Registros Associados ....................................... 123 Partida ....................... ......................... 107 Reinicialização
Registros Associados de Transmissão de Brown-out ........................ .............................. 184 Colisão de
Mestre Síncrona ............................................. ..122 Interrupção de Barramento Durante uma Condição de Partida Repetida (Caso
porta serial síncrona ...................................... 26 Recepção síncrona de 1) ........ .............. 108 Colisão de Barramento Durante
escravo Condição de Partida Repetida (Caso 2) .............. ...... ...............
Registros Associados ............................................. 125 Registros 108 Colisão de Barramento Durante a Condição de Partida (SCL
Associados de Transmissão Síncrona de = 0) ........................ ......................... 107 Colisão de
Escravos ............................................. ..125 barramento durante a condição de partida (somente
SDA) ....... ......................................... 106 Barramento
T Colisão Durante Condição de Parada (Caso
T1CKPS0 Bit .............................................. .......................57 T1CKPS1 1) ............................................. ......... 109 Colisão de
Bit ......................... ............................................. 57 Registro Barramento Durante a Condição de Parada (Caso
T1CON .. .................................................. .............. 19 T1OSCEN 2) ....................... .................................... 109 Colisão de
Bit ................................... ................................... 57 T1SYNC Barramento para Transmissão e Reconhecimento ....... ... 105
Bit ................... .................................................. ..........57 T2CKPS0 Capturar/Comparar/PWM (CCP1 e CCP2) .... 186 CLKO e
Bit .................................. .........................61 T2CKPS1 E/S ................... ......................... 183 Sincronização do
Bit .............. .................................................. ......61 Registro Relógio ......... ....................................... 91 Relógio
T2CON ........................................ ......................... 19 Externo ......... .................................................. 182 Primeiro Bit de
TAD ........................ .................................................. ......... 131 Sequência Partida ............................................. ......... 99
de tempo limite .................................. ....................... 148

DS39582B-página 226 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
Dados do barramento I 2C ............................................. .............. 191 I Registo TRISB ........................................................ .......... 20 Registro
2C Bits de partida/parada do barramento ........................... ......... 190 I TRISC .................................. ......................... 20 Registro
2C Modo Mestre (Recepção, Endereço de 7 bits) ........... 103 I 2C Modo TRISD .......... .................................................. ...... 20 Registro
Mestre (Transmissão, 7 ou Endereço de 10 bits) ....................................... TRISE ......................................... ......................... 20 IBF
102 I 2C Modo Escravo (Transmissão, Endereço de 10 bits) ........ Bit ......................... .................................................. 50 Bit
89 I 2C Modo Escravo (Transmissão, Endereço de 7 bits) ........ 87 I 2C IBOV ............................................. ......................... 50 OBF
Modo Escravo com SEN = 1 (Recepção, Endereço de 10 Bit ......................... ......................................... 50 PSPMODE
bits) ............................................. ......... 93 I 2C Modo Escravo com SEN Bit .. ......................................... 48, 49, 50, 51 Registro
= 0 (Recepção, Endereço de 10 bits) ....................... .......................... TXREG .................................................. .............. 19 Registro
88 I 2C Modo Escravo com SEN = 0 (Recepção, Endereço de 7 TXSTA .................................... ......................... 20 BRGH
bits) ...... .............................................. 86 I 2C Modo Escravo com Bit ............... .................................................. 111 Bit
SEN = 1 (Recepção, Endereço de 7 bits) ................................... ......... 92 CSRC ............................................. .......... 111 SYNC
Porta Escrava Paralela (somente PIC16F874A/877A) .......... 187 Bit ....... .................................................. ........ 111 TRMT
Porta Escrava Paralela (PSP) Leitura ..... ........................ .... 52 Gravação Bit ........................................ ......................... 111 TX9
da Porta Escrava Paralela (PSP) ..................... 52 Condição de Bit ......................... .................................................. 111 Bit
Início de Repetição . .................................................. 100 Reinicialização, TX9D ............................................. .......... 111 TXEN
Temporizador Watchdog, Temporizador de Inicialização e Temporizador Bit .................................. ....................................... 111
de Inicialização ........................................ 184
DENTRO

USART .................................................... ......................... 111 Ativação de


Detecção de Endereço (Bit ADDEN) .............. ......... 112 Modo
Sequência de Endereço de Chamada Geral do Modo Escravo Assíncrono ........................................ .......... 115 Recepção Assíncrona
(Modo de Endereço de 7 ou 10 bits) .............................. 94 (Modo de 9 bits) ....................... 119 Recepção Assíncrona com Detecção
Sincronização do Escravo ...... ......................................... 77 Tempo de de Endereço.
subida lenta (MCLR vinculado ao VDD via Rede Consulte Recepção assíncrona (modo de 9 bits).
RC) .............................................. ...... 152 Modo Mestre SPI (CKE Receptor Assíncrono .................................. 117 Recepção
= 0, SMP = 0) ....................... 188 Modo Mestre SPI (CKE = 1, SMP = Assíncrona .. ....................................... 118 Transmissor
1) ................... 188 Modo SPI (Modo Mestre) ................... ....................... Assíncrono ........ .............................. 115 Gerador de taxa de transmissão
76 Modo SPI (Modo Escravo com CKE = 0) ................. ...... 78 Modo SPI (BRG) ............ ......................... 113 Fórmula da taxa de
(Modo Escravo com CKE = 1) ....................... 78 Modo SPI Escravo (CKE transmissão ....................... .......... 113 Taxas de Baud, Modo

= 0) . ......................... 189 Modo Escravo SPI (CKE = 1) .... ......................... Assíncrono (BRGH = 0) ..................... ......................... 114 Taxas
189 Modo de Recepção ou Transmissão da Condição de Parada ......... ..... de Baud, Modo Assíncrono (BRGH =
104 Recepção Síncrona (Modo Mestre, SREN) ................................... .. 1) .............. ......................... 114 Seleção de alta taxa de
124 Transmissão Síncrona ....................................... 122 Transmissão transmissão (Bit BRGH) ......... ........ 111
Síncrona (Através de TXEN) .......... 122 Sequência de tempo limite na Amostragem ........................................ .......... 113 Seleção da
inicialização (MCLR não T ligado ao VDD) fonte do relógio (bit CSRC) ....................... ...... 111 Habilitação de
Recepção Contínua (Bit CREN) ....................... 112 Erro de Framing (Bit
FERR) ........... ......................... 112 Seleção de Modo (Bit
SINC) .............. ......................... 111 Erro de saturação (bit
OERR) ............... ......................... 112 Receber Dados, 9 º Bit (RX9D
Caso 1 ................................................ .............. 152 Caso Bit) .................................. 112 Ativação de recebimento, 9 bits (RX9
2 .................................... ......................... 152 Bit) .... .......................... 112 Habilitar Porta Serial (SPEN
Sequência de tempo limite na inicialização (MCLR vinculado Bit) ............... ...........111, 112 Habilitação de Recepção Simples (Bit
para VDD via Rede RC) ................................... 151 Timer0 e SREN) .......................... 112 Mestre Síncrono Modo ....................................
Timer1 Relógio Externo ... ....................... 185 Recepção Síncrona USART 121 Recepção Master Síncrona .... ......................... 123 Transmissão
(Mestre/Escravo) ....................... ......................... 193 Transmissão Mestre Síncrona ........................ ... 121 Modo Escravo
Síncrona USART (Mestre/Escravo) ......... ......................................... Síncrono ................................... 124 Escravo Síncrono
193 Despertar da suspensão via interrupção . ......................... 157 Recepção .................................. 125 Transmissão Síncrona do
Simbologia do parâmetro de temporização ................... ......................... Escravo ............ ......................... 124 Dados de Transmissão, 9º Bit
181 Registro TMR0 ........................ .................................... 19 TMR1CS (TX9D) ....................... ............... 111 Habilitação de Transmissão (Bit
Bit .... .................................................. ......... 57 Registro TXEN) ....................... ........ 111 Habilitação de Transmissão, 9 bits (TX9
TMR1H .............................. ......................... 19 Registro Bit) .............................. 111 Transmitir Status do Registro de Deslocamento
TMR1L .......... .................................................. .. 19 Bit (Bit TRMT) .............. 111 Requisitos de Recebimento Síncrono USART ....
TMR1ON ............................................. ......................... 57 Registro 193
TMR2 ....................... ......................................... 19 TMR2ON
Bit . ............... .................................................. ..... 61 Registro
TMRO .......................................... ......................... 21 TOUTPS0 DENTRO

Bit ........................ ......................................... 61 TOUTPS1


Bit . .................................................. ................... 61 TOUTPS2 Pino VDD ................................................. ......................... 9, 13 Especificações
Bit ................................... ......................... 61 TOUTPS3 de Referência de Tensão ....................... ................... 180 pinos
Bit ....... .................................................. ......... 61 Registo VSS ................................... .............................................. 9, 13
TRISA .................................. .............................. 20

ÿ 2003 Microchip Technology Inc. DS39582B-página 227


Machine Translated by Google

PIC16F87XA
Dentro

Acordar do sono ............................................. ... 143, 156


Interrupções ................................... ............... 149, 150
Reinicialização MCLR .............................. ......................... 150
WDT Reinicialização ................ ..............................................
150 Acordar- up Usando interrupções .............................................
156 Resumo do Registro do Temporizador do
Watchdog ............................................. .......155 Temporizador
de Watchdog (WDT) ..................................... ...... 143, 155 Habilitar
(Bit WDTE) ................................... ...............155 Pós-
escalonador. Veja Postscaler, WDT.
Considerações de Programação .................................. 155
Oscilador RC .......... .................................................. 155
Período de tempo limite ............................................. ...........
155 WDT Reinicialização, Operação Normal ................ 147,
149, 150 WDT Reinicialização, Suspensão ........ ..........................
147, 149, 150 WCOL ................. .............................................. 99,
101 , 104 Sinalizador de Status
WCOL ............................................. ................ 99 WWW, Suporte On-Line ....................... ....................... 4

DS39582B-página 228 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
SUPORTE ONLINE INFORMAÇÕES DOS SISTEMAS E
ATUALIZAR LINHA DE ATENDIMENTO
Microchip fornece suporte on-line no Microchip
Site da World Wide Web.
A Linha de Informações e Atualização de Sistemas fornece
O site é usado pela Microchip como meio de fazer usuários do sistema uma lista das versões mais recentes de todos os
arquivos e informações facilmente disponíveis para os clientes. Para Produtos de software de sistemas de desenvolvimento da Microchip.
visualizar o site, o usuário deve ter acesso à Internet Além disso, esta linha fornece informações sobre como os clientes
e um navegador da web, como Netscape® ou Microsoft® pode receber os kits de atualização mais atuais. A linha direta
Explorador de Internet. Os arquivos também estão disponíveis para FTP Os números são:
download do nosso site FTP.
1-800-755-2345 para os EUA e a maior parte do Canadá, e

1-480-792-7302 para o resto do mundo.


Conectando-se à Internet do Microchip
Local na rede Internet 042003

O site da Microchip está disponível no seguinte


URL:

www.microchip.com

O site de transferência de arquivos está disponível usando um FTP


serviço para se conectar a:

ftp://ftp.microchip.com

O site e o site de transferência de arquivos fornecem uma variedade de


Serviços. Os usuários podem baixar arquivos para as últimas
Ferramentas de Desenvolvimento, Folhas de Dados, Notas de Aplicação,
Guias do usuário, artigos e programas de exemplo. Uma variedade de
informações comerciais específicas da Microchip também é
disponíveis, incluindo listas de escritórios de vendas da Microchip,
distribuidores e representantes de fábrica. Outros dados
disponível para consideração é:

• Últimos Comunicados de Imprensa da Microchip

• Seção de suporte técnico com perguntas frequentes


Perguntas

• Dicas de design
• Errata do Dispositivo

• Ofertas de trabalho
• Listagem de Membros do Programa de Consultores de Microchip
• Links para outros sites úteis relacionados a
Produtos de microchip

• Conferências de produtos, sistemas de desenvolvimento, informações


técnicas e muito mais

• Listagem de seminários e eventos

ÿ 2003 Microchip Technology Inc. DS39582B-página 229


Machine Translated by Google

PIC16F87XA
RESPOSTA DO LEITOR
É nossa intenção fornecer a você a melhor documentação possível para garantir o uso bem-sucedido do seu produto Microchip. Se você
deseja fornecer seus comentários sobre organização, clareza, assunto e maneiras pelas quais nossa documentação
pode atendê-lo melhor, envie seus comentários por FAX para o Gerente de Publicações Técnicas em (480) 792-4150.

Liste as informações a seguir e use este esboço para nos fornecer seus comentários sobre este documento.

Para:
Gerente de Publicações Técnicas Total de páginas enviadas ________
RE: Resposta do Leitor

De nome

Companhia
Endereço

Cidade / Estado / CEP / País


- -
Telefone: (_______) _________ _________ FAX: (______) _________ _________
Aplicação (opcional):

Você gostaria de uma resposta? SN

Dispositivo: PIC16F87XA Número da Literatura: DS39582B

Perguntas:

1. Quais são as melhores características deste documento?

2. Como este documento atende às suas necessidades de desenvolvimento de hardware e software?

3. Você considera a organização deste documento fácil de seguir? Se não, por quê?

4. Que acréscimos ao documento você acha que melhorariam a estrutura e o assunto?

5. Que exclusões do documento podem ser feitas sem afetar a utilidade geral?

6. Existe alguma informação incorreta ou enganosa (o quê e onde)?

7. Como você melhoraria este documento?

DS39582B-página 230 ÿ 2003 Microchip Technology Inc.


Machine Translated by Google

PIC16F87XA
SISTEMA DE IDENTIFICAÇÃO DE PRODUTO PIC16F87XA

Para encomendar ou obter informações, por exemplo, sobre preços ou entrega, consulte a fábrica ou o escritório de vendas indicado.

PARTE NO. X /XX XXX


Exemplos:
Dispositivo Padrão do pacote de temperatura a) PIC16F873A-I/P 301 = Temp. Industrial, PDIP
Variar pacote, limites normais de VDD , padrão QTP #301.
b) PIC16LF876A-I/SO = Temp. Industrial, SOIC
pacote, limites estendidos de VDD .

Dispositivo
c) PIC16F877A-I/P = Temp. Industrial, pacote PDIP,
PIC16F87XA(1), PIC16F87XAT(2); Faixa VDD 4,0V a 5,5V 10 MHz, limites normais de VDD .
PIC16LF87XA(1), PIC16LF87XAT(2); Faixa VDD 2,0V a 5,5V

Faixa de temperatura I = -40°C a +85°C (Industrial)

Pacote ML = QFN (Quadro de chumbo metálico)


PT = TQFP (Thin Quad Flatpack)
SO = SO
SP = Plástico Magro DIP
P = PDIP
eu = CLP
S = SSOP Nota 1: F = Flash CMOS
LF = Flash CMOS de baixa potência
2: T = em fita e bobina - SOIC, PLCC,
Apenas pacotes TQFP

ÿ 2003 Microchip Technology Inc. DS39582B-página 231


Machine Translated by Google

VENDAS E SERVIÇOS MUNDIAIS

AMERICAS ÁSIA-PACÍFICO Coreia


Austrália 168-1, Youngbo Bldg. 3 andares
Corporate Office
2355 West Chandler Blvd. Suíte 22, Rua Rawson 41
Samsung-Dong, Kangnam-Ku
Chandler, AZ 85224-6199 Tel:
Seul, Coréia 135-882 Tel:
Epping 2121, NSW
480-792-7200 Fax: 480-792-7277 Austrália
82-2-554-7200 Fax: 82-2-558-5932 ou
82-2-558-5934 Cingapura
Suporte Técnico: 480-792-7627 Telefone: 61-2-9868-6733
Endereço Web: http://www.microchip.com Fax: 61-2-9868-6755
200 Middle Road
Atlanta 3780 Mansell Road, Suite 130 Alpharetta,
China - Pequim #07-02 Prime Center
GA 30022 Tel: 770-640-0034 Fax: 770-640-0307 Unidade
Singapore, 188980 Tel:
915 em Hai Wan Tai Bldg. 65-6334-8870 Fax: 65-6334-8850 Taiwan
No. 6 Chaoyangmen Beidajie Beijing,
Kaohsiung Branch 30F - 1 No. 8 Min Chuan 2nd
100027, No. China Tel: 86-10-85282100
Fax: 86-10-85282104 China - Road Kaohsiung 806, Taiwan Tel: 886-7-536-4818
Chengdu Rm. 2401-2402, 24º andar, Fax: 886-7-536-4803 Taiwan Taiwan Branch
Boston 11F-3, No. 207 Tung Hua North Road Taipei, 105,
Torre Financeira Ming Xing No. 88
2 Lan Drive, Suíte 120 Taiwan Tel: 886-2-2717-7175 Fax: 886-2-2545-0139
TIDU Street Chengdu 610016, China
Westford, MA 01886
Telefone: 978-692-3848 Tel: 86-28-86766200 Fax:
86-28-86766599 China - Unidade
Fax: 978-692-3821
Fuzhou 28F, World Trade Plaza No.
Chicago 71 Wusi Road Fuzhou 350001 , China
333 Pierce Road, Suíte 180 Tel: 86-591-7503506 Fax:
Itasca, IL 60143 86-591-7503521 China - Hong Kong
Telefone: 630-285-0071
SAR Unit 901-6, Torre 2, Metroplaza
Fax: 630-285-0075
223 Hing Fong Road Kwai Fong, NT,
Dallas Hong Kong Tel: 852-2401-1200 Fax: EUROPA
4570 Westgrove Drive, Suíte 160 852-2401-3431 China - Xangai Sala
Áustria
Addison, TX 75001 701, Bldg. B Praça Internacional do
Telefone: 972-818-7423 Durisolstrasse 2
Extremo Oriente No. 317 Xian Xia A-4600 Wels
Fax: 972-818-2924
Road Xangai, 200051 Tel: Áustria Tel:
Detroit 86-21-6275-5700 Fax: 86-21-6275-5060 43-7242-2244-399 Fax:
Prédio de Escritórios Tri-Atria China - Shenzhen Rm. 1812, 18/F, 43-7242-2244-393
32255 Northwestern Highway, Suíte 190 Edifício A, United Plaza No. 5022 Binhe
Dinamarca Regus
Farmington Hills, MI 48334 Road, Futian District Shenzhen 518033,
Business Center Lautrup
Telefone: 248-538-2250 China Tel: 86-755-82901380 Fax: hoj 1-3 Ballerup DK-2750
Fax: 248-538-2260 86-755-8295-1393 China - Shunde Dinamarca Tel: 45-4420-9895
Room 401, Hongjian Building No. 2 Fax: 45-4420-9910 França Parc d'Activite
Kokomo
Fengxiangnan Road, Ronggui Town
2767 S. Albright Road du Moulin de Massy 43 Rue du Saule
Shunde City, Guangdong 528303, China
Kokomo, IN 46902 Tel: Trapu Batiment A - ler Etage 91300
Tel: 86-765-8395507 Fax: 86-765-8395571
765-864-8360 Fax: Massy, France Tel: 33-1-69-53-63-20
China - Qingdao Rm. B505A, Fullhope
765-864-8387 Fax: 33-1-69 -30 -90-79 Alemanha
Plaza, No. 12 Hong Kong Central Rd.
Steinheilstrasse 10 D-85737 Ismaning,
Os anjos Alemanha Tel: 49-89-627-144-0 Fax:
18201 Por Karman, Suíte 1090
49-89-627-144-44 Itália Via Quasimodo,
Irvine, CA 92612
Telefone: 949-263-1888 12 20025 Legnano (MI)
Fax: 949-263-1338

Phoenix
2355 West Chandler Blvd.
Chandler, AZ 85224-6199 Tel:
480-792-7966 Fax: 480-792-4338

São José Milão, Itália


2107 North First Street, Suíte 590 Tel: 39-0331-742611
São José, CA 95131 Fax: 39-0331-466781
Telefone: 408-436-7950 Qingdao 266071, China Tel: Holanda PA De
Fax: 408-436-7955 86-532-5027355 Fax: 86-532-5027205 Índia Divyasree Biesbosch 14 NL-5152
Chambers 1 Andar, Ala A (A3/A4) SC Drunen, Holanda Tel:
Toronto
6285 Northam Drive, Suíte 108
31-416-690399 Fax: 31-416-690340
Reino Unido
Mississauga, Ontário L4V 1X5, Canadá
Telefone: 905-673-0699 No. 11, O'Shaugnessey Road
Fax: 905-673-6509 Bangalore, 560 025, Índia Tel: Estrada Eskdale 505
91-80-2290061 Fax: 91-80-2290062 Japão Benex Triângulo Winnersh
S-1 6F 3-18-20, Shinyokohama Kohoku-Ku, Wokingham
Yokohama-shi Kanagawa, 222-0033, Japão Tel: Berkshire, Inglaterra RG41 5TU
81-45-471-6166 Fax: 81-45-471-6122 Telefone: 44-118-921-5869
Fax: 44-118-921-5820

28/07/03

DS39582B-página 232 ÿ 2003 Microchip Technology Inc.

Você também pode gostar