Escolar Documentos
Profissional Documentos
Cultura Documentos
PIC16F87XA
Ficha de dados
•
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.
PIC16F87XA
Microcontroladores Flash aprimorados de 28/40/44 pinos
• 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
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
PIC16F87XA
Diagramas de pinos
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
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/
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
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/
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
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.
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.
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.
Reinicializações (e atrasos) POR, BOR POR, BOR POR, BOR POR, BOR
(PWRT, OST) (PWRT, OST) (PWRT, OST) (PWRT, OST)
Interrupções 14 15 14 15
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
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
Síncrono Tensão
Dados EEPROM PCC1,2 USAR Comparador
Porta serial Referência
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
Em circuito RD2/PSP2
Depurador RD3/PSP3
RD4/PSP4
Baixa voltagem
Programação RD5/PSP5
RD6/PSP6
RD7/PSP7
PORTÃO
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
PIC16F87XA
TABELA 1-2: DESCRIÇÃO DA PINAGEM PIC16F873A/876A
OSC1 / CLKI 9 6
ST/CMOS(3) Cristal oscilador ou entrada de relógio externo.
OSC1 EU
Entrada Master Clear (Reset). Este pino é um reset ativo baixo para o dispositivo.
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
Entrada analógica 2.
AN2 EU
Entrada analógica 3.
VREF+ EU
RA4/T0CKI/C1OUT 6 3 ST
RA4 E/S Digital I/O – Dreno aberto quando configurado como saída.
T0CKI EU
RA5/AN4/SS/C2OUT 7 4 TTL
RA5 E/S E/S digitais.
AN4 EU
Entrada analógica 4.
SS EU
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
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
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
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
CLKI EU
Entrada de fonte de clock externa. Sempre associado à função de
pinos OSC1 (ver pinos OSC1/CLKI, OSC2/CLKO).
Entrada Master Clear (Reset). Este pino é um reset ativo baixo para
o dispositivo.
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
RA3/AN3/VREF+ 5 6 22 22 TTL
RA3 E/S E/S digitais.
AN3 EU
Entrada analógica 3.
VREF+ EU
RA4/T0CKI/C1OUT 6 7 23 23 ST
RA4 E/S Digital I/O – Dreno aberto quando configurado como saída.
T0CKI EU
RA5/AN4/SS/C2OUT 7 8 24 24 TTL
RA5 E/S E/S digitais.
AN4 EU
Entrada analógica 4.
SS EU
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
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
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
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
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
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.
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
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.
PIC16F87XA
NOTAS:
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.
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
17FFh
18:00h
Página 3
1FFFh
1FFFh
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.
PIC16F87XA
FIGURA 2-3: MAPA DE ARQUIVO DE REGISTRO PIC16F876A/877A
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
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
PIC16F87XA
FIGURA 2-4: MAPA DE ARQUIVO DE REGISTRO PIC16F873A/874A
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
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
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.
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
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.
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
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.
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 —
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.
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.
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
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
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.
pedaço 7 bit 0
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
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.
pedaço 7 bit 0
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
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.
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)
Nota 1: PSPIE é reservado em dispositivos PIC16F873A/876A; sempre mantenha este bit claro.
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
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.
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)
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
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.
pedaço 7 bit 0
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
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.
pedaço 7 bit 0
1 = Ocorreu uma colisão de barramento no SSP quando configurado para o modo I2C Master
0 = Nenhuma colisão de ônibus ocorreu
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
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).
pedaço 7 bit 0
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
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
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
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.
00 01 10 11
Dados
Memória(1)
PIC16F87XA
NOTAS:
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.
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
pedaço 7 bit 0
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
PIC16F87XA
3.3 Leitura de dados de memória EEPROM Os passos para escrever na memória de dados EEPROM são:
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
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
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.
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
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,
14 14 14 14
Memória do programa
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.
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.
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 ---- ----
0Dh PIR2 — CMIF — EEIF BCLIF — — CCP2IF -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.
PIC16F87XA
NOTAS:
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
Q D
Os comparadores estão desligados (digitais)
Estado.
PIC16F87XA
FIGURA 4-2: DIAGRAMA DE BLOCO DO PIN RA4/T0CKI
Trava de dados
Barramento de dados 1
DQ
WR TRISA Schmitt
CKQ
Acionar
Entrada
Amortecedor
RD TRISA
QD
DENTRO
DENTRO
RD PORTA
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
PIC16F87XA
TABELA 4-1: FUNÇÕES DA 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.
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
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
de entrada (de RB7:RB4) são comparados com o valor antigo travado na No modo de programação serial
PIC16F87XA
TABELA 4-3: FUNÇÕES DA PORTA
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.
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.
PIC16F87XA
4.3 PORTC e o Registro TRISC FIGURA 4-7: DIAGRAMA DE BLOCO DA PORTA
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)
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
PIC16F87XA
TABELA 4-5: FUNÇÕES PORTC
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.
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
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.
RD
TRIS
Q D
DENTRO
DENTRO
Porta RD
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.
buffers de entrada são Schmitt Triggers quando em modo I/O e buffers TTL quando em modo Parallel Slave Port.
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.
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
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
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.
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
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
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.
pedaço 7 bit 0
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 = Ocorreu uma escrita quando uma palavra inserida anteriormente não foi lida (deve ser apagada em
Programas)
0 = Não ocorreu estouro
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
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
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
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
CS
WR
RD
PORTE<7:0>
IBF
OBF
PSPIF
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
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.
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
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
PSA
0 1
Bit de habilitação WDT
MUX PSA
WDT
Tempo esgotado
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.
pedaço 7 bit 0
pedaço 7 RBPU
bocado 6 INTEG
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.
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.
PIC16F87XA
NOTAS:
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).
pedaço 7 bit 0
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:
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
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.
T1CKI
(Padrão Alto)
T1CKI
(Baixo padrão)
6.3 Operação do Timer1 no Modo de Contador Se T1SYNC for desenergizado, a entrada do relógio externo será
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.
PIC16F87XA
6.4 Operação do Timer1 no Modo TABELA 6-1: SELEÇÃO DE CAPACITOR PARA
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.
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.
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.
PIC16F87XA
7.0 MÓDULO DO TEMPORIZADOR 2 O registro 7-1 mostra o registro de controle do Timer2.
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
pedaço 7 bit 0
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
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
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
12h T2CON — TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 -000 0000
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.
PIC16F87XA
8.0 MÓDULOS DE CAPTURA/COMPARAÇÃO/PWM Módulo CCP2:
• 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
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
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
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
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
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.
e Capturar
Permitir
Detecção de borda
TMR1H TMR1L
CCP1CON<3:0>
Perguntas
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
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
EQUAÇÃO 8-1:
PIC16F87XA
8.3.3 CONFIGURAÇÃO PARA OPERAÇÃO PWM
Frequência PWM 1,22 kHz 4,88 kHz 19,53 kHz 78,12 kHz 156,3 kHz 208,3 kHz
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
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
17h CCP1CON — — CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 --00 0000 --00 0000
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.
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
8 canais TORTA1 PSPIE(1) ADIE RCIE ESSA SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000
87h Registro de Direção de Dados TRISC PORTC 1111 1111 1111 1111
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
17h CCP1CON — — CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 --00 0000 --00 0000
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.
PIC16F87XA
NOTAS:
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
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 .
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:
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
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
pedaço 7 bit 0
parada Usado somente no modo I2C . Este bit é apagado quando o módulo MSSP é desabilitado, SSPEN é apagado.
parte 3 S: bit inicial
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
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
pedaço 7 bit 0
1 = O registrador SSPBUF é escrito enquanto ainda está transmitindo a palavra anterior. (Devemos ser
apagado no software.)
0 = Sem colisão
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.
Nota: Quando habilitados, estes pinos devem estar devidamente configurados como entrada ou saída.
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
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
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
SDO SDI
SDI SDO
Registro de deslocamento Registro de deslocamento
(SSPSR) (SSPSR)
Relógio de série
SCK SCK
PROCESSADOR 1 PROCESSADOR 2
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)
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
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.
SS
SCK
(CKP = 0
CKE = 0)
SCK
(CKP = 1
CKE = 0)
Escrever para
SSPBUF
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
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
SDI
(ensino médio = 0)
pedaço 7 bit 0
Entrada
Amostra
(ensino médio = 0)
SSPIF
Interromper
Bandeira
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
SDI
(ensino médio = 0)
pedaço 7 bit 0
Entrada
Amostra
(ensino médio = 0)
SSPIF
Interromper
Bandeira
após Q2ÿ
SSPSR para
SSPBUF
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.
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
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
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
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
pedaço 7 bit 0
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 Mestre:
Reservado.
No modo Escravo:
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.
No modo de transmissã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
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
pedaço 7 bit 0
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
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:
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.
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.
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.
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
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
pedaço 7 bit 0
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
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).
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.
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.
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.
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).
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
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
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.
SCL
1 2 34 56 7891 2 34 56 789
S
SSPIF
BF (SSPSTAT<0>)
Limpo no software
SSPBUF é lido
SSPOV (SSPCON<6>) '0'
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.
interno SSPM3:SSPM0
Barramento de dados SPADD<6:0>
Ler Escreva
SSPBUF Baud
Avaliar
Gerador
SDA Mudança
MSb LSb
recebimento
Ativar
(segurar
relógio)
fonte
do
a
Reconhecer Arbitragem
Detecção
Relógio/
WCOL
de
Gerar
SCL
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.
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.
SSPM3:SSPM0 SPADD<6:0>
SCL Ao controle
FSCL
FCY FCY*2 Valor BRG
(2 Rollovers de BRG)
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.
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
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
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.
1º Bit 2º Bit
SDA
TBRG
SCL
TBRG
S
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.
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
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
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.
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.
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
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
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.
SDA ACK
P
TBRG TBRG TBRG
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.
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
BCLIF
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.
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Á
SSPIF
PIC16F87XA
FIGURA 9-27: COLISÃO DE ÔNIBUS DURANTE CONDIÇÃO DE PARTIDA (SCL = 0)
SDA = 0, SCL = 1
TBRG TBRG
SDA
BCLIF
Interrupção apagada
em software
S
'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
SCL
S
SCL caiu após BRG
tempo esgotado
ESTÁ
Defina SEN, habilite Iniciar
sequência se SDA = 1, SCL = 1
BCLIF '0'
SSPIF
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
RSEN
BCLIF
Limpo no software
S '0'
SSPIF '0'
TBRG TBRG
SDA
SCL
Interrupção limpa
no software
RSEN
S '0'
SSPIF
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).
CANETA
BCLIF
P '0'
SSPIF '0'
SDA
CANETA
BCLIF
P '0'
SSPIF '0'
PIC16F87XA
NOTAS:
PIC16F87XA
10.0 UNIVERSAL ENDEREÇAVEL A USART pode ser configurada nos seguintes modos:
pedaço 7 bit 0
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 = Transmissão habilitada
0 = Transmissão desabilitada
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.
1 = TSR vazio
0 = TSR cheio
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
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
pedaço 7 bit 0
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
Modo assíncrono:
Não se importe.
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
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
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
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.
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.
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
1.2 - - - - - - - - -
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.
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
Barramento de dados
TRMT ESPANHA
SPBRG
TX9D
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.
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)
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
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.
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
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
RCIF
Interromper Barramento de dados
RCIE
PIC16F87XA
FIGURA 10-5: RECEPÇÃO ASSÍNCRONA
Turno Rcv
Registro
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.
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
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.
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.
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
RCIF
Interromper Barramento de dados
RCIE
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.
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.
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
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.
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.
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
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.
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.
pino RC6/TX/CK
Escrever para
TXREG Reg
bit TXIF
bit TRMT
bit TXEN
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
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
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.
PIC16F87XA
FIGURA 10-11: RECEPÇÃO SÍNCRONA (MODO MASTER, SREN)
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 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).
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
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:
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
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.
PIC16F87XA
NOTAS:
PIC16F87XA
11.0 MÓDULO CONVERSOR O módulo A/D possui quatro registradores. Esses registros são:
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).
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
1 00 ESCURO/4
1 01 ESCURO/16
1 10 ESCURO/64
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
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
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
1 01 ESCURO/16
1 10 ESCURO/64
011x DD DD D D DD — — 0/0
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.
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
111
RE2/AN7(1)
110
RE1/AN6(1)
101
RE0/AN5(1)
100
RA5/AN4
SÓ
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
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
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.
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
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
TABELA 11-1: TAD vs. FREQUÊNCIAS MÁXIMAS DE OPERAÇÃO DO DISPOSITIVO (DISPOSITIVOS PADRÃO (F))
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”.
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
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
Definir bit GO
O ADRES está carregado
O bit GO é limpo
O bit ADIF é definido
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
Resultado de 10 bits
ADFM = 1 ADFM = 0
7 2107 0 7 0765 0
0000 00 0000 00
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.
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.
PIC16F87XA
NOTAS:
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.
pedaço 7 bit 0
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
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.
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
RA4/T0CKI/C1OUT UMA
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.
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.
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”).
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.
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.
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.
VDD
VT = 0,6 V
RS < 10K RIC
AIN
CPIN FUGA ±
E VT = 0,6 V 500 nA
5 pF
VSS
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.
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
pedaço 7 bit 0
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
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
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
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
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
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
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
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
pedaço 7 LVP: Bit de habilitação de programação serial em circuito de baixa tensão (fonte única)
1 = BOR ativado
0 = BOR desabilitado
1 = PWRT desativado
0 = PWRT ativado
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'
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
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
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.
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
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
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)
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.
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 —
0 x 11 Reinicialização ao ligar
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
PIC16F87XA
TABELA 14-6: CONDIÇÕES DE INICIALIZAÇÃO PARA TODOS OS REGISTOS
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
TMR2 73A 74A 76A 77A 0000 0000 0000 0000 uuuuuuuuuuuuuuuuuuuuuu
T2CON 73A 74A 76A 77A -000 0000 -000 0000 -uuuuuuuuuuuuuuuuuuuuuuuuu
SSPCON 73A 74A 76A 77A 0000 0000 0000 0000 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
CCP2CON 73A 74A 76A 77A 0000 0000 0000 0000 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.
PIC16F87XA
TABELA 14-6: CONDIÇÕES DE INICIALIZAÇÃO PARA TODOS OS REGISTOS (CONTINUAÇÃO)
TERCEIRO 73A 74A 76A 77A 1111 1111 1111 1111 uuuuuuuuuuuuuuuuuuuuuu
TRÊS 73A 74A 76A 77A 0000 -111 0000 -111 uuuuuuuuuuuuuuuuuuuuuu
PIE2 73A 74A 76A 77A -0-0 0--0 -0-0 0--0 -uh e--e
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
ADCON1 73A 74A 76A 77A 00-- 0000 00-- 0000 ugh-- ugh
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
Redefinição interna
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
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
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
Redefinição interna
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.
EEIF
ISTO
PSPIF(1)
PSPI (1)
ADIF
FRANGO
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
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.
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
0
M Pós-escalador
1
DENTRO
Temporizador WDT
X
8
PSA
WDT
Ativar bit
0 1
MUX PSA
WDT
Tempo esgotado
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
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.
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
Instrução
Inst(PC - 1) Dorme Inst(PC + 1) Ciclo fictício Ciclo fictício Inst(0004h)
Executado
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.
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
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
PIC16F87XA
TABELA 15-2: CONJUNTO DE INSTRUÇÕES PIC16F87XA
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).
PIC16F87XA
15.2 Descrições das Instruções
ADDW Adicione Literal e W BCF Bit Limpar f
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'.
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 .
PIC16F87XA
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'.
PIC16F87XA
PIC16F87XA
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.
PIC16F87XA
PIC16F87XA
NOTAS:
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) -
- 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
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
• 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.
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.
PIC16F87XA
16.14 Placa de Demonstração 16.17 Placa de Demonstração PICDEM
PICDEM 1 PICmicro 3 PIC16C92X
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.
PIC16F87XA
NOTAS:
PIC16F87XA
17.0 CARACTERÍSTICAS ELÉTRICAS
† 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.
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
6,0 V
5,5 V
5,0 V
4,5 V
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.
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
Parâmetro Característica/
Símbolo Tipo mín.† Unidades máximas Condições
Não. Dispositivo
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.
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
Parâmetro Característica/
Símbolo Tipo mín.† Unidades máximas Condições
Não. Dispositivo
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.
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
Parâmetro Característica/
Símbolo Tipo mín.† Unidades máximas Condições
Não. Dispositivo
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.
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.
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
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:
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.
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.
D083 OSC2/CLKO (configuração RC osc) — — 0,6 V IOL = 1,6 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
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.
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.
PIC16F87XA
17.3 Simbologia do Parâmetro de Temporização
Alta impedância
Eu 2C apenas
ST
QUE Entrada de dados em espera O QUE Condição de parada
STA Condição inicial
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,
PIC16F87XA
FIGURA 17-4: CRONOGRAMA DE RELÓGIO EXTERNO
Q4 Q1 Q2 Q3 Q4 Q1
OSC1
1 3 3 4 4
2
CLKO
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
† 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.
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
20, 21
Parâmetro
Símbolo Característica Mín. Modelo† Máx. Condições das unidades
Não.
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
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.
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.
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
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
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
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.
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.
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
75, 76
74
73
SS
81
SCK
(CKP = 0)
71 72
79
73
SCK
(CKP = 1)
80
78
75, 76
74
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
75, 76 77
74
73
82
SS
70
SCK
83
(CKP = 0)
71 72
SCK
(CKP = 1)
80
75, 76 77
SDI
MSb em Bit 6 - - - -1 LSb em
74
PIC16F87XA
TABELA 17-9: REQUISITOS DO MODO SPI
Param
Símbolo Característica Mín. Typ† Condições de Unidades Máximas
No.
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
SCL
91 93
90 92
SDA
Começar Pare
Doença Doença
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
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 — —
101
SCL
90
106
107
91 92
SDA
Dentro
110
109 109
SDA
Fora
PIC16F87XA
TABELA 17-11: REQUISITOS DE DADOS DO BUS I2C
Parâmetro
Sim Característica Mín. Unidades máximas Condições
Não.
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
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
RC6/TX/CK
alfinete 125
RC7/RX/DT
alfinete
126
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.
A07 Erro de ganho EGN — — <±1 LSb VREF = VDD = 5,12 V, VSS
ÿ VAIN ÿ VREF
PIC16F87XA
FIGURA 17-19: TEMPO DE CONVERSÃO A/D
(TOSC/2)(1)
131
Q4
130
ADIF
VAI FEITO
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.
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.
PIC16F87XA
NOTAS:
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
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
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)
PIC16F87XA
FIGURA 18-3: IDD TÍPICO vs. FOSC SOBRE VDD (MODO XT)
1,8
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
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)
PIC16F87XA
FIGURA 18-5: IDD TÍPICO vs. FOSC SOBRE VDD (MODO LP)
70
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
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)
PIC16F87XA
FIGURA 18-7: FOSC MÉDIO vs. VDD PARA VÁRIOS VALORES DE R (MODO RC, C = 20 pF, +25°C)
4,5
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)
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
0,001
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5
VDD (V)
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
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
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)
PIC16F87XA
FIGURA 18-13: ÿIBOR vs. VDD SOBRETEMPERATURA
1.000
Máx (125°C)
Tipo (25°C)
Dispositivo em
Dispositivo em
Redefinir
(µA)
IDD
100
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)
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
0,5
0,0
0 5 10 15 20 25
IOH (-mA)
PIC16F87XA
FIGURA 18-17: TÍPICO, MÍNIMO E MÁXIMO VOH vs. IOH (VDD = 3V, -40°C A +125°C)
3,5
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
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)
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,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,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)
PIC16F87XA
FIGURA 18-21: VIN MÍNIMO E MÁXIMO vs. VDD (ENTRADA ST, -40°C A +125°C)
4,0
2,5
VIN
(V)
2,0
1,5
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)
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
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
0,5
0
2 2,5 3 3,5 4 4,5 5 5,5
VREFH (V)
PIC16F87XA
19.0 INFORMAÇÕES DA EMBALAGEM
XXXXXXXXX PIC16F877A
XXXXXXXXX /PT
XXXXXXXXX 0310017
YYWNNNN
XXXXXXXXX PIC16F877A
XXXXXXXXX -20/L
XXXXXXXXX 0310017
YYWNNNN
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.
PIC16F87XA
Informações de marcação do pacote (cont.)
XXXXXXXXX PIC16F877A
XXXXXXXXX -I/ML
XXXXXXXXX 0310017
YYWNNNN
XXXXXXXXXXXXXXX PIC16F876A/SP
XXXXXXXXXXXXXXX 0310017
YYWNNNN
XXXXXXXXXXXXXXXXXXXX PIC16F876A/SO
XXXXXXXXXXXXXXXXXXXX 0310017
XXXXXXXXXXXXXXXXXXXX
YYWNNNN
XXXXXXXXXXXX PIC16F876A/
XXXXXXXXXXXX SS
YYWNNNN 0310017
XXXXXXXX 16F873A
XXXXXXXX -I/ML
YYWNNNN 0310017
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
De cima para o avião sentado UMA .160 .175 .190 4.06 4,45 4,83
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
Espaçamento total entre linhas § eB 0,620 0,650 0,680 15,75 16,51 17,27
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)
* 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
PIC16F87XA
Porta-cavacos com chumbo de plástico de 44 derivações (L) - Quadrado (PLCC)
E1
#leads=n1
D1 D
n 1 2
A2 UMA
35°
B1
c
B A1
b
p
E2 D2
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
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
UMA
A1
A3
Número de pinos n 44 44
*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
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
Número de pinos n 28 28
De cima para o avião sentado UMA .140 0,150 .160 3,56 3,81 4.06
Dica para o avião sentado eu .125 .130 .135 3,18 3h30 3,43
Espaçamento total entre linhas § eB .320 0,350 .430 8.13 8,89 10,92
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
* 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
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
* 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
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
uma
A2 UMA
A1
A3
*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
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).
Interrupções 14 15 14 15
Módulo analógico-digital de 10 bits 5 canais de entrada 8 canais de entrada 5 canais de entrada 8 canais de entrada
PIC16F87XA
APÊNDICE C: CONVERSÃO
CONSIDERAÇÕES
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 )
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
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 ÿ
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
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
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
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
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
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
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
= 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
PIC16F87XA
Dentro
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
www.microchip.com
ftp://ftp.microchip.com
• 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
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
Perguntas:
3. Você considera a organização deste documento fácil de seguir? Se não, por quê?
5. Que exclusões do documento podem ser feitas sem afetar a utilidade geral?
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.
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
Phoenix
2355 West Chandler Blvd.
Chandler, AZ 85224-6199 Tel:
480-792-7966 Fax: 480-792-4338
28/07/03