Escolar Documentos
Profissional Documentos
Cultura Documentos
PIC16F870/871
Microcontroladores CMOS FLASH de 28/40 pinos e 8 bits
MCLR/VPP/THV 40 RB7/PGD
Características principais do microcontrolador: RA0/YAN0 RB6/PGC
1 39
RA1/AN1 23 38 RB5
• CPU RISC de alto desempenho • Apenas RA2/AN2/VREF 4 37 RB4
35 instruções de palavra única para aprender • Todas as RA3/AN3/VREF+ 5 36 RB3/PGM
RA4/T0CKI 6 35 RB2
instruções de ciclo único, exceto para ramos de programa que
RA5/AN4 7 34 RB1
são de dois ciclos RE0/RD/AN5 8 33 RB0/INT
• Velocidade de operação: DC - entrada de clock de 20 MHz RE1/WR/AN6 9 32 VDD
DC - ciclo de instrução de 200 ns • 2K RE2/CS/AN7 10 PIC16F871
31 VSS
VDD 11 30 RD7/PSP7
x 14 palavras de memória de programa FLASH 128 x 8 bytes de VSS 12 29 RD6/PSP6
memória de dados (RAM) 64 x 8 bytes de memória de dados OSC1 / CLKI 13 28 RD5/PSP5
25 mA • Comercial e industrial faixas de temperatura • Baixo consumo • Porta Escrava Paralela (PSP) de 8 bits de largura, com
de energia: - < 1,6 mA típico @ 5V, 4 MHz - 20 ÿA típico @ 3V, 32 controles externos RD, WR e CS (somente 40/44 pinos)
PIC16F870/871
Diagramas de pinos
MCLR/VPP/THV 28 RB7/PGD
RA0/YAN0 12 27 RB6/PGC
RA1/AN1 3 26 RB5
RA2/AN2/VREF 4 25 RB4
RA3/AN3/VREF+ 5 24 RB3/PGM
RA4/T0CKI 6 23 RB2
RA5/AN4 7 22 RB1
VSS 8 21 RB0/INT
PIC16F870
CLP
AN2/
RA2/ VREF+
AN3/
VREF RA3/ RA1/
AN1 MCLR/
VPP/
THV YAN0
RA0/ NC PGD
RB7/ PGC
RB6/ RB4 RB5 NC
3
5
640
41
42
43
44
2
14
RA4/T0CKI 7
39 RB3/PGM
RA5/AN4 8 38 RB2
RE0/RD/AN5 9 37 RB1
RE1/WR/AN6 10 36 RB0/INT
RE2/CS/AN7 11 35 VDD
VDD 12
PIC16F871 34 VSS
VSS 13 33 RD7/PSP7
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
RC3 RC5 RC4
TQFP
RC6/
TX/
CK RC4 RC5 PSP3
RD3/ PSP2
RD2/ PSP1
RD1/ PSP0
RD0/ RC3 CCP1
T1AXIS RC2/
RC1/ NC T1AXIS
RC1/
CCP1
RC2/ PSP0
RD0/ PSP1
RD1/ PSP2
RD2/ PSP3
RD3/
RC6/
TX/
CK
34
35
36
37
38
39
40
41
42
43
44
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 29 VSS
VSS 5 PIC16F871 28 VDD
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
RB3/PGM 10 11 23 RA4/T0CKI
NC NC
RB5 RB4
YAN0
RA0/ RA1/
AN1
PGC
RB6/ PGD
RB7/
MCLR/
VPP/
THV VREF
AN2/
RA2/
VREF+
AN3/
RA3/
PIC16F870/871
Características principais
REINICIALIZAÇÕES (e atrasos) POR, BOR (PWRT, OST) POR, BOR (PWRT, OST)
Interrupções 10 11
Módulos de captura/comparação/PWM 1 1
PIC16F870/871
Índice
1.0 Visão geral do dispositivo ............................................. .................................................. .................................................. ......................... 5 2.0 Organização da
Memória ........................ .................................................. .................................................. ......................... 11 3.0 EEPROM de dados e memória de programa
Flash.... .................................................. .................................................. ......................... 27 4.0 Portas de E/
S ........................ .................................................. .................................................. .................................................. ......... 33 5.0 Módulo
Temporizador0 .............................. .................................................. .................................................. ......................... 45 6.0 Módulo
Temporizador1 ............ ....................... .................................................. .................................................. ......................... 49 7.0 Módulo
Temporizador2 ............ .................................................. .................................................. .................................................. ........ 53 8.0 Módulos de Captura/
Comparação/PWM ........................ .................................................. .................................................. ........ 55 9.0 Transmissor Receptor Assíncrono Universal
Síncrono Endereçável (USART) .............................. ......................... 61 10.0 Módulo Conversor Analógico-Digital (A/
D)... .................................................. .................................................. ......................... 79 11.0 Recursos especiais da
CPU............... .................................................. .................................................. ......................... ......... 87 12.0 Resumo do Conjunto de
Instruções .................................. .................................................. .................................................. ......................... 103 13.0 Suporte ao
Desenvolvimento ....................... .................................................. .................................................. ....................................... 111 14.0 Características
Elétricas ........ .................................................. .................................................. ............................................. 117 15,0 CC e Gráficos e Tabelas de Características
de CA ............................................. .................................................. ......................... 137 16.0 Informações de
Embalagem ........................ .................................................. .................................................. .................................... 149 Apêndice A: Histórico de
revisões........ ................ .................................................. .................................................. ......................... 157 Apêndice B: Diferenças de
Dispositivos........... .................................................. .................................................. .................................. 157 Apêndice C: Considerações de
conversão .. .................................................. .................................................. ......................... 158 Apêndice D: Migração de dispositivos intermediários para
dispositivos avançados . .................................................. .................................................. ..... 158 Apêndice E: Migração de dispositivos avançados para dispositivos
avançados ....................... .................................................. ......................... 159
Índice ......................... .................................................. .................................................. .......................... ............................................. 161 Suporte On-
Line .................................................. .................................................. .................................................. ......................... 167 Informações de Sistemas e Linha Direta
de Atualização ............... .................................................. .................................................. .......... 167 Resposta do
Leitor .................................. .................................................. .................................................. ............................................. 168 PIC16F870/871 Produto Sistema de
identificação ........................................ .................................................. ......................... 169
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 (inclua o número da literatura) você
está usando.
PIC16F870/871
1.0 VISÃO GERAL DO DISPOSITIVO Existem dois dispositivos (PIC16F870 e PIC16F871) cobertos por
esta folha de dados. O dispositivo PIC16F870 vem em um pacote
Este documento contém informações específicas do dispositivo. de 28 pinos e o dispositivo PIC16F871 vem em um pacote de 40
Informações adicionais podem ser encontradas no PICmicroTM Mid- pinos. O dispositivo de 28 pinos não possui uma Porta Escrava
Range MCU Family Reference Manual (DS33023), que pode ser Paralela implementada.
obtido com seu representante de vendas local da Microchip ou
As duas figuras a seguir são diagramas de blocos de dispositivos
baixado do site da Microchip. O Manual de Referência deve ser
classificados por número de pinos: 28 pinos para Figura 1-1 e 40
considerado um documento complementar a esta ficha técnica,
pinos para Figura 1-2. As pinagens de 28 pinos e 40 pinos estão
sendo sua leitura altamente recomendada para um melhor
listadas na Tabela 1-1 e na Tabela 1-2, respectivamente.
entendimento da arquitetura do dispositivo e funcionamento dos
módulos periféricos.
13 8 TRAZ
Barramento de dados
Contador de programas
INSTANTÂNEO
RA0/YAN0
Programa RA1/AN1
Memória RA2/AN2/VREF
BATER
Pilha de 8 níveis Arquivo
RA3/AN3/VREF+
(13 bits) RA4/T0CKI
Registros
RA5/AN4
Programa 14
Ônibus Endereço RAM (1) 9 PORTB
RB0/INT
Endereço MUX RB1
Instrução reg
RB2
Endereço Direto 7 Indireto
RB3/PGM
8 Endereço
RB4
RB5
FSR reg
RB6/PGC
RB7/PGD
STATUS reg PORTO
8
RC0/T1OSO/T1CKI
RC1/T1AXIS
3 RC2/CCP1
MUX
Energizar RC3
Cronômetro
RC4
Instrução Oscilador RC5
Decodificar & Temporizador de inicialização RC6/TX/CK
VAI
Ao controle
Ligar RC7/RX/DT
Redefinir 8
Em circuito
Depurador
Baixa voltagem
Programação
PIC16F870/871
FIGURA 1-2: PIC16F871 DIAGRAMA DE BLOCO
13 8 TRAZ
Barramento de dados
INSTANTÂNEO
Contador de programas
RA0/YAN0
Programa RA1/AN1
Memória RA2/AN2/VREF
BATER
Pilha de 8 níveis RA3/AN3/VREF+
Arquivo
Programa 14
Ônibus Endereço RAM (1) 9 PORTB
RB0/INT
Endereço MUX RB1
Instrução reg
RB2
Endereço Direto 7 Indireto
RB3/PGM
8 Endereço
RB4
RB5
FSR reg
RB6/PGC
RB7/PGD
STATUS reg PORTO
8
RC0/T1OSO/T1CKI
RC1/T1AXIS
3 RC2/CCP1
MUX
Energizar RC3
Cronômetro
RC4
Instrução Oscilador RC5
Decodificar & Temporizador de inicialização RC6/TX/CK
VAI
Ao controle
Ligar RC7/RX/DT
Redefinir 8
PORTD
Em circuito
Depurador
Baixa voltagem
Programação PORTÃO
RE0/RD/AN5
RE1/WR/AN6
PIC16F870/871
TABELA 1-1: DESCRIÇÃO DA PINAGEM DO PIC16F870
MCLR/VPP/THV 1 1 I/P ST Entrada Master Clear (Reset) ou entrada de tensão de programação ou controle
do modo High Voltage Test. Este pino é um RESET baixo ativo para o dispositivo.
RA2/AN2/VREF- 4 4 E/S TTL RA2 também pode ser entrada analógica 2 ou referência analógica negativa
Voltagem.
RA3/AN3/VREF+ 5 5 E/S TTL RA3 também pode ser entrada analógica 3 ou referência analógica positiva
Voltagem.
RA4/T0CKI 6 6 E/S ST/OD RA4 também pode ser a entrada do relógio para o módulo Timer0. Resultado
é do tipo dreno aberto.
RA5/AN4 7 7 E/S TTL RA5 também pode ser entrada analógica 4.
RB3/PGM 24 24 E/S TTL/ST(1) RB3 também pode ser a entrada de programação de baixa tensão.
RC4 15 15 E/S ST
RC5 16 16 E/S ST
RC6/TX/CK 17 17 E/S ST RC6 também pode ser a transmissão assíncrona USART ou o relógio
síncrono.
RC7/RX/DT 18 18 E/S ST RC7 também pode ser o USART Asynchronous Receive ou Synchronous
Data.
VSS 8, 19 8, 19 P — Referência de aterramento para pinos lógicos e de E/S.
VDD 20 20 P — Alimentação positiva para pinos lógicos e I/O.
O = Nota
Legenda: I = entrada OD = Open Drain TTL = entrada TTL saída1: Este buffer é uma entrada
I/O =Schmitt
entrada/saída
Trigger P = potência
quando configurado como interrupção— = Não ou
externa usado
modo LVP. ST = entrada do gatilho Schmitt
2: Este buffer é uma entrada Schmitt Trigger quando usado no modo de programação serial.
3: Este buffer é uma entrada Schmitt Trigger quando configurado no modo RC Oscillator e uma entrada CMOS caso contrário.
PIC16F870/871
TABELA 1-2: DESCRIÇÃO DA PINAGEM DO PIC16F871
OSC1 / CLKI 13 14 30 EU
OSC2/CLKO 14 15 31 O —
Saída de cristal do oscilador. Conecta-se ao cristal ou ressonador no modo
Crystal Oscillator. No modo RC, o pino OSC2 emite CLKO, que tem 1/4 da
frequência de OSC1 e denota a taxa de ciclo de instrução.
RA2/AN2/VREF- 4 5 21 E/S TTL RA2 também pode ser entrada analógica 2 ou tensão de referência
analógica negativa.
RA3/AN3/VREF+ 5 6 22 E/S TTL RA3 também pode ser entrada analógica 3 ou tensão de
referência analógica positiva.
RA4/T0CKI 6 7 23 E/S ST RA4 também pode ser a entrada do relógio para o
temporizador/contador Timer0. A saída é do tipo dreno aberto.
RA5/AN4 7 8 24 E/S TTL RA5 também pode ser entrada analógica 4.
PORTB é uma porta de E/S bidirecional. O PORTB pode ser programado por
software para pull-up fraco interno em todas as entradas.
RB0/INT 33 36 8 E/S TTL/ST(1) RB0 também pode ser o pino de interrupção externo.
RB3/PGM 36 39 11 E/S TTL/ST(1) RB3 também pode ser a entrada de programação de baixa tensão.
RC4 23 25 42 E/S ST
RC5 24 26 43 E/S ST
PIC16F870/871
TABELA 1-2: DESCRIÇÃO DA PINAGEM DO PIC16F871 (CONTINUAÇÃO)
RE1/WR/AN6 9 10 26 E/S ST/TTL(3) RE1 também pode ser controle de gravação para a porta escrava paralela, ou
entrada analógica 6.
RE2/CS/AN7 10 11 27 E/S ST/TTL(3) RE2 também pode ser controle de seleção para a porta escrava paralela,
ou entrada analógica 7.
VSS P —
12,31 13,34 6,29 Referência de aterramento para pinos lógicos e de E/S.
VDD P —
11,32 12,35 7,28 Alimentação positiva para pinos lógicos e de E/S.
NC - 1,17,28, 12,13, — Esses pinos não estão conectados internamente. Esses pinos devem ser deixados
40 33,34 desconectados.
PIC16F870/871
NOTAS:
PIC16F870/871
2.0 ORGANIZAÇÃO DA MEMÓRIA 2.2 Organização da Memória de Dados
Os dispositivos PIC16F870/871 possuem três memórias A memória de dados é particionada em vários bancos
blocos. A memória de programa e a memória de dados têm que contêm os Registros de Uso Geral e os
barramentos separados, para que o acesso simultâneo possa ocorrer, Registros de funções especiais. Bits RP1 (STATUS<6>)
e é detalhado nesta seção. Os dados da EEPROM e RP0 (STATUS<5>) são os bits de seleção de banco.
bloco de memória é detalhado na Seção 3.0.
PR<1:0> Banco
Informações adicionais sobre a memória do dispositivo podem ser encontradas
00 0
na referência da família de MCU de médio alcance PICmicroTM
Manual (DS33023). 01 1
10 2
2.1 Organização da Memória do Programa 11 3
Nível de pilha 1
Nível de pilha 2
Nível de pilha 8
On-Chip 0005h
Programa Página 0
Memória 07FFh
08:00h
1FFFh
PIC16F870/871
FIGURA 2-2: PIC16F870/871 MAPA DE ARQUIVO DE REGISTRO
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
PORTO(2) 08h TRISD(2) 88h 108h 188h
PORTA(2) 09h TRÊS(2) 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
1º 9 Dh
ENDEREÇO 1Eh MORADA 9Eh
ADCON0 1Fh ADCON1 9Fh
120h 1A0h
20h Em geral Ahh
Propósito acessos acessos
Registro 20h-7Fh A0h - BFh
Em geral
32 Bytes BF 1BFh
Propósito
Registro C0h 1C0h
PIC16F870/871
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.
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
REINICIA(2)
Banco 0
00h(4) INC 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 0000 0000
01h TMR0 Registro do Módulo Timer0 xxxx xxxx uuuu uuuu
02h(4) PCL 0000 0000 0000 0000
Byte menos significativo do contador de programa (PC)
03h(4) STATUS IRP RP1 RP0 PD DC
PARA A PARTIR DE
07h PORTO PORTC Data Latch quando escrito: pinos PORTC quando lidos xxxx xxxx uuuu uuuu
08h(5) PORTA 09h(5) PORTD Data Latch quando escrito: pinos PORTD quando lidos xxxx xxxx uuuu uuuu
0Ch PIR1 PSPIF(3) ADIF RCIF TXIF — CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
0Eh TMR1L Registro de retenção para o byte menos significativo do registro TMR1 de 16 bits xxxx xxxx uuuu uuuu
0 Fh TMR1H Registro de retenção 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
12h T2CON — TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 -000 0000
13h — —
— Não implementado
14h — —
— Não implementado
15h CCPR1L Capturar/Comparar/Registro PWM1 (LSB) xxxx xxxx uuuu uuuu
17h CCP1CON — — CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 --00 0000 --00 0000
18h RCSTA ESPANHA RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x
19h TXREG Registro de Dados de Transmissão USART 0000 0000 0000 0000
1Ah RCREG Registro de Dados de Recepção USART 0000 0000 0000 0000
1 Sra — —
— Não implementado
— —
1 canal — Não implementado
1º — —
— Não implementado
1Eh ENDEREÇO Byte alto do registrador de resultado A/D xxxx xxxx uuuu uuuu
1Fh ADCON0 ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE — ADON 0000 00-0 0000 00-0
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> cujo
os conteúdos são transferidos para o byte superior do contador de programa.
2: Outros Resets (sem Power-up) incluem RESET externo através de MCLR e Watchdog Timer Reset.
3: Bits PSPIE e PSPIF são reservados nos dispositivos de 28 pinos; sempre mantenha esses bits claros.
4: Esses registradores podem ser endereçados de qualquer banco.
5: PORTD, PORTE, TRISD e TRISE não são implementados fisicamente nos dispositivos de 28 pinos, lidos como '0'.
PIC16F870/871
TABELA 2-1: RESUMO DO REGISTRO DE FUNÇÕES ESPECIAIS (CONTINUAÇÃO)
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
REINICIA(2)
Banco 1
80h(4) INC 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 0000 0000
81h OPTION_REG RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
82h(4) PCL 0000 0000 0000 0000
Byte menos significativo do contador de programa (PC)
83h(4) STATUS IRP RP1 RP0 PD DC
PARA A PARTIR DE
87h TRISC Registro de Direção de Dados PORTC 1111 1111 1111 1111
88h(5) TERCEIRO 1111 1111 1111 1111
Registro de Direção de Dados PORTD
89h(5) TRÊS IBF OBF IBOV PSPMODE — Bits de direção de dados PORTE 0000 -111 0000 -111
8 canais TORTA1 PSPIE(3) ADIE RCIE ESSA — CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
8Fh — —
— Não implementado
90h — —
— Não implementado
91h — —
— Não implementado
92h PR2 Registro do Período do Timer2 1111 1111 1111 1111
93h — —
— Não implementado
94h — —
— Não implementado
95h — —
— Não implementado
96h — —
— Não implementado
97h — —
— Não implementado
98h TXT CSRC TX9 CHEN SINCRONIZAÇÃO - BRGH TRMT TX9D 0000 -010 0000 -010
99h SPBRG Registro do gerador de taxa de transmissão 0000 0000 0000 0000
9Ah — —
— Não implementado
9Bh — —
— Não implementado
— —
9 canais — Não implementado
9 Dh — —
— Não implementado
9Eh MORADA Byte baixo do registrador de resultado A/D xxxx xxxx uuuu uuuu
9Fh ADCON1 ADFM — — — PCFG3 PCFG2 PCFG1 PCFG0 0--- 0000 0--- 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> cujo
os conteúdos são transferidos para o byte superior do contador de programa.
2: Outros Resets (sem Power-up) incluem RESET externo através de MCLR e Watchdog Timer Reset.
3: Bits PSPIE e PSPIF são reservados nos dispositivos de 28 pinos; sempre mantenha esses bits claros.
4: Esses registradores podem ser endereçados de qualquer banco.
5: PORTD, PORTE, TRISD e TRISE não são implementados fisicamente nos dispositivos de 28 pinos, lidos como '0'.
PIC16F870/871
TABELA 2-1: RESUMO DO REGISTRO DE FUNÇÕES ESPECIAIS (CONTINUAÇÃO)
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
REINICIA(2)
Banco 2
100h(4) 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 0000 0000
101h TMR0 Registro do Módulo Timer0 xxxx xxxx uuuu uuuu
102h(4) PCL Byte menos significativo do contador de programa (PC) 0000 0000 0000 0000
103h(4) ESTADO IRP RP1 RP0 PARA PD A PARTIR DE DC C 0001 1xxx 000q quuu
104h(4) FSR Ponteiro de endereço de memória de dados indireto xxxx xxxx uuuu uuuu
105h — —
— Não implementado
106h PORTB PORTB Data Latch quando escrito: pinos PORTB quando lidos xxxx xxxx uuuu uuuu
107h — —
— Não implementado
108h — —
— Não implementado
109h — —
— Não implementado
10Ah(1,4) PCLATH — — ---0 0000 ---0 0000
— Buffer de gravação para os 5 bits superiores do contador de programa
10Bh(4) INTCON GIE ASSIM T0IE NÃO RBIE T0IF INTF RBIF 0000 000x 0000 000u
180h(4) 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 0000 0000
181h OPTION_REG RBPU INTEDG T0CS 182h(4) PCL 183h(4) T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
STATUS 184h(4) FSR Byte menos significativo do contador de programa (PC) 0000 0000 0000 0000
185h — —
— Não implementado
186h TRISB Registro de Direção de Dados PORTB 1111 1111 1111 1111
187h — —
— Não implementado
188h — —
— Não implementado
189h — —
— Não implementado
18Ah(1,4) PCLATH — — ---0 0000 ---0 0000
— Buffer de gravação para os 5 bits superiores do contador de programa
18Bh(4) INTCON GIE ASSIM T0IE NÃO RBIE T0IF INTF RBIF 0000 000x 0000 000u
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> cujo
os conteúdos são transferidos para o byte superior do contador de programa.
2: Outros Resets (sem Power-up) incluem RESET externo através de MCLR e Watchdog Timer Reset.
3: Bits PSPIE e PSPIF são reservados nos dispositivos de 28 pinos; sempre mantenha esses bits claros.
4: Esses registradores podem ser endereçados de qualquer banco.
5: PORTD, PORTE, TRISD e TRISE não são implementados fisicamente nos dispositivos de 28 pinos, lidos como '0'.
PIC16F870/871
2.2.2.1 Cadastro de STATUS Por exemplo, CLRF STATUS limpará os três
bits e defina o bit Z. Isso deixa o registro STATUS
O registrador STATUS contém o status aritmético de
como 000u u1uu (onde u = inalterado).
a ALU, o status RESET e os bits de seleção de banco para
memória de dados. Recomenda-se, portanto, que apenas BCF, BSF,
As instruções SWAPF e MOVWF são usadas para alterar o
O registrador STATUS pode ser o destino de qualquer
registro STATUS, pois essas instruções não
instrução, como com qualquer outro registro. Se o ESTADO
afetam os bits Z, C ou DC do registrador STATUS. Por
registrador é o destino de uma instrução que afeta
outras instruções que não afetem nenhum bit de status, consulte o
os bits Z, DC ou C, então a gravação nesses três bits é
“Resumo do Conjunto de Instruções”.
Desativado. Esses bits 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 1: 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
bocado 7-6 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)
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
PIC16F870/871
2.2.2.2 OPTION_REG Cadastro
O registrador OPTION_REG é um registrador legível e gravável
registrador, que contém vários bits de controle para configurar
o prescaler TMR0/WDT postscaler (registro de atribuição único conhecido
também como o prescaler), o External
Interrupção INT, TMR0 e os pull-ups fracos em PORTB.
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
PIC16F870/871
2.2.2.3 Registro INTCON
Nota: Os bits de flag de interrupção são definidos quando uma interrupção
O registrador INTCON é um registrador legível e gravável, que contém vários condição ocorre, independentemente do estado de
bits de habilitação e flag para o seu 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>). O software do usuário
Interrupções do pino RB0/INT. deve garantir que os bits de sinalização de interrupção
apropriados estejam limpos antes de habilitar um
interromper.
pedaço 7 bit 0
1 = Pelo menos um dos pinos RB7:RB4 mudou de estado (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
PIC16F870/871
2.2.2.4 Registro PIE1
O registrador PIE1 contém os bits de habilitação individuais para
as interrupções periféricas.
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
PIC16F870/871
2.2.2.5 Registro PIR1
O registrador PIR1 contém os bits de flag individuais para
as interrupções periféricas.
pedaço 7 bit 0
Modo de captura:
1 = Ocorreu uma captura de registro TMR1 (deve ser apagada no software)
0 = Nenhuma captura de registro TMR1 ocorreu
Modo de comparação:
1 = Ocorreu uma correspondência de comparação de registro TMR1 (deve ser apagada no software)
0 = Nenhuma correspondência de comparação de registro TMR1 ocorreu
Modo PWM:
Não utilizado neste modo.
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
PIC16F870/871
2.2.2.6 Registro PIE2
O registrador PIE2 contém o bit de habilitação individual para
a interrupção da operação de gravação da EEPROM.
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
PIC16F870/871
2.2.2.7 Registro PIR2
O registrador PIR2 contém o bit sinalizador para a EEPROM
interrupção da operação de gravação.
.
Nota: Os bits de flag de interrupção são definidos quando uma interrupção
condição ocorre, independentemente do estado de
seu bit de habilitação correspondente ou o global
bit de habilitação, GIE (INTCON<7>). O software do
usuário deve garantir que os bits de sinalização de
interrupção apropriados estejam limpos antes de habilitar um
interromper.
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
PIC16F870/871
2.2.2.8 Registro PCON
O registrador Power Control (PCON) contém bits de flag
para permitir a diferenciação entre um Power-on Reset
(POR), um Brown-out Reset (BOR), um Watchdog Reset
(WDT) e um MCLR Reset externo.
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
PIC16F870/871
2.3 PCL e PCLATH A pilha funciona como um buffer circular. Isso significa que
depois que a pilha foi empurrada oito vezes, a nona
O Program Counter (PC) tem 13 bits de largura. O menor push sobrescreve o valor que foi armazenado desde o primeiro
byte vem do registrador PCL, que é um Empurre. O décimo push substitui o segundo push (e
e registro gravável. Os bits superiores (PC<12:8>) são em breve).
não legíveis, mas são indiretamente graváveis através do
Registro PCLATH. Em qualquer RESET, os bits superiores do Nota 1: Não há bits de status para indicar pilha
PC será limpo. A Figura 2-3 mostra as duas situações condições de estouro ou estouro de pilha.
para o carregamento do PC. O exemplo superior na figura mostra
2: Não há instruções/mnemônicos
como o PC é carregado em uma gravação para PCL
chamado PUSH ou POP. Estas são ações
(PCLATH<4:0> ÿ PCH). O exemplo inferior na figura mostra como o
que ocorrem a partir da execução da CHAMADA,
PC é carregado durante um CALL ou GOTO
Instruções RETURN, RETLW e RETFIE, ou a
instrução (PCLATH<4:3> ÿ PCH).
vetorização para uma interrupção
Morada.
FIGURA 2-3: CARREGAMENTO DO PC EM
SITUAÇÕES DIFERENTES
2.4 Paginação da Memória do Programa
PCLATH
2,5 Endereçamento Indireto, INDF e
Registros FSR
2.3.1 GOTO COMPUTADO O registro INDF não é um registro físico. Endereçamento
o registrador INDF causará endereçamento indireto.
Um GOTO calculado é realizado adicionando um deslocamento
ao contador de programa (ADDWF PCL). Ao fazer um O endereçamento indireto é possível por meio do registro INDF.
tabela lida usando um método GOTO computado, cuidado Qualquer instrução usando o registrador INDF
deve ser exercido se a localização da mesa cruzar um PCL acessa o registro apontado pelo registro File Select, FSR. Lendo o
limite de memória (cada bloco de 256 bytes). Consulte o próprio registro INDF indiretamente
nota de aplicação, "Implementando uma leitura de tabela" (FSR = 0) lerá 00h. Escrevendo no registrador INDF
(AN556). indiretamente resulta em uma não operação (embora os bits de status
pode ser afetado). Um endereço efetivo de 9 bits é obtido
2.3.2 PILHA concatenando o registrador FSR de 8 bits e o bit IRP
A família PIC16FXXX tem uma profundidade de 8 níveis x 13 bits (STATUS<7>), conforme mostrado na Figura 2-4.
pilha de hardware ampla. O espaço da pilha não faz parte Um programa simples para limpar locais de RAM 20h-2Fh
programa ou espaço de dados e o ponteiro da pilha é usando endereçamento indireto é mostrado no Exemplo 2-1.
não legível ou gravável. O PC é empurrado para o
pilha quando uma instrução CALL é executada ou uma interrupção EXEMPLO 2-1: ENDEREÇO INDIRETO
causa uma ramificação. A pilha é POPed no evento movlw 0x20 ;inicializar ponteiro
de uma instrução RETURN, RETLW ou RETFIE movwf FSR ;para RAM
execução. PCLATH não é afetado por um PUSH ou POP PRÓXIMO clrf INC ;limpar registro INDF
Operação. incf FSR,F ;inc ponteiro
btfss FSR,4 ;tudo feito? vá para NEXT; não
está claro próximo
PROSSEGUIR
: ;sim continua
PIC16F870/871
FIGURA 2-4: ENDEREÇO DIRETO/INDIRETO
00 01 10 11
Dados
Memória(1)
PIC16F870/871
NOTAS:
PIC16F870/871
3.0 EEPROM DE DADOS E MEMÓRIA DE O valor escrito na memória de programa não precisa ser uma
instrução válida. Portanto, números de até 14 bits podem ser
PROGRAMA FLASH
armazenados na memória para uso como parâmetros de calibração,
A EEPROM de Dados e a Memória de Programa FLASH são números de série, ASCII de 7 bits compactados, etc. A execução
legíveis e graváveis durante a operação normal em toda a faixa de de um local de memória de programa contendo dados que formam
VDD . Uma operação de apagamento em massa não pode ser uma instrução inválida resulta em um NOP.
emitida a partir do código do usuário (o que inclui a remoção da
proteção do código). A memória de dados não é mapeada 3.1 EEADR
diretamente no espaço do arquivo de registro. Em vez disso, ele é
endereçado indiretamente por meio dos registradores de função especial (SFR).Os registradores de endereço podem endereçar até um máximo de
256 bytes de dados EEPROM ou até um máximo de 8K palavras de
Existem seis SFRs usados para ler e escrever o programa e a
programa FLASH. No entanto, o PIC16F870/871 possui 64 bytes de
memória EEPROM de dados. Esses registros são:
EEPROM de dados e 2K palavras de programa FLASH.
• EECON1
• EECON2
Ao selecionar um valor de endereço de programa, o MSByte do
• EDATA endereço é escrito no registrador EEADRH e o LSByte é gravado
• EEDATH no registrador EEADR. Ao selecionar um valor de endereço de
• EEADR dados, apenas o LSByte do endereço é escrito no registrador
EEADR.
• EEADRH
Nos dispositivos PIC16F870/871, os dois bits superiores do EEADR
A memória de dados EEPROM permite leitura e escrita de bytes.
devem sempre ser limpos para evitar o acesso inadvertido ao local
Ao fazer interface com o bloco de memória de dados, o EEDATA
errado na EEPROM de dados.
mantém os dados de 8 bits para leitura/gravação e o EEADR
Isso também se aplica à memória do programa. Os cinco MSbits
mantém o endereço da localização da EEPROM que está sendo
superiores do EEADRH devem estar sempre limpos durante o
acessada. Os registradores EEDATH e EEADRH não são utilizados
acesso ao FLASH do programa.
para acesso a dados EEPROM. Os dispositivos PIC16F870/871
possuem 64 bytes de EEPROM de dados com faixa de endereços
de 0h a 3Fh. 3.2 Registros EECON1 e EECON2
A memória de dados EEPROM é classificada para altos ciclos de O registro EECON1 é o registro de controle para configurar e iniciar
apagamento/gravação. O tempo de gravação é controlado por um o acesso. O registrador EECON2 não é um registrador implementado
temporizador no chip. O tempo de gravação varia de acordo com a fisicamente, mas é usado exclusivamente na sequência de gravação
tensão e temperatura, bem como de chip para chip. Consulte as da memória para evitar gravações inadvertidas.
especificações para obter os limites exatos.
A memória de programa permite leituras e escritas de palavras. Existem muitos bits usados para controlar as operações de leitura e
O acesso à memória do programa permite o cálculo da soma de escrita em dados EEPROM e memória de programa FLASH. O bit
verificação e o armazenamento da tabela de calibração. Uma escrita EEPGD determina se o acesso será um programa ou acesso à
de byte ou palavra apaga automaticamente a localização e grava os memória de dados. Quando estiver desmarcado, quaisquer
novos dados (apagar antes de gravar). A gravação na memória do operações subsequentes funcionarão na memória de dados
programa interromperá a operação até que a gravação seja EEPROM. Quando definido, todas as operações subsequentes
concluída. A memória do programa não pode ser acessada durante operarão na memória do programa.
a gravação, portanto, o código não pode ser executado. Durante a As operações de leitura usam apenas um bit adicional, RD, que
operação de escrita, o oscilador continua a cronometrar os periféricos inicia a operação de leitura a partir do local de memória desejado.
e, portanto, eles continuam a operar. Os eventos de interrupção Uma vez definido este bit, o valor da localização de memória
serão detectados e essencialmente “enfileirados” até que a gravação desejada estará disponível nos registradores de dados.
seja concluída. Quando a gravação for concluída, a próxima Este bit não pode ser apagado pelo firmware. Ele é automaticamente
instrução no pipeline será executada e ocorrerá a ramificação para apagado no final da operação de leitura. Para leituras de memória
o endereço do vetor de interrupção. de dados EEPROM, os dados estarão disponíveis no registrador
Ao fazer interface com o bloco de memória de programa, os EEDATA no próximo ciclo de instrução após o bit RD ser definido.
registradores EEDATH:EEDATA formam uma palavra de dois bytes, Para leituras de memória de programa, os dados serão carregados
que contém os dados de 14 bits para leitura/gravação. Os nos registradores EEDATH:EEDATA, seguindo a segunda instrução
registradores EEADRH:EEADR formam uma palavra de dois bytes, após o bit RD ser energizado.
que contém o endereço de 13 bits do local FLASH que está sendo
acessado. Os dispositivos PIC16F870/871 possuem 2K palavras de
programa FLASH com faixa de endereços de 0h a 7FFh. Os bits
superiores não utilizados nos registradores EEDATH e EEDATA
são todos lidos como '0's.
PIC16F870/871
As operações de escrita têm dois bits de controle, WR e WREN, instruções fofas. A localização de memória desejada apontada
e dois bits de status, WRERR e EEIF. O bit WREN por EEADRH:EEADR será apagado. Em seguida, os dados
é usado para habilitar ou desabilitar a operação de gravação. Quando valor em EEDATH:EEDATA será programado. Quando
WREN estiver limpo, a operação de gravação será desabilitada. completo, o bit de flag EEIF será definido e o
Portanto, o bit WREN deve ser definido antes de executar microcontrolador continuará a executar o código.
uma operação de escrita. O bit WR é usado para iniciar a gravação O bit WRERR é usado para indicar quando o
Operação. Ele também é automaticamente limpo no final de
Os dispositivos PIC16F870/871 foram redefinidos durante uma gravação
a operação de escrita. O sinalizador de interrupção EEIF é usado para
Operação. WRERR deve ser apagado após a inicialização
determinar quando a gravação na memória é concluída. Esta bandeira
Redefinir. Depois disso, deve ser verificado em qualquer outro
deve ser apagado no software antes de definir o bit WR.
REDEFINIR. O bit WRERR é definido quando uma operação de gravação
Para memória de dados EEPROM, uma vez que o bit WREN e
é interrompido por um MCLR Reset, ou um WDT Time-out
o bit WR foi definido, o endereço de memória desejado
Reinicialize, durante a operação normal. Nestas situações, após um
no EEADR será apagado, seguido por uma gravação dos dados
RESET, o usuário deve verificar o bit WRERR
em EEDATA. Esta operação ocorre em paralelo com
e reescreva o local de memória, se definido. O conteúdo de
o microcontrolador continua a executar normalmente.
os registradores de dados, registradores de endereço e bit EPGD
Quando a gravação estiver concluída, o bit de sinalização EEIF será definido.
não são afetados por MCLR Reset ou WDT
Para memória de programa, uma vez que o bit WREN e o WR
Time-out Reset, durante a operação normal.
bit foi definido, o microcontrolador deixará de exe
pedaço 7 bit 0
1 = Inicia um ciclo de gravação. (O bit é apagado pelo hardware assim que a gravação estiver completa. 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
PIC16F870/871
3.3 Lendo a Memória de Dados Os passos para escrever na memória de dados EEPROM são:
2. Limpe o bit EEPGD para apontar para os dados EEPROM • Escreva 55h para EECON2 em duas etapas (primeiro para W,
memória. depois para EECON2)
3. Configure o bit RD para iniciar a operação de leitura. • Escreva AAh para EECON2 em duas etapas (primeiro para
W, então para EECON2)
4. Leia os dados do registro EEDATA.
• Defina o bit WR
EXEMPLO 3-1: LEITURA DE DADOS EEPROM 8. Habilite interrupções (se estiver usando interrupções).
aos SFR. O bit EPGD deve ser apagado e o MOVF ADDR, W ;Endereço para
MOVWF EEADR ;escrever para
O bit WREN deve ser definido para habilitar gravações. O bit WREN
VALOR MOVF, W ;Dados para
devem ser mantidos sempre claros, exceto ao escrever para
MOVWF EEDATA ;Escreva
os dados da EEPROM. O bit WR só pode ser definido se o
STATUS BSF, RP0 ;Banco 3
bit WREN foi definido em uma operação anterior (ou seja, eles
BCF EECON1, EEPGD ;Apontar para a memória de dados
ambos não podem ser definidos na mesma operação). A CARRIÇA BSF EECON1, WREN ;Ativar gravações
bit deve ser apagado pelo firmware após a gravação. ;Apenas desabilita interrupções
Limpando o bit WREN antes da gravação BCF INTCON, GIE ;se já habilitado,
completes não encerrará a gravação em andamento. ;caso contrário, descarte
MOVLW 0x55 ;Escrever 55h para
As gravações na memória de dados EEPROM também devem ser
MOVWF EECON2 ;EECON2
precedidas por uma sequência especial de instruções que evitam MOVLW 0xAA ;Escrever AAh para
operações de gravação inadvertidas. Esta é uma sequência de MOVWF EECON2 ;EECON2
cinco instruções que devem ser executadas sem interrupções. O firmware BSF EECON1, WR ;Inicia a operação de escrita
deve verificar se uma gravação não está em ;Ativa apenas interrupções
progresso antes de iniciar outro ciclo. BSF INTCON, GIE ;se estiver usando interrupções,
;caso contrário, descarte
BCF EECON1, WREN ;Desativar gravações
PIC16F870/871
3.5 Lendo a Memória do Programa FLASH 3.6 Escrevendo para o programa FLASH
Memória
A leitura da memória de programa FLASH é muito parecida com a de A gravação na memória de programa FLASH é única, pois
memória de dados EEPROM, apenas duas instruções NOP devem o microcontrolador não executa instruções enquanto
ser inserido após o bit RD ser definido. Essas duas instruções programação está acontecendo. O oscilador continua
ciclos que as instruções NOP executam, serão usados por funcionar e todos os periféricos continuarem a operar e
o microcontrolador para ler os dados fora do programa interrupções de fila, se habilitadas. Uma vez que a operação de gravação
memória e insira o valor no EEDATH:EEDATA completa (especificação D133), o processador começa
registros. Os dados estarão disponíveis após a segunda executando o código de onde parou. A outra diferença importante ao
instrução NOP. EEDATH e EEDATA manterão seus escrever na memória do programa FLASH é que o bit de configuração
valor até que outra operação de leitura seja iniciada, ou até WRT, quando limpo,
eles são escritos por firmware. impede qualquer gravação na memória do programa (consulte a Tabela 3-1).
Os passos para ler a memória do programa FLASH são: Assim como a memória de dados EEPROM, existem muitas etapas
1. Escreva o endereço para EEADRH:EEADR. Faço por escrito na memória de programa FLASH. Ambos os endereços
e os valores de dados devem ser gravados nos SFRs. o
certifique-se de que o endereço não é maior do que o
O bit EPGD deve ser definido e o bit WREN deve ser definido
tamanho da memória dos dispositivos PIC16F870/871.
para habilitar gravações. O bit WREN deve ser mantido livre em
2. Defina o bit EPGD para apontar para o programa FLASH
todas as vezes, exceto ao gravar no programa FLASH
memória.
memória. O bit WR só pode ser definido se o bit WREN
3. Configure o bit RD para iniciar a operação de leitura. foi definido em uma operação anterior (ou seja, ambos não podem
4. Execute duas instruções NOP para permitir que o ser definido na mesma operação). O bit WREN deve
microcontrolador para ler a memória do programa. em seguida, ser limpo pelo firmware após a gravação. Limpando o
5. Leia os dados do EEDATH:EEDATA O bit WREN antes que a gravação seja realmente concluída não
registros. encerrar a gravação em andamento.
PIC16F870/871
Na conclusão do ciclo de escrita, o bit WR é 3.8 Proteção Contra Espúrios
apagado e o bit de flag de interrupção EEIF é definido. (EEIF Grava
deve ser limpo pelo firmware.) Como o microcontrolador
não executa instruções durante o ciclo de escrita, o Existem condições em que o dispositivo pode não querer
firmware não precisa necessariamente verificar gravar na memória de dados EEPROM ou programa FLASH
EEIF, ou WR, para determinar se a gravação foi concluída. memória. Para proteger contra essas condições de gravação espúrias,
vários mecanismos foram incorporados ao
EXEMPLO 3-4: GRAVAÇÃO DO PROGRAMA FLASH dispositivos PIC16F870/871. Ao ligar, o bit WREN
é apagado e o temporizador de inicialização (se habilitado)
BSF ESTADO, RP1;
BCF
impede gravações.
STATUS, RP0 ;Banco 2
MOVF ADDRL, W. ;Escrever endereço A sequência de início de gravação e o bit WREN juntos,
MOVWF EEADR ;de desejado
ajudar a evitar gravações acidentais durante o brown-out,
MOVF ADDRH, W ;memória do programa falhas de energia ou mau funcionamento do firmware.
MOVWF EEADRH ;localização
VALOR MOVF, W ;Escrever valor para
MOVWF EEDATA ;programa em
3.9 Operação Enquanto Código Protegido
MOVF VALUEH, W ;memória desejada
Os dispositivos PIC16F870/871 possuem dois códigos de proteção
MOVWF EEDATH ;localização
BSF
mecanismos, um bit para memória de dados EEPROM e
STATUS, RP0 ;Banco 3
BSF dois bits para memória de programa FLASH. Os dados podem ser lidos
EECON1, EEPGD ;Aponta para a memória do programa
BSF EECON1, WREN ;Ativar gravações e gravados na memória de dados EEPROM, independentemente
;Apenas desabilita interrupções do estado do bit de proteção de código, CPD. Quando o código
BCF INTCON, GIE ;se já habilitado, proteção está habilitada e CPD desmarcado, externo
;caso contrário, descarte o acesso via ICSP está desabilitado, independente do estado de
MOVLW 0x55 ;Escrever 55h para o código de memória do programa protege os bits. Isso impede
MOVWF EECON2 ;EECON2
o conteúdo da memória de dados EEPROM seja lido
MOVLW 0xAA ;Escrever AAh para fora do aparelho.
MOVWF EECON2 ;EECON2
BSF EECON1, WR ;Inicia a operação de escrita O estado do código de memória do programa protege os bits,
NOP ;Dois NOPs para permitir micro CP0 e CP1, não afetam a execução de instruções fora da memória do
NOP ;para configurar para escrever programa. O PIC16F870/871
;Ativa apenas interrupções os dispositivos podem sempre ler os valores na memória do programa,
BSF INTCON, GIE ;se estiver usando interrupções, independentemente do estado dos bits de proteção do código.
;caso contrário, descarte
No entanto, o estado do código protege os bits e o
BCF EECON1, WREN ;Desabilita gravações O bit WRT terá efeitos diferentes na gravação no programa
memória. A Tabela 4-1 mostra o efeito do código de proteção
bits e o bit WRT na memória do programa.
3.7 Verificação de Gravação
Uma vez que a proteção de código tenha sido habilitada para qualquer
Os dispositivos PIC16F870/871 não verificam automaticamente o valor Memória de dados EEPROM ou memória de programa FLASH,
escrito durante uma operação de escrita. Dependendo da aplicação, apenas um apagamento completo de todo o dispositivo desativará o código
boas práticas de programação podem proteção.
ditar que o valor escrito na memória seja verificado
contra o valor original. Isso deve ser usado em aplicações onde
gravações excessivas podem sobrecarregar bits próximos ao
limites de resistência especificados.
PIC16F870/871
3.10 Proteção contra gravação de memória de
programa FLASH
Valor ativado
Valor em:
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
REINICIA
0Bh, 8Bh, INTCON GIE ISSO É T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u
10Bh, 18Bh
10º Registrador de Endereço EEADR EEPROM, Byte Baixo xxxx xxxx uuuu uuuu
10Fh EEADRH — — — Endereço EEPROM, High Byte xxxx xxxx uuuu uuuu
10 canais Registro de dados EEDATA EEPROM, byte baixo xxxx xxxx uuuu uuuu
10 Eh EEDATH — — Registrador de dados EEPROM, High Byte xxxx xxxx uuuu uuuu
18 canais EECON1 EEPGD — — — WRERR WREN WR RD x--- x000 x--- u000
18º — —
EECON2 EEPROM Control Register2 (não é um registro físico)
Lenda: x = desconhecido, u = inalterado, r = reservado, - = não implementado, lido como '0'.
As células sombreadas não são usadas durante o acesso FLASH/EEPROM.
Nota 1: Esses bits são reservados; sempre mantenha esses bits claros.
PIC16F870/871
4.0 PORTAS E/S FIGURA 4-1: DIAGRAMA DE BLOCOS DE
RA3: PINOS RA0 E RA5
Alguns pinos para essas portas de E/S são multiplexados com um
função alternativa para os recursos periféricos no Dados
Ônibus
dispositivo. Em geral, quando um periférico é habilitado, esse D Q
O pino não pode ser usado como um pino de E/S de uso geral.
VDD
WR
Informações adicionais sobre portas de E/S podem ser encontradas no Porta
Manual de referência da família de MCU de médio porte PIC® CKQ
P
(DS33023). Trava de dados
N
4.1 PORTA e o Registo TRISA D Q Pino de E/S (1)
enquanto escrever para ele irá escrever para a trava da porta. Tudo escrito Q D
operações são operações de leitura-modificação-gravação. Portanto,
uma gravação em uma porta implica que os pinos da porta são lidos, o
DENTRO
valor é modificado e, em seguida, gravado na trava de dados da porta.
PIC16F870/871
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
REINICIA
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
9Fh ADCON1 ADFM — — — PCFG3 PCFG2 PCFG1 PCFG0 --0- 0000 --0- 0000
PIC16F870/871
4.2 PORTB e o Registro TRISB Essa interrupção pode despertar o dispositivo do SLEEP. O usuário, na
Rotina de Serviço de Interrupção, pode limpar a interrupção da seguinte
PORTB é uma porta bidirecional de 8 bits de largura. O registrador de 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 de Programação que o bit de sinalização RBIF seja apagado.
de Baixa Tensão: RB3/PGM, RB6/PGC e RB7/PGD. As funções O recurso de interrupção na alteração é recomendado para a operação de
alternativas desses pinos são descritas na Seção de Recursos Especiais. ativação ao pressionar a tecla e operações em que PORTB é usado
apenas para o recurso de interrupção na alteração. A sondagem de
Cada um dos pinos PORTB tem um pull-up interno fraco. Um único bit de PORTB não é recomendada ao usar o recurso de interrupção na alteração.
controle pode ativar todos os pull-ups. Isto é feito limpando o bit RBPU
(OPTION_REG<7>). O pull-up fraco é desligado automaticamente quando Esse recurso de interrupção na incompatibilidade, juntamente com pull-
o pino da porta é configurado como saída. Os pull-ups são desabilitados ups configuráveis por software nesses quatro pinos, permite uma interface
em um Power-on Reset. fácil com um teclado e possibilita o despertar ao pressionar a tecla.
Consulte o Manual do Controle Integrado, “Implementando o Despertar ao
Pressionar a Tecla” (AN552).
FIGURA 4-3: DIAGRAMA DE BLOCOS DE
PINS RB3:RB0
RB0/INT é um pino de entrada de interrupção externa e é configurado
VDD usando o bit INTEDG (OPTION_REG<6>).
RBPU(2) Fraco RB0/INT é discutido em detalhes na Seção 11.10.1.
P
Puxar para cima
Trava de dados
Barramento de dados
DQ
FIGURA 4-4: DIAGRAMA DE BLOCOS DE
PINS RB7:RB4
Porta WR Pino de E/S (1)
CK VDD
CK Amortecedor
DQ
Trinco TRIS
RD TRIS
DQ
QD
WR TRIS TTL
CK
Entrada
Porta RD DENTRO
Amortecedor ST
Amortecedor
RB0/INT
RD TRIS Robusto
RB3/PGM
Gatilho Schmitt Porta RD QD
Amortecedor
Nota 1: Os pinos de E/S possuem proteção de diodo para VDD e VSS. Porta RD DENTRO Q1
conjunto RBIF
2: Para habilitar pull-ups fracos, defina o(s) bit(s) TRIS
apropriado(s) e limpe o bit RBPU (OPTION_REG<7>).
De outro QD
Quatro dos pinos do PORTB, RB7:RB4, possuem um recurso de pinos RB7:RB4 Porta RD
mudança de interrupção. Apenas os pinos configurados como entradas DENTRO
Q3
podem causar esta interrupção (ou seja, qualquer pino RB7:RB4
RB7:RB6 no modo de programação serial
configurado como uma saída é excluído da comparação de interrupção na
mudança). Os pinos de entrada (de RB7:RB4) são comparados com o Nota 1: Os pinos de E/S possuem proteção de diodo para VDD e VSS.
valor antigo travado na última leitura de PORTB. As saídas de 2: Para habilitar pull-ups fracos, defina o(s) bit(s) TRIS
apropriado(s) e limpe o bit RBPU (OPTION_REG<7>).
“incompatibilidade” de RB7:RB4 são combinadas em OR para gerar a
Interrupção de Mudança de Porta RB com o bit de flag RBIF (INTCON<0>).
PIC16F870/871
TABELA 4-3: FUNÇÕES DA PORTA
RB0/INT bit0 TTL/ST(1) Pino de entrada/saída ou entrada de interrupção externa. Pull-up fraco
programável por software interno.
RB1 bit1 TTL Pino de entrada/saída. Pull-up fraco programável por software interno.
RB2 bit2 TTL Pino de entrada/saída. Pull-up fraco programável por software interno.
RB3/PGM bit3 TTL/ST(1) Pino de entrada/saída ou pino de programação no modo LVP. Pull-up fraco
programável por software interno.
RB4 bit4 TTL Pino de entrada/saída (com interrupção na mudança). Pull-up fraco programável por software
interno.
RB5 bit5 TTL Pino de entrada/saída (com interrupção na mudança). Pull-up fraco programável por software
interno.
RB6/PGC bit6 TTL/ST(2) Pino de entrada/saída (com interrupção na mudança) ou pino do Depurador In-Circuit.
Pull-up fraco programável por software interno. Relógio de programação serial.
RB7/PGD bit7 TTL/ST(2) Pino de entrada/saída (com interrupção na mudança) ou pino do Depurador In-Circuit.
Pull-up fraco programável por software interno. Dados de programação serial.
Legenda: TTL = entrada TTL, ST = entrada Schmitt Trigger
Nota 1: Este buffer é uma entrada Schmitt Trigger quando configurado como interrupção externa ou modo LVP.
2: Este buffer é uma entrada Schmitt Trigger quando usado no modo de programação serial.
06h, 106h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx xxxx uuuu uuuu
86h, 186h TRISB Registro de direção de dados PORTB 1111 1111 1111 1111
81h, 181h OPTION_REG 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.
PIC16F870/871
4.3 PORTC e o Registro TRISC FIGURA 4-5: DIAGRAMA DE BLOCO DA PORTA
(SAÍDA PERIFÉRICA
PORTC é uma porta bidirecional de 8 bits de largura. O registrador
SOBREPOR)
de direção de dados correspondente é TRISC. Definir um
Seleção de Porta/Periférico(2)
O bit TRISC (= 1) fará o PORTC correspondente
pin uma entrada (ou seja, coloque o driver de saída correspondente em Saída de dados periféricos VDD
0
um modo de alta impedância). Limpar um bit TRISC (= 0) Barramento de dados
DQ P
faça do pino PORTC correspondente uma saída (ou seja, coloque WR 1
PORTA
o conteúdo da trava de saída no pino selecionado). CKQ
RC0/T1OSO/T1CKI bit0 ST Pino da porta de entrada/saída ou saída do oscilador Timer1/entrada do relógio Timer1.
RC1/T1AXIS bit1 ST Pino da porta de entrada/saída ou entrada do oscilador Timer1.
RC2/CCP1 bit2 ST Pino da porta de entrada/saída ou entrada Capture1/saída Compare1/
Saída PWM1.
RC3 bit3 ST Pino da porta de entrada/saída.
07h PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx uuuu uuuu
87h 1111 1111 1111 1111
Registro de Direção de Dados TRISC PORTC
Legenda: x = desconhecido, u = inalterado
PIC16F870/871
4.4 Registros PORTD e TRISD FIGURA 4-6: DIAGRAMA DE BLOCO PORTD
(NO MODO DE PORTA DE E/S)
Esta seção não é aplicável ao PIC16F870.
Dados
PORTD é uma porta de 8 bits com buffers de entrada Schmitt Trigger. Ônibus
D Q
Cada pino é configurável individualmente como entrada ou
WR
resultado. Porta Pino de E/S (1)
CK
PORTD pode ser configurado como uma porta de microprocessador de
Trava de dados
8 bits de largura (porta escrava paralela) definindo o bit de controle
PSPMODE (TRISE<4>). Neste modo, os buffers de entrada DQ
são TTL. WR
TRIS
CK Schmitt
Acionar
Trinco TRIS Entrada
Amortecedor
RD TRIS
Q D
DENTRO
DENTRO
Porta RD
RD0/PSP0 bit0 ST/TTL(1) Pino da porta de entrada/saída ou porta paralela escrava bit0.
RD1/PSP1 bit1 ST/TTL(1) Pino da porta de entrada/saída ou bit1 da porta paralela escrava.
RD2/PSP2 bit2 ST/TTL(1) Pino da porta de entrada/saída ou bit2 da porta paralela escrava.
RD3/PSP3 bit3 ST/TTL(1) Pino da porta de entrada/saída ou bit3 da porta paralela escrava.
RD4/PSP4 bit4 ST/TTL(1) Pino da porta de entrada/saída ou porta paralela escrava bit4.
RD5/PSP5 bit5 ST/TTL(1) Pino da porta de entrada/saída ou porta paralela escrava bit5.
RD6/PSP6 bit6 ST/TTL(1) Pino da porta de entrada/saída ou porta paralela escrava bit6.
RD7/PSP7 bit7 ST/TTL(1) Pino da porta de entrada/saída ou porta paralela escrava bit7.
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
REINICIA
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 TRÊS IBF OBF IBOV PSPMODE — Bits de direção de dados PORT 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.
PIC16F870/871
4.5 Registro PORTE e TRISE FIGURA 4-7: DIAGRAMA DE BLOCO DE PORTA
Trava de dados
I/O PORTE torna-se entradas de controle para a porta do microprocessador
quando o bit PSPMODE (TRISE<4>) é definido. Neste modo, o usuário DQ
TRISE controla a direção dos pinos RE, mesmo quando estão sendo
DENTRO
PIC16F870/871
REGISTRO 4-1: REGISTRO TRISE (ENDEREÇO: 89h)
R-0 R-0 R/W-0 R/W-0 U-0 R/W-1 R/W-1 R/W-1
pedaço 7 bit 0
1 = Uma palavra foi recebida e está esperando para ser lida pela CPU
0 = Nenhuma palavra foi recebida
1 = Ocorreu uma gravação quando uma palavra inserida anteriormente não foi lida (deve ser
apagada no software)
0 = Não ocorreu estouro
1 = Entrada
0 = Saída
pedaço 1 Bit1: Bit de controle de direção para pino RE1/WR/AN6
1 = Entrada
0 = Saída
bit 0 Bit0: 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
PIC16F870/871
TABELA 4-9: FUNÇÕES DE PORTA
RE0/RD/AN5 bit0 ST/TTL(1) Pino da porta de entrada/saída ou entrada de controle de leitura no modo Parallel Slave Port ou
entrada analógica:
RD
de entrada são Schmitt Triggers quando em modo I/O e buffers TTL quando em modo Parallel Slave Port.
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
REINICIA
89h TRISE IBF OBF IBOV PSPMODE — Bits de direção de dados PORT 0000 -111 0000 -111
9Fh ADCON1 ADFM — — — PCFG3 PCFG2 PCFG1 PCFG0 --0- 0000 --0- 0000
Legenda: x = desconhecido, u = inalterado, - = não implementado lido como '0'. As células sombreadas não são usadas pelo PORTE.
PIC16F870/871
4.6 Porta Escrava Paralela FIGURA 4-8: PORTO E PORTO
DIAGRAMA DE BLOCO
A Porta Escrava Paralela não é implementada no PIC16F870.
(PORTO ESCRAVO PARALELO)
DQ
é definido. No modo Slave, é legível e gravável de forma assíncrona
WR
pelo mundo externo através do pino de entrada de controle RD RE0/ pino
Porta
CK RDx
RD e do pino de entrada de controle WR RE1/WR.
TTL
bit PSPMODE permite que o pino da porta RE0/RD seja a entrada Porta
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
anteriormente, ele deve ser limpo no firmware.
PIC16F870/871
FIGURA 4-9: 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
REINICIA
08h Trava de dados da porta PORTD quando gravada: pinos da 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 ADIF RCIF TXIF — CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000
8 canais TORTA1 RCIE DE FRANGO PSPIE TXIE — CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000
9Fh ADCON1 ADFM — — — PCFG3 PCFG2 PCFG1 PCFG0 --0- 0000 --0- 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.
PIC16F870/871
NOTAS:
PIC16F870/871
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 a 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 clock externa são
discutidas em detalhes na Seção 5.2.
• Prescaler programável por software de 8 bits •
Seleção de relógio interno ou externo
O prescaler é mutuamente compartilhado exclusivamente entre o
• Interrupção no overflow de FFh a 00h • Seleção
módulo Timer0 e o Watchdog Timer. O pré-calador não é legível ou
de borda para relógio externo gravável. A seção 5.3 detalha a operação do prescaler.
Barramento de dados
CLKO (= ESCURO/4)
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
T0IF no estouro
PRÉ-CALCADOR
0
Pré-escalador de 8 bits
M
DENTRO
1 X
cão de guarda 8
Cronômetro
8 - a - 1MUX PS2:PS0
PSA
0 1
Bit de habilitação WDT
MUX PSA
WDT
Tempo esgotado
PIC16F870/871
5.2 Usando Timer0 com um relógio 5.3 Pré-escalador
externo
Existe apenas um prescaler disponível, que é mutuamente
Quando nenhum prescaler é usado, a entrada de clock externa é compartilhado exclusivamente entre o módulo Timer0 e o
o mesmo que a saída do prescaler. A sincronização Cronômetro de cão de guarda. Uma atribuição de pré-escalador para o
de T0CKI com os relógios de fase internos é obtido pela amostragem O módulo Timer0 significa que não há prescaler para o
da saída do prescaler no Q2 e Watchdog Timer e vice-versa. Este pré-escalador não é
Q4 ciclos dos relógios de fase internos. Portanto, é legível ou gravável (consulte a Figura 5-1).
necessário que o T0CKI seja alto por pelo menos 2 TOSC (e Os bits PSA e PS2:PS0 (OPTION_REG<3:0>)
um pequeno atraso RC de 20 ns) e baixo por pelo menos 2 TOSC determinar a atribuição do prescaler e a proporção do prescale.
(e um pequeno atraso RC de 20 ns). Consulte a parte elétrica
Quando atribuído ao módulo Timer0, todas as instruções
especificação do dispositivo desejado.
escrevendo no registrador TMR0 (por exemplo, CLRF1, MOVWF1,
BSF1,x....etc.) limpará o prescaler. Quando atribuído
para WDT, uma instrução CLRWDT limpará o prescaler
juntamente com o Watchdog Timer. O pré-escalador não é
legível ou gravável.
pedaço 7 bit 0
pedaço 7 RBPU
bocado 6 INTEG
000 1: 2 1: 1
001 1: 4 1: 2
010 1:8 1: 4
011 1: 16 1:8
100 1: 32 1: 16
101 1: 64 1: 32
110 1: 128 1: 64
111 1: 256 1: 128
Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido
Nota: Para evitar um RESET não intencional do dispositivo, a sequência de instruções mostrada no Manual de Referência da Família PIC® Mid-
Range MCU (DS33023) deve ser executada ao alterar a atribuição do prescaler de Timer0
ao WDT. Esta sequência deve ser seguida mesmo que o WDT esteja desabilitado.
PIC16F870/871
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
REINICIA
01h, 101h TMR0 Registro do Módulo Timer0 xxxx xxxx uuuu uuuu
0Bh,8Bh, INTCON GIE PEIE T0IE INTE RBIE T0IF 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.
PIC16F870/871
NOTAS:
PIC16F870/871
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 RESET” interna. este
é gerado no estouro, que é travado na interrupção RESET pode ser gerado por qualquer um dos dois CCP
bit de sinalizador, TMR1IF (PIR1<0>). Esta interrupção pode ser módulos (Seção 8.0). O registro 6-1 mostra o Timer1
ativado/desativado configurando/limpando a interrupção TMR1 registro de controle.
bit de habilitação, TMR1IE (PIE1<0>). Quando o oscilador Timer1 está habilitado (T1OSCEN é
Timer1 pode operar em um dos dois modos: set), os pinos RC1/T1OSI e RC0/T1OSO/T1CKI
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
o Manual de referência da família de MCUs de médio porte PIC®
bit, TMR1CS (T1CON<1>).
(DS33023).
pedaço 7 bit 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
PIC16F870/871
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á
Sincronizado sincronizada com os relógios de fase internos. A sincronização é
feita após a etapa de prescaler. O estágio de prescaler é um contador
O modo contador é selecionado configurando o bit TMR1CS. Neste de ondulação assíncrono.
modo, o temporizador é incrementado a cada flanco ascendente da
Nesta configuração, durante o modo SLEEP, o Timer1 não será
entrada de clock no pino RC1/T1OSI, quando o bit T1OSCEN é
incrementado mesmo que o relógio externo esteja presente, pois o
definido, ou no pino RC0/T1OSO/T1CKI, quando o bit T1OSCEN é
circuito de sincronização está desligado. O prescaler, no entanto,
apagado.
continuará a incrementar.
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/T1AXIS 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.
PIC16F870/871
6.4 Operação do Timer1 no Modo TABELA 6-1: SELEÇÃO DE CAPACITOR PARA
No modo Contador Assíncrono, Timer1 não pode ser 32,768 kHz Epson C-001R32,768K-A ± 20 PPM
usado como base de tempo para capturar ou comparar operações. 100 kHz Epson C-2 100,00 KC-P ± 20 PPM
200 kHz STD XTL 200.000 kHz ± 20 PPM
6.4.1 TEMPORIZADOR DE LEITURA E ESCRITA 1 IN
CONTADOR ASSÍNCRONO Nota 1: A capacitância mais alta aumenta a estabilidade do
MODO oscilador, mas também aumenta o tempo de
inicialização.
Lendo TMR1H ou TMR1L enquanto o temporizador está em execução
2: Como cada ressonador/cristal tem seu próprio
de um relógio assíncrono externo, garantirá um
características, o usuário deve consultar o fabricante
leitura válida (cuidada no hardware). No entanto, o
do ressonador/cristal para valores apropriados de
usuário deve ter em mente que a leitura do temporizador de 16 bits
componentes externos.
em dois valores de 8 bits, apresenta alguns problemas, uma vez que
o temporizador pode estourar entre as leituras.
6.6 Redefinindo o temporizador1 usando um CCP
Para gravações, é recomendado que o usuário simplesmente pare
o temporizador e escreva os valores desejados. Uma contenção de Saída do gatilho
escrita pode ocorrer escrevendo nos registradores do temporizador, enquanto Se o módulo CCP1 estiver configurado no modo Comparar para
o registrador é incrementado. Isso pode produzir um gerar um “gatilho de evento especial” (CCP1M3:CCP1M0
valor imprevisível no registro do temporizador. = 1011), este sinal irá reiniciar o Timer1.
A leitura do valor de 16 bits requer alguns cuidados.
Nota: Os acionadores de eventos especiais do CCP1
Exemplos 12-2 e 12-3 no PIC® Mid-Range MCU
o módulo não definirá o bit de sinalização de interrupção
Manual de referência da família (DS33023) mostra como
TMR1IF (PIR1<0>).
ler e escrever Timer1 quando estiver rodando em
Modo assíncrono. O Timer1 deve ser configurado para o modo Timer ou Synchronized
Counter para aproveitar esse recurso.
6.5 Temporizador1 Oscilador Se o Timer1 estiver sendo executado no modo Contador Assíncrono,
esta operação RESET pode não funcionar.
Um circuito oscilador de cristal é embutido entre os pinos T1OSI No caso de uma gravação no Timer1 coincidir com um
(entrada) e T1OSO (saída do amplificador). Ele é habilitado por
acionador de evento especial do CCP1, a gravação levará
ajuste do bit de controle, T1OSCEN (T1CON<3>). O oscilador é um
precedência.
oscilador de baixa potência, classificado até 200 kHz. Será
continuar a correr durante o SONO. É destinado principalmente Neste modo de operação, o registro CCPRH:CCPRL
para uso com um cristal de 32 kHz. A Tabela 6-1 mostra o par efetivamente se torna o registrador de período para Timer1.
PIC16F870/871
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 especial
acionador de evento.
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
REINICIA
0Bh,8Bh, INTCON GIE ASSIM T0IE NÃO RBIE T0IF INTF RBIF 0000 000x 0000 000u
10Bh, 18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF — CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
8 canais TORTA1 PSPIE(1) RCIE DE FRANGO TXIE — CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
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: Bits PSPIE e PSPIF são reservados no PIC16F870; sempre mantenha esses bits claros.
PIC16F870/871
7.0 MÓDULO DO TEMPORIZADOR 2 O registro 7-1 mostra o registro de controle do Timer2.
O clock de entrada (FOSC/4) tem uma opção de pré-escala de 1:1, Define o sinalizador
TMR2
bit TMR2IF
ou
1:4, 1:16, selecionado por bits de controle Saída(1)
T2CKPS1:T2CKPS0 (T2CON<1:0>).
REDEFINIR Pré-escalador
O módulo Timer2 possui um registrador de período de 8 bits, PR2. Registro TMR2 ESCURO/4
1:1, 1:4, 1:16
Timer2 incrementa a partir de 00h até corresponder a PR2 e
Pós-escalador
2
em seguida, redefine para 00h no próximo ciclo de incremento. PR2 é Comparador
1:1 para 1:16 EQ
um registrador legível e gravável. O registro PR2 é T2CKPS1:
inicializado para FFh no RESET. 4 T2CKPS0
PR2 Reg
T2OUTPS3:
A saída de correspondência do TMR2 passa por um 4-bit
T2OUTPS0
postscaler (que fornece uma escala de 1:1 a 1:16 inclusive)
para gerar uma interrupção TMR2 (travada no bit de flag Nota 1: A saída do registrador TMR2 pode ser selecionada por software pelo módulo
SSP como um relógio baud.
TMR2IF (PIR1<1>)).
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
PIC16F870/871
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 mudança
relógio.
• uma gravação no registro TMR2
• uma gravação no registrador T2CON
• qualquer dispositivo RESET (POR, MCLR Reset, WDT
Redefinir ou BOR)
TMR2 não é apagado quando T2CON é escrito.
0Bh,8Bh, INTCON GIE ASSIM T0IE NÃO RBIE T0IF INTF RBIF 0000 000x 0000 000u
10Bh,18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF — CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
8 canais TORTA1 PSPIE(1) ADIE RCIE TXIE — CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
11h Registro do Módulo TMR2 Timer2 0000 0000 0000 0000
12h T2CON — TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 -000 0000
92h PR2 Registro do Período do Timer2 1111 1111 1111 1111
Legenda: x = desconhecido, u = inalterado, - = não implementado, lido como '0'. As células sombreadas não são usadas pelo módulo Timer2.
Nota 1: Os bits PSPIE e PSPIF são reservados no PIC16F870; sempre mantenha esses bits claros.
PIC16F870/871
8.0 MÓDULOS DE CAPTURA/COMPARAÇÃO/PWM Informações adicionais sobre os módulos CCP estão disponíveis em
o Manual de referência da família de MCUs de médio porte PIC®
(DS33023) e na nota de aplicação AN594, “Usando o
Cada módulo Capture/Compare/PWM (CCP) contém Módulos CCP” (DS00594).
um registrador de 16 bits que pode operar como:
TABELA 8-1: MODO CCP - TEMPORIZADOR
• Registro de captura de 16 bits
RECURSOS NECESSÁRIOS
• Registro de comparação de 16 bits
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 em CCPR1L.
pouco 3-0 CCP1M3:CCP1M0: Bits de seleção de modo CCP1
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
PIC16F870/871
8.2 Modo de Captura 8.2.2 SELEÇÃO DO MODO TIMER1
No modo Capture, CCPR1H:CCPR1L captura o O Timer1 deve estar funcionando no modo Timer, ou modo Synchro
nized Counter, para que o módulo CCP use o
Valor de 16 bits do registrador TMR1 quando ocorre um evento
no pino RC2/CCP1. Um evento é definido como um dos recurso de captura. No modo Contador Assíncrono, o
O tipo de evento é configurado pelos bits de controle deve limpar o bit de flag, CCP1IF, seguindo qualquer
No modo Capture, o pino RC2/CCP1 deve ser Alternar de um prescaler de captura para outro pode
configurado como uma entrada definindo o bit TRISC<2>. gerar uma interrupção. Além disso, o contador do prescaler
não ser desmarcada, portanto, a primeira captura pode ser de
Nota: Se o pino RC2/CCP1 estiver configurado como
um pré-escalador diferente de zero. O Exemplo 8-1 mostra o método
saída, uma gravação na porta pode causar um
recomendado para alternar entre pré-calers de captura. Este exemplo
condição de captura.
também limpa o contador do prescaler
e não irá gerar a interrupção “falsa”.
FIGURA 8-1: MODO DE CAPTURA
BLOCO DE OPERAÇÃO
EXEMPLO 8-1: MUDANÇA ENTRE
DIAGRAMA
CAPTURA DE PRÉ-ESCALADORES
RC2/CCP1 Definir bit de sinalização CCP1IF
CLRF CCP1CON ; Desligue o módulo CCP
alfinete (PIR1<2>)
Pré-escalador
MOVLW NEW_CAPT_PS ; Carregue o registro W com
ÿ 1, 4, 16 ; o novo pré-escalador
CCPR1H CCPR1L ; mover valor e CCP ON
MOVWF CCP1CON ; Carregue o CCP1CON com este
e Capturar ; valor
Permitir
Detecção de borda
TMR1H TMR1L
CCP1CON<3:0>
Perguntas
PIC16F870/871
8.3 Modo Comparar 8.3.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.3.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.3.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 utilizado para iniciar uma ação.
DIAGRAMA A saída de disparo de evento especial do CCP1 reinicializa o par
de registradores TMR1 e inicia uma conversão A/D (se o módulo
O disparo de evento especial
irá: resetar o Timer1, mas não definir o bit de sinalização de interrupção TMR1IF A/D estiver habilitado). Isso permite que o registrador CCPR1 seja
(PIR1<0>), e definir o bit GO/DONE (ADCON0<2>).
efetivamente um registrador de período programável de 16 bits
para o Timer1.
Acionador de evento especial
PIC16F870/871
8.4 Modo PWM (PWM) 8.4.1 PERÍODO PWM
No modo Pulse Width Modulation, o pino CCP1 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.4.3. CCPR1H
FIGURA 8-3: BLOCO PWM SIMPLIFICADO Nota: O postscaler Timer2 (consulte a Seção 7.1) não é usado na
DIAGRAMA determinação da frequência PWM. O postscaler pode
ESCURO )
log(FPWM
Resolução = bits
Ciclo de trabalho
log(2)
TMR2 = PR2
Nota: Se o valor do ciclo de trabalho PWM for maior que o período
TMR2 = PR2
PIC16F870/871
8.4.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
REINICIA
0Bh,8Bh, INTCON GIE COMO T0IE NÃO RBIE T0IF INTF RBIF 0000 000x 0000 000u
10Bh, 18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF — CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
8 canais TORTA1 PSPIE(1) RCIE DE FRANGO TXIE — CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
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
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 no PIC16F870; sempre mantenha esses bits claros.
PIC16F870/871
TABELA 8-4: 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
REINICIA
0Bh,8Bh, INTCON GIE ASSIM T0IE NÃO RBIE T0IF INTF RBIF 0000 000x 0000 000u
10Bh, 18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF — CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
8 canais TORTA1 PSPIE(1) ADIE RCIE TXIE — CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
87h Registro de Direção de Dados TRISC PORTC 1111 1111 1111 1111
11h Registro do Módulo TMR2 Timer2 0000 0000 0000 0000
92h PR2 Registro de Período do Módulo Timer2 1111 1111 1111 1111
12h T2CON — TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 -000 0000
15h CCPR1L Captura/Comparação/Registro PWM1 (LSB) xxxx xxxx uuuu uuuu
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: Os bits PSPIE e PSPIF são reservados no PIC16F870; sempre mantenha esses bits claros.
PIC16F870/871
9.0 UNIVERSAL ENDEREÇAVEL A USART pode ser configurada nos seguintes modos:
SÍNCRONO • Assíncrono (full-duplex)
RECEPTOR ASSÍNCRONO • Síncrono - Mestre (half-duplex)
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 usado neste modo
1 = TSR vazio
0 = TSR cheio
bit 0 TX9D: 9º bit de Transmit Data, pode ser bit de paridade
Lenda:
R = bit legível W = bit gravável U = bit não implementado, lido como '0'
- n = Valor em POR '1' = Bit está definido '0' = Bit é apagado x = Bit é desconhecido
PIC16F870/871
REGISTRO 9-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 = Desativa 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
PIC16F870/871
9.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 9-1 mostra a fórmula para cálculo do
9.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 9-1. A partir disso, o erro de
taxa de transmissão pode ser determinada.
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
REINICIA
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.
PIC16F870/871
TABELA 9-3: TAXAS DE BAUD PARA MODO ASSÍNCRONO (BRGH = 0)
ESCURO = 20 MHz ESCURO = 16 MHz ESCURO = 10 MHz
BAUD
AVALIAR SPBRG SPBRG SPBRG
% % %
(K) valor valor valor
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
PIC16F870/871
0,3 - - - - - - - - -
1.2 - - - - - - - - -
0,3 - - - - - -
PIC16F870/871
9.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 sem retorno a zero (NRZ) (um estado do bit de habilitação TXIE e não pode ser apagado no software. Ele
bit START, oito ou nove bits de dados e um bit STOP). O formato de dados será redefinido somente quando novos dados forem carregados no registro
mais comum é de 8 bits. Um gerador de taxa de transmissão de 8 bits TXREG. Enquanto o bit de flag TXIF indica o status do registrador TXREG,
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). O modo assíncrono é interrompido durante o Nota 1: O registrador TSR não é mapeado na memória de dados,
O modo assíncrono é selecionado limpando o bit SYNC (TXSTA<4>). A transmissão é habilitada configurando o bit de habilitação TXEN
(TXSTA<5>). A transmissão real não ocorrerá até que o registrador TXREG
O módulo USART Assíncrono consiste nos seguintes elementos importantes: tenha sido carregado com dados e o gerador de taxa de transmissão (BRG)
tenha produzido um relógio de deslocamento (Figura 9-2). A transmissão
também pode ser iniciada carregando primeiro o registrador TXREG e depois
• Gerador de taxa de transmissão
configurando o bit de habilitação TXEN. Normalmente, quando a transmissão
• Circuito de Amostragem é iniciada, o registrador TSR está vazio. Nesse ponto, a transferência para o
• Transmissor Assíncrono • Receptor registrador TXREG resultará em uma transferência imediata para o TSR,
Assíncrono resultando em um TXREG vazio. Uma transferência back-to-back é assim
possível (Figura 9-3).
9.2.1 USART ASSÍNCRONO
TRANSMISSOR 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 9-1. O
pino RC6/TX/CK reverterá para alta impedância.
coração do transmissor é o registrador de deslocamento de transmissão
(serial) (TSR). O registrador Shift obtém seus dados do buffer de transmissão
de leitura/gravação, TXREG. O registrador TXREG é carregado com dados Para selecionar a transmissão de 9 bits, o bit de transmissão TX9
no software. O registrador TSR não é carregado até que o bit STOP tenha (TXSTA<6>) deve ser definido e o nono bit deve ser escrito em TX9D
sido transmitido do carregamento anterior. Assim que o bit STOP é (TXSTA<0>). O nono bit deve ser escrito antes de escrever os dados de 8
transmitido, o TSR é carregado com novos dados do registrador TXREG (se bits no registrador TXREG. Isso ocorre porque uma gravação de dados no
disponível). Uma vez que o registrador TXREG transfere os dados para o registrador TXREG pode resultar em uma transferência imediata dos dados
registrador TSR (ocorre em um TCY), o registrador TXREG fica vazio e o bit para o registrador TSR (se o TSR estiver vazio). Nesse caso, um nono bit de
sinalizador TXIF (PIR1<4>) é definido. Esta interrupção pode ser dados incorreto pode ser carregado no registrador TSR.
Barramento de dados
TRMT ESPANHA
SPBRG
TX9
Gerador de taxa de transmissão
TX9D
PIC16F870/871
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,
defina o bit BRGH (Seção 9.1). 7. Carregar dados para o registro TXREG (inicia
2. Habilite a porta serial assíncrona limpando transmissão).
bit SYNC e bit de configuração SPEN. 8. Se estiver usando interrupções, certifique-se de que GIE e PEIE
3. Se as interrupções forem desejadas, defina o bit de habilitação (bits 7 e 6) do registrador INTCON são energizados.
ESSA.
RC6/TX/CK (pino)
INICIAR Bit Bit 0 Bit 1 Bit 7/8 STOP Bit
Palavra 1
bit TXIF
(Transmissão Buffer
Reg. Bandeira vazia)
RC6/TX/CK (pino) INICIAR Bit Bit 0 Bit 1 Bit 7/8 STOP Bit START Bit Bit 0
Palavra 1 Palavra 2
bit TXIF
(Interromper Reg. Flag)
0Bh, 8Bh, INTCON GIE ASSIM NÃO RBI T0IF INTF R0IF 0000 000x 0000 000u
10Bh,18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF — CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
18h RCSTA SPEN RX9 SREN CREN — FERR OERR RX9D 0000 -00x 0000 -00x
19h Registro de Transmissão TXREG USART 0000 0000 0000 0000
8 canais TORTA1 PSPIE(1) FRANGO RCIE TXIE — CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
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 no PIC16F870; sempre mantenha esses bits claros.
PIC16F870/871
9.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, se o
O diagrama de blocos do receptor é mostrado na Figura 9-4. Os
registrador RCREG ainda estiver cheio, o bit de erro de overrun
dados são recebidos no pino RC7/RX/DT e acionam o bloco de
OERR (RCSTA<1>) será definido. A palavra no RSR será perdida.
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 taxa
dois bytes no FIFO. O bit de overrun OERR deve ser apagado no
de transmissão; enquanto que o deslocador serial de recepção software.
principal opera na taxa de bits ou no FOSC.
Isso é feito redefinindo a lógica de recepção (o CREN é limpo e,
Uma vez selecionado o modo Assíncrono, a recepção é habilitada em seguida, definido). Se o bit OERR for definido, as transferências
configurando o bit CREN (RCSTA<4>). do registrador RSR para o registrador RCREG são inibidas e
nenhum dado adicional será recebido. Portanto, é essencial limpar
O coração do receptor é o registrador de deslocamento Receive
(Serial) (RSR). Após a amostragem do bit STOP, os dados o bit de erro OERR se estiver definido. O bit de erro de
recebidos no RSR são transferidos para o registrador RCREG (se enquadramento FERR (RCSTA<2>) é definido se um bit STOP for
detectado como limpo. O bit FERR e o 9º bit de recepção são
estiver vazio). Se a transferência estiver completa, o bit de flag
RCIF (PIR1<5>) é definido. A interrupção real pode ser habilitada/ armazenados em buffer da mesma forma que os dados de
recepção. A leitura do RCREG carregará os bits RX9D e FERR
desabilitada configurando/apagando o bit de habilitação RCIE
com novos valores, portanto, é essencial que o usuário leia o
(PIE1<5>). O bit de sinalização RCIF é um bit somente leitura, que
é limpo pelo hardware. Ele é apagado quando o registrador RCREG registro RCSTA antes de ler o registro RCREG para não perder as
informações antigas de FERR e RX9D.
foi lido e está vazio. O RCREG é um registrador de buffer duplo (ou
seja, é um FIFO de duas profundidades). Isto
SPBRG
ÿ64 MSb Registro RSR LSb
ou
Gerador de taxa de transmissão ÿ16
PARAR (8) 7 •ÿÿ •ÿÿ • 1 0 INÍCIO
RC7/RX/DT
Buffer de Dados
pinos e controle RX9
Recuperação
8
RCIF
Interromper
Barramento de dados
RCIE
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 (buffer de recepção) é lido após a terceira palavra,
fazendo com que o bit OERR (overrun) seja definido.
PIC16F870/871
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
defina o bit BRGH (Seção 9.1). habilitado) e determine se ocorreu algum erro
durante a recepção.
2. Habilite a porta serial assíncrona limpando
bit SYNC e bit de configuração SPEN. 8. Leia os dados recebidos de 8 bits lendo o
registro RCREG.
3. Se as interrupções forem desejadas, defina o bit de habilitação
RCIE. 9. Se ocorrer algum erro, limpe o erro limpando
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
5. Habilite a recepção configurando o bit CREN.
(bits 7 e 6) do registrador INTCON são energizados.
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
REINICIA
0Bh, 8Bh, INTCON GIE ASSIM T0IE NÃO RBI T0IF INTF R0IF 0000 000x 0000 000u
10Bh,18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF — CCP1IF TMR2IF TMR1IF -000 0000 -000 0000
18h RCSTA SPEN RX9 SREN CREN — FERR OERR RX9D 0000 -00x 0000 -00x
8 canais TORTA1 PSPIE(1) ADIE RCIE TXIE — CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
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 no PIC16F870; sempre mantenha esses bits claros.
PIC16F870/871
9.2.3 CONFIGURANDO O MODO DE 9 BITS COM • O bit de sinalização RCIF será definido quando a recepção for com
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 registro SPBRG para o apropriado
• Leia os dados recebidos de 8 bits lendo o
taxa de transmissão. Se desejar uma taxa de transmissão de alta velocidade,
Registro RCREG, para determinar se o dispositivo está sendo
defina o bit BRGH.
endereçado.
• Habilite a porta serial assíncrona limpando o bit SYNC e configurando
• Se ocorrer algum erro, limpe o erro limpando
o bit SPEN.
habilita o bit CREN.
• Se as interrupções forem desejadas, defina o bit de habilitação RCIE.
• Se o dispositivo foi endereçado, limpe o
• Defina o bit RX9 para habilitar a recepção de 9 bits. ADDEN bit para permitir que bytes de dados e bytes de endereço
• Configure ADDEN para habilitar a detecção de endereço. sejam lidos no buffer de recebimento e interrompa a CPU.
• Habilite a recepção configurando o bit de habilitação CREN.
SOMBRIO
SPBRG
RC7/RX/DT
ESPANHA
RX9
Permitir
ADICIONAR Carga de
Receber
RX9
Amortecedor
ADICIONAR
RSR<8> 8
RCIF
Interromper Barramento de dados
RCIE
PIC16F870/871
FIGURA 9-7: RECEPÇÃO ASSÍNCRONA COM DETECÇÃO DE ENDEREÇO
COMEÇAR COMEÇAR
RC7/RX/DT (pino)
pedaço bit0 bit1 bit8 PARE pouco bit0 bit8 PARAR
pouco pedaço
Carregar RSR
Palavra 1
Bit8 = 0, Byte de Dados Bit8 = 1, Byte de Endereço
RCREG
Ler
RCIF
Observação: 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 (buffer de recepção)
porque ADD = 1.
COMEÇAR COMEÇAR
RC7/RX/DT (pino)
pedaço
bit0 bit1 bit8 PARE pouco bit0 bit8 PARAR
pouco pedaço
Carregar RSR
Palavra 1
Bit8 = 1, Byte de Endereço Bit8 = 0, Byte de Dados
RCREG
Ler
RCIF
Observação: 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 (buffer de recepção)
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
REINICIA
0Bh, 8Bh, INTCON GIE ASSIM T0IE INTER RBIE T0IF INTF R0IF 0000 000x 0000 000u
10Bh,18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF — CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
18h RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x
1Ah Registro de recebimento RCREG USART 0000 0000 0000 0000
8 canais TORTA1 PSPIE(1) FRANGO RCIE TXIE — CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
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 no PIC16F870; sempre mantenha esses bits claros.
PIC16F870/871
9.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. Os
Síncrono USART
pinos DT e CK reverterão para alta impedância. Se o bit CREN ou o
No modo Synchronous Master, os dados são transmitidos de forma bit SREN for definido durante uma transmissão, a transmissão será
half-duplex (ou seja, transmissão e recepção não ocorrem ao mesmo abortada e o pino DT reverterá para um estado de alta impedância
tempo). Ao transmitir dados, a recepção é inibida e vice-versa. O (para uma recepção).
modo síncrono é inserido configurando o bit SYNC (TXSTA<4>). O pino CK permanecerá como saída se o bit CSRC estiver definido
Além disso, o bit de habilitação SPEN (RCSTA<7>) é definido para (relógio interno). A lógica do transmissor, no entanto, não é resetada,
configurar os pinos de E/S RC6/TX/CK e RC7/RX/DT para as linhas embora esteja desconectada dos pinos. Para reinicializar o
CK (clock) e DT (dados), respectivamente. O modo Master indica transmissor, o usuário deve limpar o bit TXEN.
que o processador transmite o clock master na linha CK. O modo Se o bit SREN estiver definido (para interromper uma transmissão
Master é inserido configurando o bit CSRC (TXSTA<7>). em andamento e receber uma única palavra), depois que a única
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 impedância
9.3.1 MESTRE SÍNCRONO USART para transmitir e começar a dirigir.
TRANSMISSÃO 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>) deve
9-6. O coração do transmissor é o registrador de deslocamento de ser definido e o nono bit deve ser escrito no bit TX9D (TXSTA<0>).
transmissão (serial) (TSR). O registrador Shift obtém seus dados do O nono bit deve ser escrito antes de escrever os dados de 8 bits no
registrador Read/Write Transmit Buffer TXREG. O registrador registrador TXREG. Isso ocorre porque uma gravação de dados no
TXREG é carregado com dados no software. O registrador TSR não TXREG pode resultar em uma transferência imediata dos dados para
é carregado até que o último bit tenha sido transmitido do o registrador TSR (se o TSR estiver vazio). Se o TSR estava vazio e
carregamento anterior. Assim que o último bit é transmitido, o TSR é o TXREG foi escrito antes de escrever o “novo” TX9D, o valor
carregado com novos dados do TXREG (se disponível). Uma vez “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 interrupção
Etapas a seguir ao configurar um mestre síncrono
TXIF (PIR1<4>) é setado. A interrupção pode ser habilitada/ Transmissão:
desabilitada configurando/apagando o bit de habilitação TXIE
(PIE1<4>). O bit de sinalização TXIF será definido, independentemente 1. Inicialize o registro SPBRG para o
do estado do bit de habilitação TXIE e não pode ser apagado no taxa de transmissão (Seção 9.1).
software. Ele será redefinido somente quando novos dados forem 2. Habilite a porta serial mestre síncrona configurando os bits
carregados no registro TXREG. Enquanto o bit de flag TXIF indica o SYNC, SPEN e CSRC.
status do registrador TXREG, outro bit TRMT (TXSTA<1>) mostra o 3. Se as interrupções forem desejadas, defina o bit de habilitação TXIE.
status do registrador TSR. TRMT é um bit somente leitura que é 4. Se desejar uma transmissão de 9 bits, defina o bit TX9.
definido quando o TSR está vazio. Nenhuma lógica de interrupção
5. Habilite a transmissão configurando o bit TXEN.
está vinculada a esse bit, portanto, o usuário deve pesquisar esse
6. Se a transmissão de 9 bits for selecionada, o nono bit deve ser
bit para determinar se o registrador TSR está vazio.
carregado no bit TX9D.
O TSR não é mapeado na memória de dados, portanto, não está 7. Inicie a transmissão carregando os dados no registrador
disponível para o usuário. TXREG.
A transmissão é habilitada configurando o bit de habilitação TXEN 8. Se estiver usando interrupções, certifique-se de que GIE e
(TXSTA<5>). A transmissão real não ocorrerá até que o registro PEIE (bits 7 e 6) do registrador INTCON estejam definidos.
TXREG tenha sido carregado com dados.
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 9-9). A
transmissão também pode ser iniciada carregando primeiro o
registrador TXREG e depois definindo o bit TXEN (Figura 9-10). Isto
é 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.
PIC16F870/871
TABELA 9-8: REGISTROS ASSOCIADOS À TRANSMISSÃO MESTRA 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
REINICIA
0Bh, 8Bh, INTCON GIE ASSIM T0IE INTER RBIE T0IF INTF R0IF 0000 000x 0000 000u
10Bh,18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF — CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
18h RCSTA SPEN RX9 SREN CREN — FERR OERR RX9D 0000 -00x 0000 -00x
8 canais TORTA1 PSPIE(1) FRANGO RCIE TXIE — CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
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 no PIC16F870; sempre mantenha esses bits claros.
Q1Q2 Q3Q4 Q1 Q2Q3 Q4Q1 Q2Q3 Q4Q1 Q2Q3 Q4Q1 Q2 Q3Q4 Q3Q4 Q1Q2 Q3Q4 Q1Q2 Q3Q4 Q1Q2 Q3 Q4Q1 Q2Q3 Q4Q1 Q2Q3 Q4Q1 Q2Q3 Q4
Palavra 1 Palavra 2
pino RC6/TX/CK
Escrever para
TXREG reg
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
PIC16F870/871
9.3.2 RECEPÇÃO MASTER SÍNCRONA USART Ao configurar uma recepção mestre síncrona:
configurando o bit de habilitação SREN (RCSTA<5>), ou o bit de 2. Habilite a porta serial mestre síncrona configurando os bits
habilitação CREN (RCSTA<4>). Os dados são amostrados no pino SYNC, SPEN e CSRC.
RC7/RX/DT na borda descendente do relógio. Se o bit de habilitação 3. Certifique-se de que os bits CREN e SREN estejam limpos.
SREN estiver definido, apenas uma única palavra será recebida. Se
4. Se as interrupções forem desejadas, defina o bit de habilitação
o bit de habilitação CREN estiver definido, a recepção é contínua até RCIE.
que CREN seja apagado. Se ambos os bits estiverem definidos, o
5. Se a recepção de 9 bits for desejada, defina o bit RX9.
CREN tem precedência. Após cronometrar o último bit, os dados
recebidos no registrador Receive Shift (RSR) são transferidos para o 6. Se for necessária uma única recepção, defina o bit SREN.
registrador RCREG (se estiver vazio). Quando a transferência estiver Para recepção contínua, defina o bit CREN.
completa, o bit de flag de interrupção RCIF (PIR1<5>) é definido. A 7. O bit sinalizador de interrupção RCIF será definido quando a
interrupção real pode ser habilitada/desabilitada configurando/ recepção for concluída e uma interrupção será gerada se o
apagando o bit de habilitação RCIE (PIE1<5>). O bit de sinalização bit de habilitação RCIE foi definido.
RCIF é um bit somente leitura, que é redefinido pelo hardware. Neste 8. Leia o registro RCSTA para obter o nono bit (se habilitado) e
caso, é resetado quando o registrador RCREG foi lido e está vazio. determine se ocorreu algum erro durante a recepção.
O RCREG é um registrador de buffer duplo (ou seja, é um FIFO de
duas profundidades). É possível que dois bytes de dados sejam 9. Leia os dados recebidos de 8 bits lendo o registrador RCREG.
recebidos e transferidos para o RCREG FIFO e um terceiro byte
comece a se deslocar para o registrador RSR. No clock do último bit
10. Se ocorrer algum erro, limpe o erro limpando o bit CREN.
do terceiro byte, se o registrador RCREG ainda estiver cheio, então
o bit de erro de overrun OERR (RCSTA<1>) é definido. A palavra no
11. Se estiver usando interrupções, certifique-se de que GIE e
RSR será perdida.
PEIE (bits 7 e 6) do registrador INTCON estejam definidos.
PIC16F870/871
TABELA 9-9: REGISTROS ASSOCIADOS À RECEPÇÃO MASTER SÍNCRONA
Valor em
Valor em:
Nome do endereço Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 todos os outros
POR, BOR
REINICIA
0Bh, 8Bh, INTCON GIE ASSIM T0IE INTER RBIE T0IF INTF R0IF 0000 000x 0000 000u
10Bh,18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF — CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
18h RCSTA SPEN RX9 SREN CREN — FERR OERR RX9D 0000 -00x 0000 -00x
1Ah Registro de recebimento RCREG USART 0000 0000 0000 0000
8 canais TORTA1 PSPIE(1) FRANGO RCIE TXIE — CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
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 no PIC16F870; sempre mantenha esses bits claros.
pino RC7/RX/DT bit0 bit1 bit2 bit3 bit4 bit5 bit6 bit7
pino RC6/TX/CK
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.
PIC16F870/871
9.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
receber dados enquanto estiver no modo SLEEP. O modo escravo é 2. Limpe os bits CREN e SREN.
inserido limpando o bit CSRC (TXSTA<7>). 3. Se as interrupções forem desejadas, defina o bit de habilitação
ESSA.
9.4.1 ESCRAVO SÍNCRONO USART 4. Se a transmissão de 9 bits for desejada, defina o bit TX9.
TRANSMITE
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
estiver habilitado, o programa irá ramificar para o
vetor de interrupção (0004h).
0Bh, 8Bh, INTCON GIE ASSIM T0IE INTER RBIE T0IF INTF R0IF 0000 000x 0000 000u
10Bh,18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF — CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
18h RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x
19h Registro de Transmissão TXREG USART 0000 0000 0000 0000
8 canais TORTA1 PSPIE(1) FRANGO RCIE TXIE — CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
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 no PIC16F870; sempre mantenha esses bits claros.
PIC16F870/871
9.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
REINICIA
0Bh, 8Bh, INTCON GIE ASSIM T0IE INTER RBIE T0IF INTF R0IF 0000 000x 0000 000u
10Bh,18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF — CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
18h RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x
1Ah Registro de recebimento RCREG USART 0000 0000 0000 0000
8 canais TORTA1 PSPIE(1) FRANGO RCIE TXIE — CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
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 no PIC16F870, mantenha sempre estes bits livres.
PIC16F870/871
NOTAS:
PIC16F870/871
O módulo A/D possui quatro registradores. Esses registros
10.0 ANALÓGICO PARA DIGITAL (A/D)
são:
MÓDULO CONVERSOR
• Registro Alto de Resultado A/D (ADRESH)
O módulo Conversor Analógico-Digital (A/D) tem cinco
• Registro Baixo de Resultado A/D (ADRESL)
entradas para os dispositivos de 28 pinos e oito para os outros
dispositivos. • Registro de Controle A/D0 (ADCON0)
• Registro de Controle A/D1 (ADCON1)
A entrada analógica carrega um capacitor de amostragem e retenção.
A saída do capacitor de amostra e retenção é a entrada O registro ADCON0, mostrado no Registro 10-1, controla a operação
no conversor. O conversor gera então um resultado digital deste nível do módulo A/D. O ADCON1
analógico por meio de aproximações sucessivas. A conversão A/D do registrador, mostrado no registrador 10-2, configura as funções dos
sinal de entrada analógico pinos da porta. Os pinos da porta podem ser configurados
resulta em um número digital de 10 bits correspondente. o como entradas analógicas (RA3 também pode ser a tensão
O módulo A/D tem entrada de referência de alta e baixa tensão referência), ou como E/S digital.
que é selecionável por software para alguma combinação de VDD, Informações adicionais sobre o uso do módulo A/D podem ser
VSS, RA2 ou RA3. encontrado no PIC® Mid-Range MCU Family Reference
O conversor A/D tem a característica única de poder Manual (DS33023).
para operar enquanto o dispositivo estiver no modo SLEEP. Para
operar em SLEEP, o relógio A/D deve ser derivado do
Oscilador RC interno do A/D.
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
PIC16F870/871
REGISTRO 10-2: REGISTRO ADCON1 (ENDEREÇO: 9Fh)
U-0 U-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0
pedaço 7 bit 0
1 = Justificado à direita. 6 Os bits mais significativos de ADRESH são lidos como '0'.
0 = justificado à esquerda. 6 Bits menos significativos de ADRSL são lidos como '0'.
bocado 6-4 Não implementado: Leia como '0'
pouco 3-0 PCFG3:PCFG0: Bits de controle de configuração da porta A/D:
PCFG3: AN7(1) AN6(1) AN5(1) AN4 AN3 AN2 AN1 AN0 CHAN/
VREF+ VREF-
PCFG0 RE2 RE1 RE0 RA5 RA3 RA2 RA1 RA0 Refs(2)
0100 D D D D UMA
DA AVDD VSS 3/0
2: Esta coluna indica o número de canais analógicos disponíveis como entradas A/D e
o número de canais analógicos usados como entradas de referência de tensão.
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
Os registradores ADRESH:ADRESL contêm os registros de 10 bits Para determinar o tempo de amostragem, consulte a Seção 10.1. Depois disto
resultado da conversão A/D. Quando a conversão A/D decorrido o tempo de aquisição, a conversão A/D pode
está completo, o resultado é carregado neste par de registradores de ser iniciado.
resultados A/D, o bit GO/DONE (ADCON0<2>) é apagado
e o bit de sinalização de interrupção A/D ADIF é definido. O bloco
diagrama do módulo A/D é mostrado na Figura 10-1.
PIC16F870/871
Estas etapas devem ser seguidas para fazer um A/D 3. Aguarde o tempo de aquisição necessário.
Conversão: 4. Inicie a conversão:
111
RE2/AN7(1)
110
RE1/AN6(1)
101
RE0/AN5(1)
100
RA5/AN4
SÓ
011
(Tensão de entrada) RA3/AN3/VREF+
010
DE ANÚNCIOS RA2/AN2/VREF
Conversor
001
RA1/AN1
000
VDD RA0/YAN0
VREF+
(Referência
Tensão)
PCFG3:PCFG0
VREF-
(Referência
Tensão)
VSS
PCFG3:PCFG0
PIC16F870/871
10.1 Requisitos de Aquisição A/D ser diminuído. Depois que o canal de entrada analógica for selecionado
(alterado), esta aquisição deve ser feita antes que a conversão possa ser
Para que o conversor A/D atinja sua precisão especificada, o iniciada.
capacitor de retenção de carga (CHOLD) deve ser totalmente
Para calcular o tempo mínimo de aquisição, a Equação 10-1 pode ser
carregado até o nível de tensão do canal de entrada. O modelo de
usada. Esta equação assume que 1/2 erro LSb é usado (1024 passos
entrada analógica é mostrado na Figura 10-2. A impedância da
para o A/D). O erro de 1/2 LSb é o erro máximo permitido para o A/D
fonte (RS) e a impedância da chave de amostragem interna (RSS)
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 10-2. A Para calcular o tempo mínimo de aquisição, TACQ, consulte o PIC® Mid-
impedância máxima recomendada para fontes analógicas é Range MCU Family Reference Manual (DS33023).
de 10 kÿ. À medida que a impedância diminui, o tempo de
aquisição pode
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 ela se cancela.
3: A impedância máxima recomendada para fontes analógicas é de 10 kÿ. Isso é necessário para atender o pino
especificação de vazamento.
4: Após a conclusão de uma conversão, um atraso de 2,0 TAD deve ser concluído antes que a aquisição possa começar novamente.
Durante este tempo, o capacitor de retenção não está conectado ao canal de entrada A/D selecionado.
VDD
Amostragem
Trocar
VT = 0,6 V
ANx RIC ÿ 1k SS RSS
RS
CHOLD
E CPIN FUGA ± = capacitância DAC =
VT = 0,6 V 500 nA 120 pF
5 pF
VSS
PIC16F870/871
10.2 Selecionando o Relógio de Conversão Para conversões A/D corretas, o relógio de conversão A/D
A/D (TAD) deve ser selecionado para garantir um tempo mínimo de TAD
de 1,6 ÿs.
O tempo de conversão A/D por bit é definido como TAD. o A Tabela 10-1 mostra os tempos TAD resultantes derivados de
A conversão A/D requer um mínimo de 12 TAD por 10 bits
as frequências de operação do dispositivo e o relógio A/D
conversão. A fonte do relógio de conversão A/D é
fonte selecionada.
software selecionado. As quatro opções possíveis para TAD
são:
• 2 GROSSOS
• 8 ÁSPERO
• 32 ÁSPERO
TABELA 10-1: TAD vs. FREQUÊNCIAS MÁXIMAS DE OPERAÇÃO DO DISPOSITIVO (DISPOSITIVOS PADRÃO (C))
8 ÁSPERO 01 5MHz
32 ÁSPERO 10 20MHz
RC(1, 2, 3) 11 (Nota 1)
Nota 1: A fonte RC tem um tempo TAD típico de 4 ÿs, mas pode variar entre 2-6 ÿs.
2: Quando as frequências do dispositivo são maiores que 1 MHz, a fonte de clock de conversão RC A/D é apenas
recomendado para operação SLEEP.
3: Para dispositivos de tensão estendida (LC), consulte as Características Elétricas (Seção 14.1 e 14.2).
10.3 Configurando os pinos da porta analógica Nota 1: Ao ler o registro da porta, qualquer pino
configurado como um canal de entrada analógica
Os registradores ADCON1 e TRIS controlam a operação
lido como limpo (um nível baixo). Os pinos
dos pinos da porta A/D. Os pinos de porta que são desejados como
configurados como entradas digitais converterão
as entradas analógicas devem ter seus bits TRIS correspondentes
uma entrada de registro analógico. Níveis analógicos em um digital
definir (entrada). Se o bit TRIS for apagado (saída), o sinal digital
entrada configurada não afetará o
nível de saída (VOH ou VOL) será convertido.
precisão de conversão.
A operação A/D é independente do estado do
bits CHS2:CHS0 e os bits TRIS. 2: Níveis analógicos em qualquer pino definido como
uma entrada digital (incluindo o AN7:AN0
pinos), pode fazer com que o buffer de entrada
consuma corrente que está fora do dispositivo
especificações.
PIC16F870/871
10.4 Conversões A/D aquisição é iniciada. Após esta espera de 2 TAD , aquisição
no canal selecionado é iniciado automaticamente. o
Apagar o bit GO/DONE durante uma conversão O bit GO/DONE pode então ser definido para iniciar a conversão.
abortar a conversão atual. O registro de resultado A/D
Na Figura 10-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
é abortado, uma espera de 2 TAD é necessária antes do próximo
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
10.4.1 REGISTROS DE RESULTADOS A/D mat Select bit (ADFM) controla esta justificação.
A Figura 10-4 mostra o funcionamento da justificação do resultado A/
O par de registradores ADRESH:ADRESL é o local
D. Os bits extras são carregados com '0'. Quando um A/D
onde o resultado A/D de 10 bits é carregado na conclusão do
resultado não substituirá esses locais (desativação A/D),
a conversão A/D. Este par de registradores tem 16 bits de largura.
esses registradores podem ser usados como dois propósitos gerais
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 para
Resultado de 10 bits
ADFM = 1 ADFM = 0
7 2107 0 7 0765 0
0000 00 0000 00
PIC16F870/871
10.5 Operação A/D durante o SONO Desligar o A/D coloca o módulo A/D na posição mais baixa
estado de consumo atual.
O módulo A/D pode operar durante o modo SLEEP. este
requer que a fonte de clock A/D seja configurada para RC Nota: Para que o módulo A/D opere em SLEEP,
a fonte do relógio A/D deve ser configurada para RC
(ADCS1:ADCS0 = 11). Quando a fonte do relógio RC é
selecionado, o módulo A/D aguarda um ciclo de instrução (ADCS1:ADCS0 = 11). Para permitir que a conversão
antes de iniciar a conversão. Isso permite que o SONO ocorra durante o SLEEP, certifique-se de que o
instrução a ser executada, o que elimina todas as A instrução SLEEP segue imediatamente a
instrução que energiza o bit GO/DONE.
ruído de comutação da conversão. Quando a conversão estiver
completa, o bit GO/DONE será apagado e
o resultado carregado no registrador ADRES. Se o A/D 10.6 Efeitos de um RESET
interrupção estiver habilitada, o dispositivo acordará
Um dispositivo RESET força todos os registradores ao seu RESET
DORME. Se a interrupção A/D não estiver habilitada, o módulo A/D
Estado. Isso força o módulo A/D a ser desligado e
será então desligado, embora o bit ADON
permanecer definido. qualquer conversão é abortada. Todos os pinos de entrada A/D são
configurados como entradas analógicas.
Quando a fonte de relógio A/D é outra opção de relógio (não
O valor que está nos registradores ADRESH:ADRESL é
RC), uma instrução SLEEP fará com que a conversão atual seja
não modificado para um Power-on Reset. o
abortada e o módulo A/D seja desligado,
ADRESH:Registros ADRESL conterão dados desconhecidos
embora o bit ADON permaneça definido.
após uma reinicialização ao ligar.
0Bh,8Bh, INTCON GIE ASSIM NÃO RBIE T0IF INTF RBIF 0000 000x 0000 000u
10Bh,18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF — CCP1IF TMR2IF TMR1IF 0000 -000 0000 -000
8 canais TORTA1 PSPIE(1) RCIE DE FRANGO TXIE — CCP1IE TMR2IE TMR1IE 0000 -000 0000 -000
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 — — — PCFG3 PCFG2 PCFG1 PCFG0 --0- 0000 --0- 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 — PORTE 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/bits não estão disponíveis nos dispositivos de 28 pinos.
PIC16F870/871
NOTAS:
PIC16F870/871
11.0 CARACTERÍSTICAS ESPECIAIS DA CPU O modo SLEEP foi projetado para oferecer um modo Power-down de corrente
muito baixa. O usuário pode acordar do SLEEP através de RESET externo,
Watchdog Timer Wake-up ou através de uma interrupção.
Os dispositivos PIC16F870/871 possuem uma série de recursos destinados a
maximizar a confiabilidade do sistema, minimizar custos por meio da eliminação Várias opções de osciladores também são disponibilizadas para permitir que a
de componentes externos, fornecer modos de operação de economia de energia peça se ajuste à aplicação. A opção de oscilador RC economiza o custo do
e oferecer proteção de código. Estes são:
sistema, enquanto a opção de cristal LP economiza energia. Um conjunto de bits
de configuração é usado para selecionar várias opções.
• Seleção do oscilador
• REDEFINIR Informações adicionais sobre recursos especiais estão disponíveis no PIC® Mid-
(WDT) • SLEEP programados (lidos como '1'), para selecionar várias configurações de dispositivos.
O valor apagado ou não programado da palavra de configuração é 3FFFh. Esses
bits são mapeados no local de memória do programa 2007h.
• Proteção de Código
• Locais de identificação
É importante observar que o endereço 2007h está além do espaço de memória
• Programação Serial In-Circuit • Programação
do programa do usuário, que pode ser acessado somente durante a programação.
Serial In-Circuit de Baixa Tensão • Depurador In-Circuit
PIC16F870/871
REGISTRO 11-1: PALAVRA DE CONFIGURAÇÃO (ENDEREÇO 2007h)(1)
CP1 CP0 DEBUG — WRT CPD LVP BOREN CP1 CP0 PWRTEN WDTEN FOSC1 FOSC0
pedaço 13 bit 0
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
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 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
3: Habilitar o Brown-out Reset habilita automaticamente o Power-up Timer (PWRT), independentemente do valor do bit
PWRTEN. Certifique-se de que o temporizador de inicialização esteja ativado sempre que a reinicialização de brown-out estiver ativada.
PIC16F870/871
11.2 Configurações do oscilador FIGURA 11-2: ENTRADA DE RELÓGIO EXTERNO
OPERAÇÃO (HS, XT OU LP
11.2.1 TIPOS DE OSCILADOR CONFIGURAÇÃO OSC)
O PIC16F870/871 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 bits. Relógio de OSC1
quatro modos:
Ramal Sistema PIC16F870/871
• LP Cristal de baixa potência
Abrir OSC2
• XT Cristal/Ressonador
• Cristal/Ressonador de Alta Velocidade HS
• Resistor/Capacitor RC
PIC16F870/871
TABELA 11-2: SELEÇÃO DE CAPACITOR PARA 11.2.3 OSCILADOR RC
OSCILADOR DE CRISTAL Para aplicações insensíveis ao tempo, o dispositivo “RC”
Cristal Boné. Faixa Boné. Faixa opção oferece economia de custos adicionais. O oscilador RC
Tipo de Osc a frequência é uma função da tensão de alimentação, dos valores
Freq. C1 C2
do resistor (REXT) e do capacitor (CEXT) e da temperatura de
LP 32 kHz 33 pF 33 pF 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 pF
também afetam a frequência de oscilação, especialmente para
4MHz 15 pF 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
15 pF 15 pF
8MHz componentes usados. A Figura 11-3 mostra como o R/C
15-33 pF 15-33 pF
combinação está conectada ao PIC16F870/871.
20 MHz 15-33 pF 15-33 pF
Esses valores são apenas para orientação de projeto. FIGURA 11-3: MODO DE OSCILADOR RC
Veja as notas após esta tabela.
VDD
Cristais usados
PIC16F870/871
11.3 REINICIAR SLEEP e Brown-out Reset (BOR). Eles não são afetados por um WDT
Wake-up, que é visto como a retomada da operação normal. Os bits
O PIC16F870/871 diferencia entre vários tipos de RESET:
TO e PD são definidos ou apagados de forma diferente em diferentes
situações de RESET, conforme indicado na Tabela 11-4. Esses bits
• Power-on Reset (POR) • MCLR são usados em software para determinar a natureza do RESET.
Consulte a Tabela 11-6 para obter uma descrição completa dos estados
Reset durante operação normal • MCLR Reset
RESET de todos os registradores.
durante SLEEP • WDT Reset (durante operação
normal) • WDT Wake-up (durante SLEEP) • Brown-
Um diagrama de blocos simplificado do Circuito de Reinicialização On-
out Reset (BOR)
Chip é mostrado na Figura 11-4.
Esses dispositivos possuem um filtro de ruído MCLR no caminho MCLR
Alguns registradores não são afetados em nenhuma condição de
Reset. O filtro detectará e ignorará pequenos pulsos.
RESET. Seu status é desconhecido no POR e inalterado em qualquer
outro RESET. A maioria dos outros registradores são redefinidos para
Deve-se notar que um WDT Reset não leva o pino MCLR para baixo.
um “estado RESET” no Power-on Reset (POR), no MCLR e WDT
Reset, no MCLR Reset durante
Externo
REDEFINIR
MCLR
DORME
WDT WDT
Módulo
Tempo esgotado
Redefinir
Aumento de VDD
Detectar
Reinicialização ao ligar
VDD
Apagão
S
Redefinir BOREN
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
PIC16F870/871
11.4 Reinicialização ao ligar (POR) 11.7 Reinicialização de Brown-out (BOR)
Um pulso de Power-on Reset é gerado no chip quando O bit de configuração, BOREN, pode habilitar ou desabilitar
O aumento de VDD é detectado (na faixa de 1,2 V - 1,7 V). Para o circuito Brown-out Reset. Se VDD cair abaixo de VBOR
aproveite o POR, amarre o pino MCLR diretamente (parâmetro D005, cerca de 4V) por mais tempo que TBOR
(ou através de um resistor) para VDD. Isso vai eliminar (parâmetro #35, cerca de 100 ÿS), a situação de apagão
componentes RC externos normalmente necessários para criar um irá reiniciar o dispositivo. Se VDD ficar abaixo de VBOR por menos
Reinicialização de inicialização. Um tempo máximo de subida para VDD é que TBOR, um RESET pode não ocorrer.
Especificadas. Consulte Especificações elétricas para obter detalhes.
Uma vez que o brown-out ocorre, o dispositivo permanecerá em
Quando o dispositivo inicia a operação normal (sai do Brown-out Reinicialização até que o VDD fique acima do VBOR. o
condição RESET), os parâmetros operacionais do dispositivo (tensão, O temporizador de inicialização mantém o dispositivo em RESET por
frequência, temperatura,...) devem ser atendidos para garantir TPWRT (parâmetro nº 33, cerca de 72 ms). Se o VDD cair
Operação. Se essas condições não forem atendidas, o dispositivo abaixo de VBOR durante TPWRT, o processo Brown-out Reset será
deve ser mantido em RESET até que as condições de operação reiniciado quando VDD subir acima de VBOR com o
são atendidas. Brown-out Reset pode ser usado para Reinicialização do temporizador de inicialização. O temporizador de inicialização é sempre
condições de arranque. Para obter informações adicionais, consulte habilitado quando o circuito Brown-out Reset está habilitado,
Nota de aplicação, AN007, “Solução de problemas de inicialização” independentemente do estado do bit de configuração PWRT.
(DS00007).
11.8 Sequência de tempo limite
11.5 Temporizador de inicialização (PWRT)
Ao ligar, a sequência de tempo limite é a seguinte: O
O temporizador de inicialização fornece um valor nominal fixo de 72 ms O atraso PWRT inicia (se habilitado) quando um POR Reset
tempo limite ao ligar apenas a partir do POR. O Power up Timer opera ocorre. Então OST começa a contar 1024 oscilador
em um oscilador RC interno. o ciclos quando o PWRT termina (LP, XT, HS). Quando o OST
chip é mantido em RESET enquanto o PWRT estiver ativo. termina, o aparelho sai do RESET.
O atraso de tempo do PWRT permite que o VDD suba para um
Se o MCLR for mantido baixo por tempo suficiente, os tempos limite serão
nível aceitável. Um bit de configuração é fornecido para
expirar. Colocar o MCLR alto começará a execução imediatamente. Isso
habilitar/desabilitar o PWRT.
é útil para fins de teste ou para sincronizar mais de um dispositivo
O atraso de tempo de inicialização irá variar de chip para chip devido PIC16F870/871 operando em
ao VDD, temperatura e variação do processo. Ver DC paralelo.
parâmetros para detalhes (TPWRT, parâmetro #33). A Tabela 11-5 mostra as condições de RESET para o
Registradores de STATUS, PCON e PC, enquanto a Tabela 11-6
11.6 Temporizador de inicialização do oscilador (OST) mostra as condições de RESET para todos os registradores.
Oscilador Energizar
Apagão Acordar do SONO
Configuração PWRTEN = 0 PWRTEN = 1
XT, HS, LP 72 ms + 1024 TOSC 1024 GROSSO 72 ms + 1024 TOSC 1024 GROSSO
RC 72ms — 72ms —
PIC16F870/871
TABELA 11-4: BITS DE STATUS E SEU SIGNIFICADO
0 x 11 Reinicialização ao ligar
1 1 01 Reinicialização WDT
1 1 00 WDT Despertar
1 1 uu MCLR Reinicialização durante a operação normal
1 1 10 MCLR Reinicialização durante o SLEEP ou interrupção do despertar do SLEEP
STATUS PIC16F870 PIC16F871 0001 1xxx 000q quuu(3) uau uau (3)
FSR PIC16F870 PIC16F871 xxxx xxxx uuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuu
Legenda: u = inalterado, x = desconhecido, - = bit não implementado, lido como '0', q = valor depende da condição, r = reservado, mantenha
limpo
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 11-5 para o valor RESET para condição específica.
PIC16F870/871
TABELA 11-6: CONDIÇÕES DE INICIALIZAÇÃO PARA TODOS OS REGISTOS (CONTINUAÇÃO)
Legenda: u = inalterado, x = desconhecido, - = bit não implementado, lido como '0', q = valor depende da condição, r = reservado,
mantenha limpo
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 11-5 para o valor RESET para condição específica.
PIC16F870/871
FIGURA 11-5: SEQUÊNCIA DE TEMPO LIMITE NA LIGAÇÃO (MCLR LIGADO A VDD)
VDD
MCLR
INTERNO POR
TPWRT
REINICIALIZAÇÃO INTERNA
FIGURA 11-6: SEQUÊNCIA DE TEMPO LIMITE NA LIGAÇÃO (MCLR NÃO LIGADO A VDD): CASO 1
VDD
MCLR
INTERNO POR
TPWRT
REINICIALIZAÇÃO INTERNA
FIGURA 11-7: SEQUÊNCIA DE TEMPO LIMITE NA LIGAÇÃO (MCLR NÃO LIGADO A VDD): CASO 2
VDD
MCLR
INTERNO POR
TPWRT
REINICIALIZAÇÃO INTERNA
PIC16F870/871
FIGURA 11-8: TEMPO DE ELEVAÇÃO LENTA (MCLR LIGADO A VDD)
5V
VDD 0V 1V
MCLR
INTERNO POR
TPWRT
TOST
REINICIALIZAÇÃO INTERNA
PIC16F870/871
FIGURA 11-9: LÓGICA DE INTERRUPÇÃO
EEIF
ISTO
PSPIF
PSPIE
ADIF T0IF
Despertar (se estiver no modo SLEEP)
FRANGO
T0IE
RCIF INTF
RCIE NÃO
Interrupção para CPU
TXIF RBIF
ESSA RBIE
ASSIM
CCP1IF
CCP1IE GIE
TMR2IF
TMR2IE
TMR1IF
TMR1IE
Dispositivo T0IF INTF RBIF PSPIF ADIF RCIF TXIF CCP1IF TMR2IF TMR1IF EEIF
PIC18F870 Sim Sim Sim Sim Sim Sim Sim Sim Sim Sim
PIC18F871 Sim Sim Sim Sim Sim Sim Sim Sim Sim Sim Sim
A interrupção externa no pino RB0/INT é acionada por borda, Um overflow (FFh ÿ 00h) no registrador TMR0 irá definir
ou subindo, se o bit INTEDG (OPTION_REG<6>) estiver definido, bit de sinalizador T0IF (INTCON<2>). A interrupção pode ser
ou caindo, se o bit INTEDG estiver limpo. Quando uma aresta válida habilitado/desabilitado configurando/apagando o bit de habilitação T0IE
aparece no pino RB0/INT, bit de flag INTF (INTCON<5>) (Seção 5.0).
(INTCON<1>) está definido. Esta interrupção pode ser desabilitada por
apagando o bit de habilitação INTE (INTCON<4>). Bit de sinalização INTF 11.10.3 MUDANÇA DE INTCON DE PORTAB
deve ser limpo em software no Interrupt Service Uma alteração de entrada em PORTB<7:4> define o bit de sinalização RBIF
Rotina antes de reativar esta interrupção. A interrupção INT pode (INTCON<0>). A interrupção pode ser habilitada/desabilitada
acordar o processador do SLEEP, se o bit INTE definindo/limpando o bit de habilitação RBIE (INTCON<4>)
foi definido antes de entrar em SLEEP. O status do mundo (Seção 4.2).
bit de habilitação de interrupção, GIE, decide se o
processador ramifica para o vetor de interrupção seguindo
acordar. Consulte a Seção 11.13 para obter detalhes sobre SLEEP
modo.
PIC16F870/871
11.11 Salvamento de contexto durante interrupções Como os 16 bytes superiores de cada banco são comuns em
os dispositivos PIC16F870/871, registros de retenção temporários
Durante uma interrupção, apenas o valor de retorno do PC é salvo W_TEMP, STATUS_TEMP e PCLATH_TEMP
na pilha. Normalmente, os usuários podem desejar salvar registros deve ser colocado aqui. Esses 16 locais não
de chave durante uma interrupção (ou seja, registro W e STATUS exigem serviços bancários e, portanto, facilitam o salvamento e a
registro). Isso terá que ser implementado em software. restauração de contexto. O mesmo código mostrado em
Para os dispositivos PIC16F870/871, o registro W_TEMP O Exemplo 11-1 pode ser usado.
deve ser definido em ambos os bancos 0 e 1 e deve ser
definido no mesmo deslocamento do endereço base do banco
(ou seja, se W_TEMP for definido em 0x20 no banco 0, ele deve
também ser definido em 0xA0 no banco 1). Os registros,
PCLATH_TEMP e STATUS_TEMP, são apenas definidos
no banco 0.
PIC16F870/871
11.12 Temporizador Watchdog (WDT) Os valores do período de tempo limite do WDT podem ser encontrados
na seção Especificações elétricas no parâmetro #31. Valores para o
O Watchdog Timer é um oscilador RC on-chip de execução livre que prescaler WDT (na verdade um postscaler, mas
não requer nenhum componente externo. compartilhado com o prescaler Timer0) pode ser atribuído
Este oscilador RC é separado do oscilador RC de usando o registrador OPTION_REG.
o pino OSC1/CLKI. Isso significa que o WDT será executado,
mesmo que o relógio no OSC1/CLKI e OSC2/CLKO Nota 1: As instruções CLRWDT e SLEEP
pinos do dispositivo foi parado, por exemplo, por limpe o WDT e o postscaler, se
execução de uma instrução SLEEP. atribuído ao WDT e impedi-lo de
tempo limite e geração de um dispositivo
Durante a operação normal, um time-out WDT gera um Condição REINICIAR.
dispositivo RESET (Reinicialização do Temporizador do Watchdog). Se o dispositivo estiver
no modo SLEEP, um tempo limite WDT faz com que o dispositivo 2: Quando uma instrução CLRWDT é executada
0
M Pós-escalador
1
DENTRO
Temporizador WDT
X
8
8 - a - 1 MUX PS2:PS0
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) PERFURAÇÃO(1) CP1 CP0 PWRTEN(1) WDTEN FOSC1 FOSC0
81h,181h OPTION_REG RBPU INTEDG T0CS T0SE Legenda: Células sombreadas não PSA PS2 PS1 PS0
PIC16F870/871
11.13 Modo de desligamento (SLEEP) 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 setado (habilitado), o dispositivo executa a instrução após a instrução
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.
O pino MCLR deve estar em um nível lógico alto (VIHMC). NOP. Portanto, o postscaler WDT e WDT não será apagado, o
bit TO não será definido e os bits PD não serão apagados.
11.13.1 DESPERTAR DO SONO
O dispositivo pode acordar do SLEEP por meio de um dos seguintes • Se a interrupção ocorrer durante ou após o
execução de uma instrução SLEEP, o dispositivo despertará
eventos:
imediatamente do SLEEP. A instrução SLEEP será executada
1. Entrada de RESET externo no pino MCLR.
completamente antes do despertar. Portanto, o postscaler WDT
2. Despertar do Watchdog Timer (se o WDT estiver ativado). e WDT será apagado, o bit TO será definido e o bit PD será
apagado.
3. Interrupção do pino INT, mudança de porta RB ou interrupção
periférica.
Mesmo que os bits de sinalização tenham sido verificados antes de
A reinicialização externa de MCLR causará uma reinicialização do executar uma instrução SLEEP, pode ser possível que os bits de
dispositivo. Todos os outros eventos são considerados uma continuação sinalização sejam ativados antes que a instrução SLEEP seja concluída.
da execução do programa e causam um “despertar”. Os bits TO e PD Para determinar se uma instrução SLEEP foi executada, teste o bit PD.
no registrador STATUS podem ser usados para determinar a causa do Se o bit PD estiver energizado, a instrução SLEEP foi executada como
RESET do dispositivo. O bit PD, que é definido na energização, é NOP.
apagado quando SLEEP é invocado. O bit TO é apagado se ocorrer um
Para garantir que o WDT seja limpo, uma instrução CLRWDT deve ser
tempo limite WDT e causar o despertar.
executada antes de uma instrução SLEEP.
PIC16F870/871
FIGURA 11-11: 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
Executado Inst(PC - 1) DORME Inst(PC + 1) Ciclo fictício Ciclo fictício Inst(0004h)
RB6, RB7 não acessíveis durante a execução normal, mas são legíveis e
Pinos de E/S
graváveis durante a programação/verificação. Recomenda-se
Pilha 1 nível
que apenas os 4 bits menos significativos do ID
O endereço de memória do programa 0000h deve ser NOP local são usados.
Últimas 100h palavras
PIC16F870/871
11.17 Programação serial em circuito
Nota 1: O modo de programação de alta tensão está sempre
Os microcontroladores PIC16F870/871 podem ser programados
disponível, independentemente do estado do bit
em série enquanto estão no circuito de aplicação final. Isso é feito
LVP, aplicando VIHH ao pino MCLR.
simplesmente com duas linhas para clock e dados e três outras
linhas para alimentação, terra e tensão de programação. Isso permite
que os clientes fabriquem placas com dispositivos não programados 2: Enquanto estiver no modo ICSP de baixa tensão, o
e, em seguida, programem o microcontrolador antes de enviar o pino RB3 não pode mais ser usado como um pino
produto. Isso também permite que o firmware mais recente ou um de E/S de uso geral.
firmware personalizado seja programado. 3: Ao usar programação ICSP de baixa tensão (LVP) e
os pull-ups no PORTB estão habilitados, o bit 3 no
Ao usar ICSP, a peça deve ser fornecida em 4,5V a 5,5V, caso seja registro TRISB deve ser desenergizado para
executado um apagamento em massa. Isso inclui a reprogramação desabilitar o pull-up no RB3 e garantir o bom
do código de proteção, tanto do estado ligado para o estado funcionamento do dispositivo.
desligado. Para todos os outros casos de ICSP, a peça pode ser
programada nas tensões normais de operação. 4: O RB3 não deve flutuar se o LVP estiver habilitado.
Isso significa que valores de calibração, IDs de usuário exclusivos ou código Um dispositivo pull-down externo deve ser usado
de usuário podem ser reprogramados ou adicionados. para padronizar o dispositivo para o modo
Para detalhes completos da programação serial, consulte a operacional normal. Se o RB3 flutuar alto, os
Especificação de Programação de Memória EEPROM para o dispositivos PIC16F870/871 entrarão no modo de
PIC16F87X (DS39025). programação.
Deve-se notar que uma vez que o bit LVP é programado para 0,
apenas 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.
PIC16F870/871
12.0 RESUMO DO CONJUNTO DE INSTRUÇÕES Todas as instruções são executadas dentro de um único ciclo de
instrução, a menos que um teste condicional seja verdadeiro ou o
Cada instrução PIC16F870/871 é uma palavra de 14 bits, contador do programa seja alterado como resultado de uma instrução.
dividido em um OPCODE, que especifica o tipo de instrução, e um ou Neste caso, a execução leva dois ciclos de instrução,
mais operandos, que com o segundo ciclo executado como um NOP. Um ciclo de instrução
especificar a operação da instrução. o consiste em quatro períodos osciladores. Assim, para
Resumo do conjunto de instruções PIC16F870/871 na Tabela 12-2 uma frequência de oscilador de 4 MHz, a instrução normal
lista operações orientadas a byte, orientadas a bits e literais e de o tempo de execução é de 1 ÿs. Se um teste condicional for verdadeiro, ou o
controle . A Tabela 12-1 mostra o campo opcode contador de programa é alterado como resultado de uma
descrições. instrução, o tempo de execução da instrução é de 2 ÿs.
Para instruções orientadas a byte , 'f' representa um designador de A Tabela 12-2 lista as instruções reconhecidas pelo
registro de arquivo e 'd' representa um designador de destino. O Montador MPASMTM .
designador de registro de arquivo especifica qual arquivo
A Figura 12-1 mostra os formatos gerais que o
registrador deve ser usado pela instrução.
instruções podem ter.
O designador de destino especifica onde o resultado da
a operação deve ser colocada. Se 'd' for zero, o resultado é Nota: Para manter a compatibilidade ascendente com
colocado no registrador W. Se 'd' for um, o resultado é colocado futuros produtos PIC16F870/871, não
use as instruções OPTION e TRIS.
no registrador de arquivo especificado na instrução.
Para instruções orientadas a bits , 'b' representa um campo de bits Todos os exemplos usam o seguinte formato para representar um
número hexadecimal:
designador que seleciona o número do bit afetado
pela operação, enquanto 'f' representa o endereço do 0xhh
arquivo no qual o bit está localizado.
onde h significa um dígito hexadecimal.
Para operações literais e de controle , 'k' representa um
constante de oito ou onze bits ou valor literal. FIGURA 12-1: FORMATO GERAL PARA
INSTRUÇÕES
TABELA 12-1: CAMPO OPCODE
Operações de registro de arquivo orientadas a byte
DESCRIÇÕES 13 876 0
Campo Descrição CÓDIGO DE OPERAÇÃO d f (arquivo #)
k Campo literal, dados constantes ou rótulo Operações de registro de arquivo orientadas a bits
13 10 9 7 6 0
x Não importa a localização (= 0 ou 1).
CÓDIGO DE OPERAÇÃO
b (BIT #) f (arquivo #)
O montador irá gerar código com x = 0.
É a forma de uso recomendada para b = endereço de bits de 3 bits
compatibilidade com todas as ferramentas de software Microchip. f = endereço de registro de arquivo de 7 bits
PIC16F870/871
TABELA 12-2: CONJUNTO DE INSTRUÇÕES PIC16F870/871
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, quando 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 alcance estão disponíveis no Manual de Referência da Família
PIC® Mid-Range MCU (DS33023).
PIC16F870/871
12.1 Descrições das Instruções
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 seu lugar, tornando
esta uma instrução 2 TCY .
PIC16F870/871
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'.
PIC16F870/871
PIC16F870/871
dÿ [0,1]
Operação: Nenhuma operação
Operação: (f) ÿ (destino) Status Afetado: Nenhum
Status Afetado: Z
Descrição: Nenhuma operação.
Descrição: O conteúdo do registrador f é
movido para um destino dependente do
status de d. Se d = 0, o destino é o
registrador W. Se d = 1, o destino é o
próprio registro de arquivo f. d = 1 é útil
para testar um registro de arquivo, pois o
sinalizador de status Z é afetado.
PIC16F870/871
dÿ [0,1]
Operação: 00h ÿ WDT,
Operação: Veja a descrição abaixo 0 ÿ prescaler WDT,
Status Afetado: C 1 ÿ PARA,
0 ÿ PD
Descrição: O conteúdo do registrador 'f' é girado um bit
Status Afetado: TO, PD
para a esquerda através do Carry Flag. Se
'd' for 0, o resultado é colocado no Descrição: O bit de status de desligamento, PD é
registrador W. Se 'd' for 1, o resultado é apagado. Bit de status de tempo limite, TO
armazenado de volta no registrador 'f'. está definido. Watchdog Timer e seu
C Registre-se prescaler são apagados.
O processador é colocado no modo
SLEEP com o oscilador parado.
PIC16F870/871
PIC16F870/871
13.0 SUPORTE AO DESENVOLVIMENTO 13.1 Software do Ambiente de Desenvolvimento
Integrado MPLAB
Os microcontroladores PIC® 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
PIC16F870/871
13.3 MPLAB C17 e MPLAB C18 13.6 Montador, Linker e Bibliotecário MPLAB
Compiladores C ASM30
Os sistemas de desenvolvimento de código MPLAB C17 e MPLAB C18 são O montador MPLAB ASM30 produz código de máquina relocável a partir de
compiladores ANSI C completos para a família de microcontroladores linguagem de montagem simbólica para dispositivos dsPIC30F. O compilador
PIC17CXXX e PIC18CXXX da Microchip. Esses compiladores fornecem MPLAB C30 usa o montador para produzir seu arquivo objeto. O montador
recursos de integração poderosos, otimização de código superior e facilidade gera arquivos de objetos relocáveis que podem ser arquivados ou vinculados
de uso não encontrada em outros compiladores. a outros arquivos de objetos relocáveis e arquivamentos para criar um arquivo
executável. As características notáveis do montador incluem:
O vinculador de objetos MPLINK combina objetos relocáveis criados pelo • Linguagem de macro flexível •
montador MPASM e pelos compiladores MPLAB C17 e MPLAB C18 C. Ele Compatibilidade com MPLAB IDE
pode vincular objetos relocáveis de bibliotecas pré-compiladas, usando
diretivas de um script vinculador. 13.7 Simulador de Software MPLAB SIM
• Vinculação eficiente de bibliotecas únicas em vez de muitas O simulador MPLAB SIM suporta totalmente a depuração simbólica usando
arquivos menores os compiladores MPLAB C17 e MPLAB C18 C, bem como o montador
• Manutenibilidade de código aprimorada por agrupamento MPASM. O simulador de software oferece a flexibilidade de desenvolver e
módulos relacionados juntos depurar código fora do ambiente do laboratório, tornando-o uma ferramenta
de desenvolvimento de software excelente e econômica.
• Criação flexível de bibliotecas com fácil listagem, substituição,
exclusão e extração de módulos
PIC16F870/871
13.9 MPLAB ICE 2000 13.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 produtos
ferramenta é baseada nos MCUs FLASH PIC e pode ser
um conjunto completo de ferramentas de projeto de
usada para desenvolver para estes e outros microcontroladores
microcontroladores para microcontroladores PIC. O controle
PIC. O MPLAB ICD 2 utiliza a capacidade de depuração de
de software do emulador de circuito MPLAB ICE 2000 é
circuito integrado nos dispositivos FLASH. Esse recurso,
avançado pelo MPLAB Integrated Development Environment,
junto com o protocolo In-Circuit Serial ProgrammingTM
que permite edição, construção, download e depuração de
(ICSPTM) da Microchip , oferece depuração FLASH
origem a partir de um único ambiente.
econômica no circuito a partir da interface gráfica do usuário
O MPLAB ICE 2000 é um sistema emulador completo com do 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 únicas e de observação,
intercambiáveis permitem que o sistema seja facilmente status da CPU e registros de periféricos. A execução em
reconfigurado para emulação de diferentes processadores. A velocidade máxima permite testar hardware e aplicativos em
arquitetura universal do emulador de circuito MPLAB ICE tempo real. O MPLAB ICD 2 também serve como programador
permite a expansão para suportar novos microcontroladores PIC. de desenvolvimento para dispositivos PIC selecionados.
O sistema emulador de circuito MPLAB ICE 2000 foi projetado
como um sistema de emulação em tempo real com recursos 13.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
sistema operacional Microsoft® Windows de 32 bits foram O PRO MATE II é um programador de dispositivo universal
escolhidos para melhor disponibilizar esses recursos em um compatível com CE com verificação de tensão programável
aplicativo simples e unificado. em VDDMIN e VDDMAX para máxima confiabilidade. Possui
um display LCD para instruções e mensagens de erro e um
13.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 PIC sem uma conexão com o PC. Ele também
O emulador de circuito universal MPLAB ICE 4000 destina-se pode definir a proteção de código neste modo.
a fornecer ao engenheiro de desenvolvimento de produto um
conjunto completo de ferramentas de projeto de 13.13 Programador de Desenvolvimento
microcontrolador para microcontroladores PIC de ponta. O
PICSTART Plus
controle de software do emulador de circuito MPLAB ICE é
fornecido pelo MPLAB Integrated Development Environment, O programador de desenvolvimento PICSTART Plus é um
que permite edição, construção, download e depuração de programador de protótipo fácil de usar e de baixo custo. Ele
origem a partir de um único ambiente. se conecta ao PC através de uma porta COM (RS-232). O
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 PIC de até 40 pinos. Dispositivos de contagem
dispositivos dsPIC30F e PIC18XXXX. Seus recursos
de pinos maiores, como o PIC16C92X e o PIC17C76X,
avançados de emulador incluem disparo e temporização
podem ser suportados com um soquete adaptador. O
complexos, até 2 Mb de memória de emulação e a capacidade
programador de desenvolvimento PICSTART Plus é
de visualizar variáveis em tempo real. 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.
PIC16F870/871
13.14 Placa de Demonstração 13.17 Placa de Demonstração PICDEM
PICDEM 1 PIC MCU 3 PIC16C92X
PIC16F870/871
13.20 PICDEM 18R PIC18C601/801 Placa de 13.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 8 bits multiplexado/desmultiplexado 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 13.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
13.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 PIC. o
• Kit de desenvolvedores CAN para aplicativos de rede
pequena pegada PIC16C432 e PIC16C433 são usados
como escravos na comunicação LIN e apresentam transceptores LIN automotiva
integrados. Um microcontrolador FLASH PIC16F874 serve como • Placas de design analógico e software de design de filtro
mestre. Todos os três microcontroladores são programados com • Avaliação de carregamento da bateria PowerSmart/
firmware para fornecer LIN kits de calibração
comunicação de ônibus. • Kit de desenvolvimento IrDA®
• desenvolvimento de microID e desenvolvimento de rfLabTM
13.22 PICkitTM 1 FLASH Starter Kit Programas
PIC16F870/871
NOTAS:
PIC16F870/871
14.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.
PIC16F870/871
FIGURA 14-1: PIC16FXXX GRÁFICO DE TENSÃO-FREQUÊNCIA
6,0 V
5,5 V
5,0 V
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
Tensão
4,0 V
3,5 V
3,0 V
Frequência
Equação 1: FMAX = (6,0 MHz/V) (VDDAPPMIN – 2,0V) + 4 MHz; VDDAPPMIN = 2,0V - 3,0V
Equação 2: FMAX = (10,0 MHz/V) (VDDAPPMIN – 3,0V) + 10 MHz; VDDAPPMIN = 3,0V - 4,0V
Nota 1: VDDAPPMIN é a tensão mínima do dispositivo PIC® na aplicação.
Nota 2: FMAX tem uma frequência máxima de 10 MHz.
PIC16F870/871
14.1 Características DC: PIC16F870/871 (Industrial, Estendido)
PIC16LF870/871 (Comercial, Industrial)
Parâmetro
Sim Característica Tipo mín.† Unidades máximas Condições
Não.
D003 VPOR VDD Tensão inicial para — Vss — V Veja a seção sobre Power-on Reset para detalhes
garantir o Power-on interno
Redefinir sinal
D004* SVDD VDD Rise Rate para garantir o sinal de 0,05 — — V/ms Consulte a seção sobre Reinicialização na inicialização para obter detalhes
Power-on Reset interno
D005 Redefinição de Brown-out VBOR 3.7 4,0 4,35 V BOREN bit na palavra de configuração habilitado
Tensã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: 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 e 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 para 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 é medida com a peça no modo
SLEEP, com todos os pinos de E/S em estado de alta impedância e ligados 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.
PIC16F870/871
14.1 Características DC: PIC16F870/871 (Industrial, Estendido)
PIC16LF870/871 (Comercial, Industrial) (Continuação)
Param
Sim Característica Tipo mín.† Unidades máximas Condições
No.
7: Quando o BOR está habilitado, o dispositivo funcionará corretamente até que o ponto de desarme de tensão VBOR seja alcançado.
PIC16F870/871
14.2 Características DC: PIC16F870/871 (Industrial)
Parâmetro
Sim Característica Mín. Typ† Max Units 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
D070 IPURB PORTB Fraco Pull-up 50 250 400 ÿA VDD = 5V, VPIN = VSS
Atual
2: A corrente de fuga no pino MCLR é fortemente dependente do nível de tensão aplicado. O especificado
níveis 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.
PIC16F870/871
14.2 Características DC: PIC16F870/871 (Industrial) (Continuação)
Parâmetro
Sim Característica Mín. Typ† Max Units Condições
Não.
D092 OSC2/CLKO (configuração RC osc) VDD – 0,7 — — V IOH = -1,3 mA, VDD = 4,5V, -40ÿC a +85ÿC
Especificações de carregamento
capacitivo nos pinos de saída
D121 VDRW VDD para leitura/gravação VMIN - 5,5 V Usando EECON para ler/escrever
VMIN = tensão de operação mínima
D122 TDEW Tempo de ciclo de apagamento/gravação —4 8 EM
D131 VPR VDD para leitura VMIN - 5,5 V VMIN = tensão de operação mín.
D132a VDD para apagar/gravar VMIN - 5,5 V Usando EECON para ler/escrever,
VMIN = tensão de operação mínima
D133 TPEW Erase/Write tempo de ciclo —4 8 EM
*
Esses parâmetros são caracterizados mas não testados.
† Os dados na coluna "Typ" estão a 5V, 25°C, salvo indicação em contrário. Esses parâmetros são para orientação de projeto
apenas e não são testados.
Nota 1: Na configuração do oscilador RC, o pino OSC1/CLKI é uma entrada Schmitt Trigger. Não é recomendado que o
PIC16F870/871 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.
PIC16F870/871
14.3 Características DC: PIC16F870/871 (Estendido)
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
D070A IPURB PORTB Corrente de pull-up fraca 50 250 400 ÿA VDD = 5V, VPIN = VSS
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
PIC16F87X 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.
PIC16F870/871
14.3 Características DC: PIC16F870/871 (Estendido) (Continuação)
Parâmetro
Sim Característica Tipo mín.† Unidades máximas Condições
Não.
D121 VDRW VDD para leitura/gravação VMIN — 5,5 V Usando EECON para ler/escrever,
VMIN = mín. tensão operacional
D122 TDEW Tempo de ciclo de apagamento/gravação —4 8 EM
2: A corrente de fuga no pino MCLR é fortemente dependente do nível de tensão aplicado. O especificado
níveis 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.
PIC16F870/871
14.4 Simbologia do Parâmetro de Tempo
Os símbolos dos parâmetros de tempo foram criados
seguindo um dos seguintes formatos:
Alta impedância
Eu 2C apenas
ST
QUE Entrada de DADOS em espera O QUE condição PARAR
STA Condição de INICIAR
PIC16F870/871
FIGURA 14-3: CONDIÇÕES DE CARGA
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
Q4 Q1 Q2 Q3 Q4 Q1
OSC1
1 4
3 3 4
2
CLKO
PIC16F870/871
TABELA 14-1: REQUISITOS DE CRONOGRAMA DE RELÓGIO EXTERNO
Param
Sim Característica Tipo mín.† Unidades máximas Condições
No.
† 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 operacionais
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 relógio externa é usada, o valor "Max."
limite de tempo de ciclo é "DC" (sem relógio) para todos os dispositivos.
PIC16F870/871
FIGURA 14-5: CLKO E TEMPO DE E/S
Q4 Q1 Q2 Q3
OSC1
10 11
CLKO
13 12
18
14 19 16
Pino de E/S
(Entrada)
17 15
Pino de E/S
Valor antigo Novo valor
(Resultado)
20, 21
Parâmetro
Sim Característica Mín. Modelo† Máx. Condições das unidades
Não.
PIC16F870/871
FIGURA 14-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 14-3: REINICIALIZAÇÃO, TEMPORIZADOR WATCHDOG, TEMPORIZADOR DE INICIALIZAÇÃO DO OSCILADOR, TEMPORIZADOR DE LIGAÇÃO,
E REQUISITOS DE REINICIALIZAÇÃO DE BROWN-OUT
Param
Sim Característica Mín. Modelo† Unidades máximas Condições
No.
30 2 —
Largura de pulso TmcL MCLR (baixa) — ÿs VDD = 5V, -40°C a +85°C
31* Período de tempo limite do temporizador do watchdog TWDT 7 18 33 ms VDD = 5V, -40°C a +85°C
(Sem pré-escalador)
32 TOST Período do temporizador de inicialização de oscilação — 1024 TOSC — —TOSC = período OSC1
33* Período do temporizador de inicialização do TPWRT 28 72 132 ms VDD = 5V, -40°C a +85°C
34 TIOZ — — 2.1
Alta impedância de E/S de MCLR Baixa ou ÿs
Reinicialização do temporizador do watchdog
PIC16F870/871
FIGURA 14-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
parâmetro 42
Com Pré-escalador 10 — — ns
41* Tt0L Largura de Pulso Baixa T0CKI Sem pré-escalador 0,5 TCY + 20 — — ns Também deve atender
45* Tt1H T1CKI High Time Synchronous, Prescaler = 1 0,5 TCY + 20 — — ns Também deve atender
15 — — ns parâmetro 47
Síncrono, Padrão (F)
Pré-escalador = 2,4,8 25 — — ns
Estendido (LF)
Estendido (LF) 50 — — ns
46* TT1L T1CKI Síncrono de Tempo Baixo, Pré-escalonador = 1 0,5 TCY + 20 — — ns Também deve atender
15 — — ns parâmetro 47
Síncrono, Padrão (F)
Pré-escalador = 2,4,8 25 — — ns
Estendido (LF)
Estendido (LF) 50 — — ns
47* Tt1P Período de entrada T1CKI Síncrono Padrão (F) Maior de: — — ns N = valor de pré-escala (1, 2, 4, 8)
30 ou TCY + 40
N
PIC16F870/871
FIGURA 14-9: CAPTURAR/COMPARAR/HORÁRIOS PWM (CCP1)
RC2/CCP1
(Modo de captura)
50 51
52
RC2/CCP1
(Comparar ou modo PWM)
53 54
Padrão (F) 10 — — ns
Com Pré-escalador
Estendido (LF) 20 — — ns
52* Período de entrada TccP CCP1 3 TCY + 40 — — ns N = valor de pré-escala (1,4 ou 16)
N
Estendido (LF) — 25 50 ns
54* Tempo de queda de saída TccF CCP1 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 não são
testado.
PIC16F870/871
FIGURA 14-10: TEMPORIZAÇÃO DA PORTA ESCRAVO PARALELA (SOMENTE PIC16F871)
RE2/CS
RE0/RD
RE1/WR
65
RD7: RD0
62
64
63
Observação: Consulte a Figura 14-3 para obter as condições de carga.
62 20 — — ns
TdtV2wrH Dados válidos antes de WRÿ ou CSÿ (tempo de configuração)
25 — —
ns Somente alcance estendido
63* TwrH2dtI WRÿ ou CSÿ para dados inválidos (tempo de espera) Padrão(F) 20 — — ns
Estendido(LF) 35 — — ns
64 TrdL2dtV RDÿ e CSÿ para saída de dados válida — — 80 ns
— — 90 ns Somente alcance estendido
65 TrdH2dtI RDÿ ou CSÿ para saída de dados inválido 10 - 30 ns
*
Esses parâmetros são caracterizados mas não testados.
† Os dados na coluna "Typ" estão a 5V, 25°C, salvo indicação em contrário. Esses parâmetros são apenas para orientação do projeto e não são
testado.
PIC16F870/871
FIGURA 14-11: CRONOGRAMA DE TRANSMISSÃO SÍNCRONA USART (MESTRE/ESCRAVO)
RC6/TX/CK
121
alfinete
121
RC7/RX/DT
alfinete
120
122
Estendido(LF) † — — 50 ns
Os dados na coluna “Typ” estão em 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
testado.
RC6/TX/CK
alfinete
125
RC7/RX/DT
alfinete
126
† Os dados na coluna “Typ” estão em 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
testado.
PIC16F870/871
TABELA 14-9: PIC16F870/871 (INDUSTRIAL)
PIC16LF870/871 (INDUSTRIAL)
Parâmetro
Sim Característica Mín. Modelo† Máx. Unidades Condições
Não.
A03 NÃO — —
Erro de linearidade integral <±1 LSb VREF = VDD = 5,12V, VSS ÿ
VAIN ÿ VREF
— —
A04 Erro de linearidade diferencial EDL <±1 LSb VREF = VDD = 5,12V, VSS ÿ
VAIN ÿ VREF
A21 VREF+ Tensão de referência alta VDD - 2,5 V VDD + 0,3VV Deve atender às especificações. A20
A22 VREF- Tensão de referência baixa VSS - 0,3 V VREF+ – 2.0VV Deve atender às especificações. A20
Nota 1: Quando o A/D está desligado, ele não consumirá nenhuma corrente além da corrente de fuga menor. A especificação de corrente de desligamento inclui qualquer
vazamento do módulo A/D.
2: A corrente VREF é do pino RA3 ou pino VDD , o que for selecionado como entrada de referência.
3: O resultado da conversão A/D nunca diminui com o aumento da tensão de entrada e não possui códigos ausentes.
PIC16F870/871
FIGURA 14-13: TEMPO DE CONVERSÃO A/D
(TOSC/2)(1)
131
Q4
130
ADIF
VAI FEITO
AMOSTRAGEM PARADA
AMOSTRA
Nota 1: 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 a
instrução SLEEP seja executada.
130 TAD A/D período de relógio Padrão (F) 1,6 — — ÿs baseado em TOSC, VREF ÿ 3,0V
(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 de relógio A/D estiver
selecionado como RC, um tempo de
TCY é adicionado antes do relógio A/D
começa. 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 não são
testado.
PIC16F870/871
NOTAS:
PIC16F870/871
15.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 15-1: IDD TÍPICO vs. FOSC SOBRE VDD (MODO HS)
5,5 V
4
5,0 V
(mA)
IDD
4,5 V
3
4,0 V
2 3,5 V
3,0 V
2,5 V
2,0 V
0
4 6 8 10 12 14 16 18 20
F OSC (MHz)
FIGURA 15-2: IDD MÁXIMO vs. FOSC SOBRE VDD (MODO HS)
5,5 V
5
5,0 V
(mA)
IDD
4
4,5 V
4,0 V
3
3,5 V
2
3,0 V
1
2,5 V
2,0 V
0
4 6 8 10 12 14 16 18 20
F OSC (MHz)
PIC16F870/871
FIGURA 15-3: IDD TÍPICO vs. FOSC SOBRE VDD (MODO XT)
1,6
5,0 V
1,0
4,5 V
(mA)
IDD
0,8
4,0 V
3,5 V
0,6
3,0 V
0,4
2,5 V
2,0 V
0,2
0,0
0,0 0,5 1,0 1,5 2,0 2,5 3,0 3,5 4,0
ESCURO (MHz)
FIGURA 15-4: IDD MÁXIMO vs. FOSC SOBRE VDD (MODO LP)
2,0
1,8
1,4
5,0 V
1.2
4,5 V
(mA)
IDD
1,0
4,0 V
0,8
3,5 V
0,6
3,0 V
2,5 V
0,4
2,0 V
0,2
0,0
0,0 0,5 1,0 1,5 2,0 2,5 3,0 3,5 4,0
ESCURO (MHz)
PIC16F870/871
FIGURA 15-5: IDD TÍPICO vs. FOSC SOBRE VDD (MODO LP)
90
70
5,0 V
60
4,5 V
50
4,0 V
(uA)
IDD
40 3,5 V
3,0 V
30
2,5 V
20 2,0 V
10
0
20 30 40 50 60 70 80 90 100
ESCURO (kHz)
FIGURA 15-6: IDD MÁXIMO vs. FOSC SOBRE VDD (MODO XT)
120
110 5,5 V
Típico: média estatística @ 25°C
Máximo: média + 3ÿ (-40°C a 125°C)
100 Mínimo: média – 3ÿ (-40°C a 125°C)
5,0 V
90
80
4,5 V
70
4,0 V
60
(uA)
IDD
3,5 V
50
3,0 V
40
2,5 V
30
2,0 V
20
10
0
20 30 40 50 60 70 80 90 100
ESCURO (kHz)
PIC16F870/871
FIGURA 15-7: MÉDIA FOSC vs. VDD PARA VÁRIOS VALORES DE R (MODO RC, C = 20 pF, 25ÿC)
4,0
3,3kÿ
3,5
3,0
5,1kÿ
2,5
2,0
Frequência
(MHz)
10kÿ
1,5
1,0
0,5
100kÿ
0,0
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5
VDD (V)
FIGURA 15-8: MÉDIA FOSC vs. VDD PARA VÁRIOS VALORES DE R (MODO RC, C = 100 pF, 25ÿC)
2,0
1,8
1,6
3,3 kÿ
1,4
1.2
5,1 kÿ
Frequência
(MHz)
1,0
0,8
0,6 10kÿ
0,4
0,2
100kÿ
0,0
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5
VDD (V )
PIC16F870/871
FIGURA 15-9: MÉDIA FOSC vs. VDD PARA VÁRIOS VALORES DE R (MODO RC, C = 300 pF, 25ÿC)
1,0
0,9
0,8
3,3 kÿ
0,7
0,6
5,1 kÿ
Frequência
(MHz)
0,5
0,4
0,3
10kÿ
0,2
0,1
100kÿ
0,0
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5
VD D (V)
FIGURA 15-10: IPD vs. VDD (MODO SLEEP, TODOS OS PERIFÉRICOS DESABILITADOS)
100,00
Máx. (85C)
(ÿA)
IPD
1,00
0,10
Tipo (25C)
0,01
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5
VDD (V)
PIC16F870/871
FIGURA 15-11: ÿIBOR vs. VDD SOBRETEMPERATURA
1.2
0,8
REINICIALIZAÇÃO máx.
(mA)
ÿI
0,6
Indeterminado
Tipo RESET (25°C)
Estado
0,4
Dispositivo em SLEEP
Dispositivo em RESET
0,2
SONO máx.
VDD (V)
90
70
60
50
ÿITMR1
(uA)
40
Máx.
30
Tipo (25C)
20
10
0
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5
VDD (V)
PIC16F870/871
FIGURA 15-13: TÍPICO E MÁXIMO ÿIWDT vs. VDD SOBRETEMPERATURA
14
10
Máx. (85C)
8
ÿIWDT
(uA)
Tipo (25C)
0
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5
VDD (V)
FIGURA 15-14: PERÍODO DE WDT TÍPICO, MÍNIMO E MÁXIMO vs. VDD (-40ÿC A 125ÿC)
60
40
Máx. (125C)
30
Período
WDT
(ms)
20
Tipo (25C)
10 Mínimo (-40C)
0
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5
VDD (V)
PIC16F870/871
FIGURA 15-15: PERÍODO MÉDIO DE WDT vs. VDD SOBRETEMPERATURA (-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)
125C
35
85C
30
25
Período
WDT
(ms)
25C
20
-40C
15
10
0
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5
VDD (V)
FIGURA 15-16: TÍPICO, MÍNIMO E MÁXIMO VOH vs. IOH (VDD = 5V, -40ÿC A 125ÿC)
5,0
Máx (-40C)
4,5
Tipo (25C)
4,0
VOH
(V)
3,5
Mínimo (125C)
3,0
2,0
0 5 10 15 20 25
IOH (-mA)
PIC16F870/871
FIGURA 15-17: TÍPICO, MÍNIMO E MÁXIMO VOH vs. IOH (VDD = 3V, -40ÿC A 125ÿC)
3,0
Máx (-40C)
Típico: média estatística @ 25°C
2,5 Máximo: média + 3ÿ (-40°C a 125°C)
Mínimo: média – 3ÿ (-40°C a 125°C)
Tipo (25C)
2,0
VOH
(V)
1,5
Mínimo (125C)
1,0
0,5
0,0
0 5 10 15 20 25
IOH (-mA)
FIGURA 15-18: VOL TÍPICO, MÍNIMO E MÁXIMO vs. LIO (VDD = 5V, -40ÿC A 125ÿC)
2,0
1,8
1.2
VOL
(V)
1,0
Máx. (125C)
0,8
0,6
Tipo (25C)
0,4
Mínimo (-40C)
0,2
0,0
0 5 10 15 20 25
LIO (-mA)
PIC16F870/871
FIGURA 15-19: VOL TÍPICO, MÍNIMO E MÁXIMO vs. LIO (VDD = 3V, -40ÿC A 125ÿC)
3,0
2,0
VOL
(V) 1,5
Máx. (125C)
1,0
Tipo (25C)
0,5
Mínimo (-40C)
0,0
0 5 10 15 20 25
LIO (-mA)
FIGURA 15-20: VIN MÍNIMO E MÁXIMO vs. VDD, (ENTRADA TTL, -40ÿC A 125ÿC)
1,8
1.2
Mínimo (125C)
1,0
VIN
(V)
0,8
0,6
0,4
0,2
0,0
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5
VDD (V)
PIC16F870/871
FIGURA 15-21: VIN MÍNIMO E MÁXIMO vs. VDD (ENTRADA ST, -40ÿC A 125ÿC)
4,5
3,5
3,0
2,5
VIN
(V)
2,0
1,0
0,5
0,0
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5
VDD (V)
FIGURA 15-22: VIN MÍNIMO E MÁXIMO vs. VDD ( ENTRADA I2C, -40ÿC A 125ÿC)
3,5
2,5
Mínimo Alto (-40C)
VIN
(V) Mínimo Baixo (25C)
1,5
1,0
0,5
0,0
2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5
VDD (V)
PIC16F870/871
NOTAS:
PIC16F870/871
16.0 INFORMAÇÕES DA EMBALAGEM
XXXXXXXXXXXXXXX PIC16F870-I/SP
XXXXXXXXXXXXXXX
YYWNNNN 0317017
XXXXXXXXXXXXXXX PIC16F870-I/SO
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX
YYWNNNN 0310017
XXXXXXXXXXXX PIC16F870-I/SS
XXXXXXXXXXXX
YYWNNNN 0320017
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.
PIC16F870/871
Informações de marcação do pacote (cont.)
XXXXXXXXXXXXXXX PIC16F871-I/P
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX
YYWNNNN 0312017
XXXXXXXXX PIC16F871
XXXXXXXXX -I/PT
XXXXXXXXX
YYWNNNN 0320017
XXXXXXXXX PIC16F871
XXXXXXXXX -I/L
XXXXXXXXX
YYWNNNN 0320017
PIC16F870/871
Plástico fino de 28 derivações em linha dupla (SP) - 300 mil (PDIP)
Nota: Para os desenhos de embalagem mais atuais, consulte a Especificação de Embalagem de Microchip localizada
em http://www.microchip.com/packaging
E1
n 1
ÿ
E
A2
UMA
eu
c
ÿ 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 geral entre linhas § eB .320 0,350 .430 8.13 8,89 10,92
PIC16F870/871
Contorno pequeno de plástico de 28 derivações (SO) - Largo, 300 mil (SOIC)
Nota: Para os desenhos de embalagem mais atuais, consulte a Especificação de Embalagem de Microchip localizada
em http://www.microchip.com/packaging
E1
p
B
2
n 1
h
ÿ
45ÿ
c
UMA A2
ÿ 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
PIC16F870/871
Contorno pequeno de plástico retrátil de 28 derivações (SS) - 209 mil, 5,30 mm (SSOP)
Nota: Para os desenhos de embalagem mais atuais, consulte a Especificação de Embalagem de Microchip localizada
em http://www.microchip.com/packaging
E1
2
n 1
UMA
A2
A1
ÿ
eu
ÿ
* 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
PIC16F870/871
Plástico de 40 derivações em linha dupla (P) - 600 mil (PDIP)
Nota: Para os desenhos de embalagem mais atuais, consulte a Especificação de Embalagem de Microchip localizada
em http://www.microchip.com/packaging
E1
2 ÿ
n 1
UMA A2
eu
c
B1
ÿ 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 .650 .680 15,75 16,51 17,27
PIC16F870/871
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)
Nota: Para os desenhos de embalagem mais atuais, consulte a Especificação de Embalagem de Microchip localizada
em http://www.microchip.com/packaging
E1
#leads=n1
D1 D
2
1
B
n ÿ
CH x 45
ÿ
UMA
ÿ
ÿ 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
PIC16F870/871
Porta-cavacos com chumbo de plástico de 44 derivações (L) - Quadrado (PLCC)
Nota: Para os desenhos de embalagem mais atuais, consulte a Especificação de Embalagem de Microchip localizada
em http://www.microchip.com/packaging
E1
#leads=n1
D1 D
n 1 2
A2 UMA
35ÿ
B1
c
B A1
ÿ
p
E2 D2
Chanfro de canto (outros) CH2 .000 .005 .010 0,00 0,13 0,25
Largura total E .685 .690 .695 17,40 17,53 17,65
PIC16F870/871
APÊNDICE A: HISTÓRICO DE REVISÃO APÊNDICE B: DISPOSITIVO
DIFERENÇAS
Revisão A (dezembro de 1999) As diferenças entre os dispositivos listados nestes dados
Folha de dados original para a família PIC16F870/871. são mostradas na Tabela B-1.
Tipos de pacote 28 pinos DIP, SOIC, SSOP PDIP de 40 pinos, PLCC de 44 pinos, TQFP
PIC16F870/871
APÊNDICE C: CONVERSÃO APÊNDICE D: MIGRAÇÃO DE
CONSIDERAÇÕES MÉDIO A
DISPOSITIVOS MELHORADOS
Este apêndice discute as considerações para a conversão de
versões anteriores de um dispositivo para as versões anteriores. Uma discussão detalhada das diferenças entre os
listados nesta folha de dados. Normalmente, essas alterações são dispositivos MCU de médio porte (ou seja, PIC16CXXX) e o
devido às diferenças na tecnologia de processo utilizada. dispositivos aprimorados (ou seja, PIC18FXXX) é fornecido em
Um exemplo deste tipo de conversão é de um AN716, “Migrando Projetos de PIC16C74A/74B para
PIC17C756 para um PIC18F8720.
PIC18C442.” As mudanças discutidas, enquanto o dispositivo
Não aplicável específicos, são geralmente aplicáveis a todas as gamas médias a
migrações de dispositivos aprimoradas.
PIC16F870/871
APÊNDICE E: MIGRAÇÃO DE
HIGH-END TO
DISPOSITIVOS MELHORADOS
PIC16F870/871
NOTAS:
PIC16F870/871
ÍNDICE
UMA
Temporizador1 ................................................. ......................... 50
Temporizador2 ......................... .............................................. 53
DE ANÚNCIOS ............................................... ....................................... 79
USART Assíncrono Receber......................... 68 USART Recepção
Requisitos de aquisição ........ ................................... 82 Registrador
Assíncrona (Modo de 9 bits) ..... ........ 70 USART
ADCON0........... ....................................... 79 Registro
Transmissão ........................................ ......... 66 Temporizador de
ADCON1.... .................................................. 79 Bit
ADIF.............................................. ......................... 80 Registro Watchdog .............................. .......................... 99
BOR. Consulte Reinicialização de Brown-out.
ADRESH ....................... ......................... 79 Cadastro
Bit BRGH .................................................. ......................... 63 Reinicialização
ADRSL ............ ......................................... 79 Pinos da Porta
de Brown-out (BOR)............ ......................... 87, 91, 92, 93 Status BOR
Analógica ..... ............................................. 41, 42 Associados
(BOR Bit) ............... ......................... 23
Registradores e Bits .................................. 85 Calculando o Tempo
de Aquisição ....... ......................... 82 Configurando os pinos da porta C
analógica.......... ......................... 83 Configurando a
Compiladores
Interrupção ....................... ......................... 81 Configurando o
C MPLAB C17.............................................. ............... 112 MPLAB
Módulo........................ ......................... 81 Relógio de
C18 .............................. .............................. 112 MPLAB
conversão... .................................................. ... 83
C30................ ............................................. 112 Capturar/Comparar /
Conversões ............................................. ................... 84
PWM (CCP) .......................................... 55 Registros Associados Capturar,
Atrasos .................................... ......................................... 82 Efeitos
Comparar e Temporizar1......................... 59 PWM e
de um RESET . .................................................. .. 85 bits GO/
Temporizador2............ ......................... 60 Modo de
DONE................................................ ................... 80 Impedância do
Captura .......... ........................................ 56
Interruptor de Amostragem Interno (Rss) ................ 82 Operação
CCP1IF .................................................. .......... 56 Pré-
Durante o Sono... ......................................... 85 Registros de
escalonador .................................. ......................... 56 Recursos
resultados...... .................................................. .. 84 Impedância da
de Cronômetro CCP ....................... ......................... 55
fonte ............................................. ......... 82 Atrasos de
Comparar a Saída de Gatilho Especial do CCP1........ ......... 57 Modo
tempo ....................................... ......................... 82 Classificações
Comparar ......................................... ......................... 57 Modo de
Máximas Absolutas ......................... ......................... 117 Registro
interrupção do software......................... ............ 57 Acionador
ADCON0 ....................... .......................................... 13 Registro
de Evento Especial .................. ......................... 57 Modo
ADCON1..... .................................................. ........ 14 Registros
PWM.............................. ....................................... 58 Ciclo de
ADRESH .......... .................................................. 13 Registro
Trabalho ........ .................................................. 58 Exemplo de
ADRESL ............................................. .................. 14 Conversor Analógico-
Frequências/Resoluções (tabela).......... 59 Período
Digital. Veja A/D.
PWM ......................... ......................... 58 Configuração para
Notas de Aplicação
operação PWM ....................... ............... 59 Gatilho de Evento
AN552 (Implementando o Despertar ao Pressionar a Tecla) ......... 35
Especial e Conversões A/D .............. 57 CCP. Consulte
AN556 (Implementando uma Leitura de Tabela) ....................... .... 24
Capturar/Comparar/PWM.
Montador MPASM Montador ............................................. ......... 111
Registros Associados de Recepção Assíncrona ....................... ..............
69 Recepção Assíncrona (Modo 9 bits)
Registro CCP1CON................................................ ............ 13 Bit
CCP1M0 .............................. ......................... 55 CCP1M1
Bit .......... .................................................. ............ 55 Bit
Registros Associados ........................................................ .. 71
CCP1M2 .............................. ......................... 55 CCP1M3
B Bit ......... .................................................. ............ 55 Bits
CCP1X .................................. ......................................... 55 CCP1Y
Banco, Memória de Dados ............................................. ......... 11 Gerador
Bit ........ .................................................. ................ 55 Registro
de Taxa de Transmissão (BRG)
CCPR1H .............................. ......................... 13, 55 Registro
Registros Associados ........................................................ .. 63
CCPR1L ................... ......................... 13, 55 Exemplos de código Alterando
Diagramas de Blocos A/D ............................................. ....................................
81 Modelo de Entrada Analógica .......... ......................................... 82 entre Prescalers de Captura ... .......... 56 Leitura de dados de
EEPROM .................................. ......................... 29 Gravação de
Operação do Modo de Captura ... ......................................... 56
dados EEPROM ........................ .............. 29 Leitura do programa
Operação do modo de comparação ..... ......................... 57 Lógica de
FLASH.... .................................... 30 Gravação de programa
interrupção .......... .................................................. . 97 Circuito de
FLASH.. ............................................. 31 Endereçamento
REINICIALIZAÇÃO no chip ........................................ ... 91
Indireto. .................................................. .. 24 Inicializando o
PIC16F870.............................................. ......................... 5
PIC16F871......................... ....................................... 6 PORTC PORTA ............................................. ......... 33 Salvando os Registros
(Substituição de Saída Periférica) ......................... 37 PORTD (No STATUS, W e PCLATH na RAM ....................... ......................... 98
PIC16F870/871
D Endereçamento Indireto ........................................................ ..........
Dados EEPROM ................................................. .................... 27 25 Registro FSR .................................. ......................... 11,
24 Registro INDF ........................ ......................... 24
Registros Associados .................... ......................... 32
Proteção de Código ........................ ......................... 31 Descrições das Instruções ......... ....................................... 105
Formato de Instrução.... .................................................. ....... 103
Leitura ......... .................................................. ....... 29
Conjunto de Instruções ........................................ .........................
Proteção contra gravação espúria ........................................ ....
103 ADDLW......... ........................................ 105
31 Verificação de Gravação .................................... .........................
ADDWF .................................................. ................... 105
31 Escrevendo para ......................... .........................................
ANDLW .................................... ....................................... 105
29 Memória de dados... .................................................. .......... 11
ANDWF........ .................................................. ........... 105
Seleção de Banco (RP1:RP0 Bits) ....................... ...............
BCF ........................................ ....................................... 105
11 Registros de Uso Geral .............................. ........... 11
BSF........... .................................................. .............. 105
Mapa de Arquivo de Registro .............................. .........................
BTFSC .................... .................................................. 105
12 Registros de Funções Especiais ......................... ...............
BTFSS .................................................... ......................... 105
13 Gráficos e Tabelas de Características DC e AC ........ 137 DC C
CHAMADA .......................... ......................................... 106
características PIC16F870/871 (Estendido) ......................................
CLRF . .................................................. ......................... 106
123 PIC16F870/871 ( Industrial).........................................
CLRW .......................... ......................................... 106
121 PIC16F870/871 (Industrial, Estendido) e PIC16LF870/871
CLRWDT .... .................................................. ............ 106
(Comercial, Industrial)........ 119 Placas de Demonstração
COMF ................................... ................................... 106
PICDEM 1 .......................... ......................... 114
DECF.......... .................................................. ......... 106
PICDEM 17 .......... .................................................. ... 114 PICDEM
DECFSZ ........................................ ......................... 107 IR
18R PIC18C601/801.............................. 115 PICDEM 2
PARA ................... .................................................. 107
Plus ... .................................................. .... 114 PICDEM 3
INCF ............................................. ......................... 107
PIC16C92X ............................................. ... 114 PICDEM
INCFSZ ...................... .............................................. 107
4 ................................................... ......................... 114
IORLW. .................................................. ................... 107
PICDEM LIN PIC16C43X ......................... ................ 115
IORF ................................... ......................................... 107
PICDEM USB PIC16C7X5.............................. .......... 115
MOVF ....... .................................................. .............. 108
PICDEM.net Internet/Ethernet ........................ 114 Suporte
MOVLW .................................... .................................. 108
ao Desenvolvimento ............................................. ......... 111
MOVWF......... .................................................. .... 108
Dispositivo Di diferenças .................................................... ...........
NOP .................................................... ..............................
157 Visão geral do dispositivo .................................. .........................
108 RETFIE .................. .................................................. 108
5 Endereçamento Direto............... ........................................ 25
RETLW ................................................. ......................... 108
RETORNO .......................... ......................................... 109
RLF......... .................................................. .........................
E 109 RRF .............................. ......................................... 109
DORMIR .... .................................................. ................ 109
Registo EEADR ........................................................ ................. 15
SUBLW .............................. ....................................... 109
Registro EEADRH .............................. ......................... 15 Registro
SUBWF....... .................................................. ............ 109
EECON1......... ......................................... 15, 27 Registro
SWAPF ........................................ ......................... 110
EECON2.. .................................................. ..... 15, 27 Registro
XORLW ............... .................................................. ... 110
EEDATA ........................................ ....................... 15 Registro
XORWF ................................................... ......................... 110
EEDATH ........................ ....................................... 15 Características
Elétricas........ .......................................... 117 Tabela Resumo ........................ .............................. 104
Errata ..... .................................................. ......................... 4 Interrupção INT (RB0/INT). Consulte Fontes de interrupção.
INTCON .................................................... .................................. 15
Ferramentas de Avaliação e Programação................ .................. 115
Registro INTCON ......................... ........................................ 13, 15
F GIE Bit ..... .................................................. ......... 18 INTE
Instruções de Firmware................................................ ........ 103 Bit .............................. ......................................... 18 INTF
Memória de Programa FLASH ....................................... .............. Bit ....... .................................................. .............. 18 PEIE
27 Registros Associados .................................... ......... 32 Bit ................................... ................................... 18 RBIE
Proteção de Código .............................. ......................... 31 Bit ................... .................................................. ......... 18
Bits de configuração e estado de leitura/gravação .............. ...... RBIF Bit ........................................ ......................... 18, 35
32 Leitura ....................................... .................................. 30 T0IE Bit ......... .................................................. .. 18 Interruptor
Proteção contra gravação espúria .................. .............................. de Amostragem Interna (Rss) Impedância ....................... 82 Fontes
31 Proteção contra gravação ....................... ......................... de Interrupção ............ ............................................. 87, 96
32 Verificação de Gravação .......... .................................................. ..... Interrupção- On-Change (RB7:RB4).................................. 35
31 Escrevendo para ....................................... ......................... RB0/INT Pino, Externo.. ......... ....................................... 97
30 Registro FSR .......... ....................................... 13, 14, 15 TMR0 Estouro......... .................................................. 97
USART Receber/Transmitir Concluído .......................... 61
EU
PIC16F870/871
Interrupções, Habilitar Bits P
Habilitar Interrupção Global (Bit GIE) .......................... 18, 96
Embalagem................................................. ......................... 149 Informações
Interrupção na Mudança (RB7:RB4) Habilitar (Bit
de Marcação ........................ .......................... 149 Porta Escrava
RBI) ............................................. ......... 18, 97 Habilitar
Paralela (PSP) ............... ......................... 9, 38, 42 Registros
interrupção periférica (bit PEIE) ....................... 18 Habilitar RB0/INT
Associados ............... ......................... 43 RE0/RD/AN5
(INTE Bit) .................................. 18 Habilitar estouro TMR0 (Bit
Pino .......... ................................... 41, 42 RE1/WR/AN6
T0IE )................................. 18 Interrupções, Bits de Sinalização
Pino . ........................................ 41, 42 Pino RE2/CS/
Interrupção na Mudança (RB7:RB4)
AN7 ............................................. ....... 41, 42 Selecionar (PSPMODE
Bit) ....................... 38, 39, 40, 42 Registro
Sinalizador (Bit RBIF) ....................................... 18, 35, 97
PCL ............................................. ..... 13, 14, 15, 24 Registro
Sinalizador RB0/INT (Bit INTF) ............................................. .... 18
PCLATH ........................................ ......... 13, 14, 15, 24 Registro
Sinalizador de Transbordo TMR0 (Bit T0IF) ....................... 97
PCON ................................ ......................... 14, 15, 92 BOR
eu
Bit ....................... .................................................. 23 POR
Bit................................................ ....................... 23 P ICkit 1 FLASH
Carregamento do PC ............................................. ....................... 24
Starter Kit................................................ ... 115 Programador de
Programação Serial em Circuito de Baixa Tensão ................ 87, 102
desenvolvimento do PICSTART Plus......... 113 Registro
M PIE1 ..................... ............................................. 14, 15 Registro
PIE2 .................................................. ............. 14, 15 Descrições de
Master Clear (MCLR)
Pinagem PIC16F870 .............................. .................................... 7
Reinicialização MCLR, Operação Normal .......................... 91, 93
PIC16F871 .............. .................................................. ..... 8 Registro
Reinicialização MCLR, SLEEP........... ......................... 91, 93 Pino
PIR1 .......................................... ......................... 13 Registro
MCLR/VPP/THV ........ .................................................. 7, 8 Memória de
PIR2 ......................... ......................................... 13
Dados de Organização da Memória ............................................. ......... 11
POP .................................................. ................................... 24 POR.
Memória de Programa .................................. ......................... 11
Consulte Reinicialização ao ligar.
Migração de dispositivos avançados para dispositivos
avançados ............ ... 159 Migração de Mid-Range para Dispositivos
PORTA .................................................... ......................... 7, 8 Registros
Avançados ............. 158 MPLAB ASM30 Assembler, Linker,
Associados ............... ......................... 34 Registo
Librarian ................. .. 112 MPLAB ICD 2 In-Circuit
PORTA........... .................................... 33 Pino RA0/
Debugger ................................... 113 MPLAB ICE 2000 High Performance
AN0 .. .................................................. ........ 7, 8 pinos RA1/
Emulador Universal In-Circuit ............................................. ........ 113
MPLAB ICE 4000 Emulador Universal In-Circuit de Alto AN1 .............................. ......................... 7, 8 RA2/AN2/VREF-
Pino ............... ................................... 7 RA2/AN2/VREF-
Desempenho .............................. ......................... 113 Software de
Pino ... .................................................. 8 RA3/AN3/VREF+
Ambiente de Desenvolvimento Integrado
Pino ............................................. ........... 7 RA3/AN3/VREF+
MPLAB ....................... ......................... 111 MPLINK Ob ject Linker/MPLIB
Pino ........................ ......................... 8 Pino RA4/
Object Librarian ................ 112
T0CKI ........................ ......................... 7, 8 pinos RA5/
AN4 .......... .................................................. 7, 8 Registo
O TRISA............................................. .............. 33 Registo
Descrições dos Campos OPCODE.............................................. 103 PORTA .................................... ......................................... ... 13 PORTA
OPÇÃO .................................................. ......................... 15 OPÇÃO B ............................................. ......................... 7, 8 Registro
Cadastro ........................ ............................................. 15 OPTION_REG PORTB .......... ......................................... 35 Ativação de pull-up ( Bit
Registrar .. ............................................. 14, 17 INTEG RBPU).............................................. 17 Borda RB0/INT Selecione
Pedaço ................................................. ............... 17 bits (Bit INTEDG) .......................... 17 Pino RB0/
PSA .............................. ......................................... 17 RBPU INT ............ .................................................. 7 , 8 Pino RB0/INT,
Bit...... .................................................. .............. 17 T0CS Externo ............................................. ...... 97 Pino
Bit ................................... .................................... 17 T0SE RB1 ........................................ ................... 7, 8 pinos
Bit........... .................................................. ......... 17 Pino OSC1/ RB2 ................... .................................................. 7, 8 pinos RB3/
CLKI .................................. ................................... 7, 8 pinos OSC2/ PGM ............................................. ............... 7, 8 pinos
CLKO .............. .................................................. 7 , 8 Configuração do RB4 .................................. ........................................ 7, 8 pinos
RB5 ...... .................................................. ............ 7, 8 pinos RB6/
oscilador............................................. ......... 87
HS ........ .................................................. ......... 89, 92 PGC.............................. ................................... 7, 8 pinos RB7/
LP ........................................ ................................... 89, 92 PGD........... ......................................... ............ 7, 8 RB7:RB4
RC ................... .................................................. ...... 89, 90, 92 Interrupção na Mudança ........................... ........ 97 RB7:RB4
XT ........................................ ................................... 89, 92 Oscilador, Habilitação de Interrupção na Mudança (Bit RBIE) ....................... .............
WDT......... .................................................. ......... 99 Osciladores Seleção 18, 97 RB7:RB4 Sinalizador de Interrupção na Mudança (Bit
de Capacitores ........................................ ............... 90 Ressonadores de RBIF).................... ................... 18, 35, 97 Registro
Cristal e Cerâmica .............................. .. 89 TRISB ........................ ......................... 35 Registro
PIC16F870/871
PORTO................................................. .................................. 7, 8 Registros Modulação de largura de pulso.
Associados ................ ......................... 37 Registro Consulte Capturar/Comparar/PWM, Modo PWM.
PORTC .......... ......................................... 37 RC0/T1OSO/T1CKI EMPURRE................................................. ......................... 24
Pino ................................... 7, 8 RC1/ Pino
T1OSI ............................................. ......... 7, 8 pinos RC2/
R
CCP1 ....................... ........................ 7, 8 pinos BATER. Consulte Memória de dados.
RC3 ....................... ........................................ 7, 8 pinos Registo RCREG ........................................................ ................ 13 Registro
RC4.............................................. ......................... 7, 8 pinos RCSTA .............................. .................................. 13 ADICIONAR
RC5 ....................... ............................................. 7, 8 RC6 /TX/CK Bit .......... .................................................. ... 62 bits
Associados ..... ............................................. 38 Porta Escrava Paralela SPEN .................................. .................................. 61, 62 SREN
( PSP) Função .................................. 38 Registro Bit ................ .................................................. .. 62 Registrar
Registrar .................. 92 Desligamento (PD Bit) ....... ....................................... Histórico de Revisão................................................ ................ 157
91 Temporizador de inicialização (PWRT ) ......................................... 87,
92 Tempo limite (TO Bit) . .................................................. ..... 91
S
SCI. Consulte Interface
PR2 .......................................... ......................................... 15 PR2
Registo..... .................................................. .......... 14, 53 Prescaler, Timer0 de comunicação serial USART. Veja USART.
Atribuição (PSA Bit) ....................... ....17 Programador de dispositivo universal DORME ................................................. .................. 87, 91, 100 Simulador de
PRO MATE II .................... 113 Sistema de identificação do Software (MPLAB SIM) ....................... .............. 112 Simulador de Software
produto ......................................... 169 Condições de REINICIALIZAÇÃO (MPLAB SIM30) ....................... ... 112
SPBRG ................................................... ......................... 15 Registro
do contador de programa . .................................................. ... 93 Memória de
programa ............................................. ......... 11 Vetor de SPBRG .......... .................................................. .. 14 Recursos especiais da
PIC16F870/871
Cadastro de STATUS ................................................. ......... 13, 15 PD Recepção Assíncrona com
Bit ........................................ ......................................... 91 PARA Detecção de Endereço............................................. ...... 71
Bit......... .................................................. ............... 91 Reinicialização de Brown-out ........................................ ................
Recepção mestre síncrona 129 Capturar/Comparar/PWM (CCP1) ........................ ..... 131
Registros Associados ........................................................ .. 75 CLKO e E/S ........................................ ................... 128 Relógio
Registros Associados de Transmissão Mestre Externo .................... .............................. 126 Leitura da Porta
Síncrona ............................................. ........ 73 Escrava Paralela (PSP) ........... ....................... 43 Gravação da
Recepção Escrava Síncrona Porta Escrava Paralela (PSP) ................... ............... 43 RESET,
Registros Associados ........................................................ .. 77 Watchdog Timer, Temporizador de Inicialização do Oscilador e
Registros Associados de Transmissão Síncrona de Temporizador de Inicialização ............... 129 Lento Tempo
Escravos ........................................... ........ 76 de subida (MCLR vinculado ao VDD) ....................... 96 Sequência
de tempo limite na inicialização (MCLR não vinculado ao VDD)
T
T1CKPS0 Bit................................................ ......................... 49 Caso 1 ................................................ ................ 95 Caso
T1CKPS1 Bit........................ .............................................. 49 Registro 2 .............................. ......................... 95
T1CON .................................................. ............... 13 T1OSCEN Sequência de tempo limite na
Bit .............................. ....................................... 49 T1SYNC inicialização (MCLR vinculado ao VDD) .............................. .......
Bit......... .................................................. .............. 49 T2CKPS0 95 Timer0 e Timer1 Relógio Externo ....................... 130 USART
Bit ................................... ....................................... 53 T2CKPS1 Recepção Assíncrona ...... ......................... 68 Recepção Síncrona
Bit......... .................................................. ............ 53 Registro USART (Mestre/Escravo) .... 133 Recepção Síncrona USART
T2CON .................................. .............................. 13
TAD .................. .................................................. .......... 83 Sequência (Modo Mestre, SREN) ....................................... 75
de tempo limite ....................... ......................... 92 Temporizador Transmissão Síncrona USART ......................... 73 Transmissão
0......... .................................................. ......... 45 Registros Síncrona USART (Mestre/Escravo) .............. ....................................
Associados .................................. ......................... 47 Seleção de 133 Despertar do SLEEP via Interrupção ...... .........................
Borda da Fonte do Relógio (Bit T0SE).................... ..... 17 Seleção 101 Simbologia do Parâmetro de Tempo .............................. ................
de Fonte de Relógio (Bit T0CS) ..................... 17 Relógio 125 Registro TMR0 .............................. .............................. 13, 15 bits
Externo .................................................. ........... 46 TMR1CS........... .................................................. ........ 49 Registro
Interromper ............................................. ......................... 45 TMR1H ....................................... ......................... 13 Registro
Habilitar estouro (Bit T0IE) ......... ......................... 18 Sinalizador TMR1L ....................... ............................................. 13 TMR1ON
de estouro (Bit T0IF)........... ......................... 97 Interrupção de Bit .. .................................................. ................... 49 Registro
estouro .......... .......................................... 97 Pré- TMR2 .................................... ........................................ 13 TMR2ON
escalonador..... .................................................. .............. 46 Bit ....... .................................................. .............. 53 TOUTPS0
T0CKI ................................... ....................................... 46 Bit.............................. ....................................... 53 TOUTPS1
Temporizador1........ .................................................. ....................... 49 Bit........ .................................................. ............ 53 TOUTPS2
Registros Associados ........................ ......................... 52 Modo Bit .............................. ................................... 53 TOUTPS3
Contador Assíncrono Leitura e Gravação em ................ ....................... Bit............ .................................................. ........ 53
51 Operação do Contador ............... ......................................... TRISA ........................................ ......................................... 15 Registo
50 Incrementando a Borda (figura) ..... .................................... 50 TRISA...... .................................................. ........... 14
Operação no Modo Contador Assíncrono........ ......... 51 Operação TRISB ........................................ ......................................... 15 Registro
no Modo de Contador Sincronizado ........ 50 Operação no Modo TRISB... .................................................. ........ 14, 15
de Temporizador ............ ......................... 50 TRISC ....................................... ......................................... 15 Registro
Oscilador ............... .................................................. ... 51 Seleção TRISC.... .................................................. .............. 14
do capacitor ............................................. 51 Pré- TRISD ................................... ......................................... 15 Registro
escalonador............................................. ......................... TRISD. .................................................. ................ 14 TR
52 Reinicialização do par de registros do Timer1 (TMR1H, ISE ................................................. ......................... 15 Registro
TMR1L) .................. .............................. 52 Reinicializando o TRISE............... .................................................. .. 14 Bit
Timer1 Usando uma Saída de Gatilho CCP........... 51 IBF ............................................. ......................... 40 IBOV
TMR1H................................................ ......................... 51 Bit .................... .................................................. 40 Bit
TMR1L ......................... .............................................. 51 OBF ............................................. ......................... 40 PSPMODE
Temporizador2. .................................................. .............................. Bit ........................ ................... 38, 39, 40, 42 Registrador
53 Registros Associados .................. ........... ....................... 54 TXREG ..................... ......................................... 13
Saída .............................. ......................................... 54 Pós- TXSTA .... .................................................. ......................... 15 Registro
escalonador . .................................................. ................ 53 Pré- TXSTA ....................... .................................... 14 BRGH
escalonador .............................. ......................... 53 Pré- Bit .. .................................................. ................ 61 Bit
escalonador e Pós-escalonador......... ................................... 54 CSRC .............................. ......................... 61 TRMT
Bit .......... .................................................. ........ 61 TX9
Diagramas de bits. .................................................. ......................... 61 Bit
temporização Conversão A/D................................................ ............. TX9D .............................. ......................................... 61 TXEN
135 Transmissão Mestre Assíncrona .......................... 67 Bit.... .................................................. ............... 61
Transmissão Mestre Assíncrona (Voltar
voltar) ............................................... ..... 67 Recepção
assíncrona com primeiro byte de
endereço ........................................ ........ 71
PIC16F870/871
DENTRO Dentro
Transmissor receptor assíncrono síncrono universal. Acordar do SONO............................................. .... 87, 100
Veja USART Interrupções .................................... ......................... 93 Reinicialização
USART................................................. ......................... 61 Habilitar Detecção MCLR ....................... ....................................... 93 Diagrama de
de Endereço (Bit ADDEN) ........... ............... 62 Modo temporização ..... .................................................. 101 Redefinir
Assíncrono .............................. .........66 Recepção WDT ............................................. ................... 93
Assíncrona .................................. ...... 68 Recepção Assíncrona (Modo Resumo do registro
de 9 bits) ....................... ..... 70 Recepção Assíncrona com Detecção de do temporizador do watchdog ............................................. ......... 99
Endereço. Temporizador Watchdog (WDT) .............................. ............ 87, 99 Habilitar
Consulte Recepção assíncrona (modo de 9 bits). (Bit WDTEN) .............................. ......................... 99 Pós-escalador.
Recepção Assíncrona .................................. 69 Transmissor Veja Postscaler, WDT.
Assíncrono . ......................................... 66 Gerador de taxa de Considerações de Programação ....................................... 99 Oscilador
transmissão (BRG).. ......................... 63 Fórmula da Taxa de RC........ .................................................. ..... 99 Período de tempo
Baud ......... ................................... 63 Taxas de transmissão, limite ........................................ .......... 99 Reinicialização WDT,
modo assíncrono (BRGH = 0) ... .............................................. 64 Operação Normal ....................... ... 91, 93 WDT Reinicialização,
Taxas de transmissão, Modo Assíncrono (BRGH = SLEEP................................................ ...... 91, 93 Gravação de
1) ............................................. ......65 Seleção de alta taxa de Verificação de Dados EEPROM e Memória de Programa FLASH ........... 31
transmissão (Bit BRGH)......... 61 WWW, Suporte On-Line ............... ....................................... 4
Amostragem ............ ......................................... 63 Seleção da
fonte do relógio (Bit CSRC)........................ 61 Ativação de
recebimento contínuo (Bit CREN).. ...... 62 Erro de enquadramento (bit
FERR) ........................ ................... 62 Erro de saturação (bit
OERR) ................... ................... 62 Receber Dados, 9º bit (RX9D
Bit) ................... ...........62 Ativação de recebimento, 9 bits (RX9
Bit) ....................... ...... 62 Habilitação de porta serial (bit
SPEN) .............................. 61, 62 Habilitação de recepção única (bit
SREN) . ......................... 62 Modo mestre
síncrono .................. ......................... 72 Recepção Master
Síncrona........................ ........... 74 Transmissão mestre
síncrona .......................... 72 Modo escravo
síncrono .. ......................................... 76 Recepção de escravo
síncrona..... ......................... 77 Transmissão Síncrona do
Escravo ............... ....................... 76 Transmissão de dados, 9º bit
(TX9D).................... ...... 61 Habilitação de Transmissão (Bit
TXEN) ....................... ................ 61 Ativação de transmissão, nove bits
(TX9 bits) ....................... .....61 Transmitir Status do Registro de
Deslocamento (Bit TRMT)........ 61
PIC16F870/871
PIC16F870/871
RESPOSTA DO LEITOR
É nossa intenção fornecer a você a melhor documentação possível para garantir o uso bem-sucedido do seu Microchip
produtos. Se você deseja fornecer seus comentários sobre organização, clareza, assunto e maneiras pelas quais nossos
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.
De nome
Companhia
Endereço
Aplicação (opcional):
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?
PIC16F870/871
PIC16F870/871 SISTEMA DE IDENTIFICAÇÃO DE PRODUTO
Para encomendar ou obter informações, por exemplo, sobre preços ou entrega, consulte a fábrica ou o escritório de vendas indicado.
Vendas e suporte
Folhas de dados
Os produtos suportados por uma folha de dados preliminar podem ter uma folha de errata descrevendo pequenas diferenças operacionais e soluções
alternativas recomendadas. Para determinar se existe uma folha de errata para um determinado dispositivo, entre em contato com um dos seguintes:
PIC16F870/871
NOTAS:
•
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 da 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.
ISBN: 9781620769379
SISTEMA DE GESTÃO DA QUALIDADE A Microchip recebeu a certificação ISO/ TS-16949:2009 para sua sede mundial,
design e instalações de fabricação de wafer em Chandler e Tempe, Arizona;
CERTIFICADO PELA DNV Gresham, Oregon e centros de design na Califórnia e na Índia. Os processos e
procedimentos do sistema de qualidade da empresa são para seus PIC® MCUs e
dsPIC® DSCs, dispositivos de salto de código KEELOQ® , EEPROMs seriais,
== ISO/TS 16949 == microperiféricos, memória não volátil e produtos analógicos. Além disso, o sistema
de qualidade da Microchip para o projeto e fabricação de sistemas de desenvolvimento
é certificado pela ISO 9001:2000.
China - Zhuhai
Telefone: 86-756-3210040
Fax: 86-756-3210049 29/11/12