Tradução: Maria Elisa - Assessoria em Inglês e Alemão
Revisão: Renato Kodaira
A memória de dados dos microcontroladores PIC16F627A, PIC16F628A e PIC16F648A (Figura 4.2 e Figura 4.3) é particionada em quatro bancos que contêm os Registradores de Propósitos Genéricos (General Purpose Registers - GPRs) e os Registradores de Funções Especiais (Special Function Registers - SFRs). Os SFRs estão localizados nas primeiras 32 posições de cada banco. Existem Registradores de Propósito Genérico implementados como RAM estática em cada banco. A Tabela 4.1 lista os Registradores de Propósito Genérico disponíveis em cada um dos quatro bancos.
Os endereços F0h-FFh, 170h-17Fh e 1F0h-1FFh são implementados como RAM comum e mapeados de volta aos endereços 70h-7Fh.
A Tabela 4.2 lista como acessar os quatro bancos de registradores através dos bits RP1 e RP0 do registrador de status.
Banco |
RP1 |
RP0 |
0 |
0 |
0 |
1 |
0 |
1 |
2 |
1 |
0 |
3 |
1 |
1 |
4.2.1 REGISTRADORES DE PROPÓSITO GENÉRICO
O banco de registradores é organizado em 224 x 8 nos PIC16F627A e PIC16F628A e em 256 x 8 no PIC16F648A. Cada um é acessado direta ou indiretamente pelo Registrador de Seleção de Memória (File Select Register - FSR), veja a Seção 4.4 "Endereçamento Indireto, Registradores INDF e FSR".
4.2.2 REGISTRADORES DE FUNÇÕES ESPECIAIS
Os SFRs são registradores utilizados pela CPU e pelas funções periféricas para controlar a operação desejada do dispositivo (Tabela 4.3). Estes registradores são uma RAM estática.
Os registradores especiais podem ser classificados em dois conjuntos (centrais e periféricos). Os SFRs associados a uma função central são descritos nesta seção. Aqueles relacionados à operação de disposivos periféricos são descritos na seção do respectivo dispositivo.
Endereço |
Nome |
Bit 7 |
Bit 6 |
Bit 5 |
Bit 4 |
Bit 3 |
Bit 2 |
Bit 1 |
Bit 0 |
Valor na Reinicialização POR(1) |
Detalhes |
Banco 0 |
|
|
|
|
00h |
INDF |
O endereçamento desta posição utiliza o conteúdo do FSR para endereçar a memória de dados (não é um registrador físico) |
xxxx xxxx |
Detalhes |
01h |
TMR0 |
Registrador do Modulo Timer0 |
xxxx xxxx |
Detalhes |
02h |
PCL |
Byte Menos Significativo do Contador de Programa (PC) |
0000 0000 |
Detalhes |
03h |
STATUS |
IRP |
RP1 |
RP0 |
TO |
PD |
Z |
DC |
C |
0001 1xxx |
Detalhes |
04h |
FSR |
Apontador de Endereço da Memória de Dados Indiretos |
xxxx xxxx |
Detalhes |
05h |
PORTA |
RA7 |
RA6 |
RA5 |
RA4 |
RA3 |
RA2 |
RA1 |
RA0 |
xxxx 0000 |
Detalhes |
06h |
PORTB |
RB7 |
RB6 |
RB5 |
RB4 |
RB3 |
RB2 |
RB1 |
RB0 |
xxxx xxxx |
Detalhes |
07h |
--- |
Não implementado |
--- |
--- |
08h |
--- |
Não implementado |
--- |
--- |
09h |
--- |
Não implementado |
--- |
--- |
0Ah |
PCLATH |
--- |
--- |
--- |
Buffer de Escrita para os 5 bits superiores do Contador de Programa |
---0 0000 |
Detalhes |
0Bh |
INTCON |
GIE |
PEIE |
T0IE |
INTE |
RBIE |
T0IF |
INTF |
RBIF |
0000 000x |
Detalhes |
0Ch |
PIR1 |
EEIF |
CMIF |
RCIF |
TXIF |
--- |
CCP1IF |
TMR2IF |
TMR1IF |
0000 -000 |
Detalhes |
0Dh |
--- |
Não implementado |
--- |
--- |
0Eh |
TMR1L |
Holding Register para o Byte Menos Significativo do Registrador TMR1 de 16 bits |
xxxx xxxx |
Detalhes |
0Fh |
TMR1H |
Holding Register para o Byte Mais Significativo do Registrador TMR1 de 16 bits |
xxxx xxxx |
Detalhes |
10h |
T1CON |
--- |
--- |
T1CKPS1 |
T1CKPS0 |
T1OSCEN |
T1SYNC |
TMR1CS |
TMR1ON |
--00 0000 |
Detalhes |
11h |
TMR2 |
Registrador do Módulo TMR2 |
0000 0000 |
Detalhes |
12h |
T2CON |
--- |
TOUTPS3 |
TOUTPS2 |
TOUTPS1 |
TOUTPS0 |
TMR2ON |
T2CKPS1 |
T2CKPS0 |
-000 0000 |
Detalhes |
13h |
--- |
Não implementado |
--- |
--- |
14h |
--- |
Não implementado |
--- |
--- |
15h |
CCPR1L |
Registrador de Captura/ Comparação/ PWM (LSB) |
xxxx xxxx |
Detalhes |
16h |
CCPR1H |
Registrador de Captura/ Comparação/ PWM (MSB) |
xxxx xxxx |
Detalhes |
17h |
CCP1CON |
--- |
--- |
CCP1X |
CCP1Y |
CCP1M3 |
CCP1M2 |
CCP1M1 |
CCP1M0 |
--00 0000 |
Detalhes |
18h |
RCSTA |
SPEN |
RX9 |
SREN |
CREN |
ADEN |
FERR |
OERR |
RX9D |
0000 000x |
Detalhes |
19h |
TXREG |
Registrador de Dados Transmitidos do USART |
0000 0000 |
Detalhes |
1Ah |
RCREG |
Registrador de Dados Recebidos do USART |
0000 0000 |
Detalhes |
1Bh |
--- |
Não implementado |
--- |
--- |
1Ch |
--- |
Não implementado |
--- |
--- |
1Dh |
--- |
Não implementado |
--- |
--- |
1Eh |
--- |
Não implementado |
--- |
--- |
1Fh |
CMCON |
C2OUT |
C1OUT |
C2INV |
C1INV |
CIS |
CM2 |
CM1 |
CM0 |
0000 0000 |
Detalhes |
Legenda:
- = Posições não implementadas, lidas como '0'
u = inalterado
x = desconhecido
q = o valor depende da condição
células sombreadas = não implementado
Nota 1: Para a condição de inicialização para as tabelas de registradores, consulte as Tabelas 14.6 e 14.7.
TABELA 4.4: RESUMO DOS REGISTRADORES DE FUNÇÕES ESPECIAIS - BANCO 1
Endereço |
Nome |
Bit 7 |
Bit 6 |
Bit 5 |
Bit 4 |
Bit 3 |
Bit 2 |
Bit 1 |
Bit 0 |
Valor na Reinicialização POR(1) |
Detalhes |
Banco 1 |
|
|
|
|
80h |
INDF |
O endereçamento desta posição utiliza o conteúdo do FSR para endereçar a memória de dados (não é um registrador físico) |
xxxx xxxx |
Detalhes |
81h |
OPTION |
RBPU |
INTEDG |
T0CS |
T0SE |
PSA |
PS2 |
PS1 |
PS0 |
1111 1111 |
Detalhes |
82h |
PCL |
Byte Menos Significativo do Contador de Programa (PC) |
0000 0000 |
Detalhes |
83h |
STATUS |
IRP |
RP1 |
RP0 |
TO |
PD |
Z |
DC |
C |
0001 1xxx |
Detalhes |
84h |
FSR |
Apontador de Endereço da Memória de Dados Indiretos |
xxxx xxxx |
Detalhes |
85h |
TRISA |
TRISA7 |
TRISA6 |
TRISA5 |
TRISA4 |
TRISA3 |
TRISA2 |
TRISA1 |
TRISA0 |
1111 1111 |
Detalhes |
86h |
TRISB |
TRISB7 |
TRISB6 |
TRISB5 |
TRISB4 |
TRISB3 |
TRISB2 |
TRISB1 |
TRISB0 |
1111 1111 |
Detalhes |
87h |
--- |
Não implementado |
--- |
--- |
88h |
--- |
Não implementado |
--- |
--- |
89h |
--- |
Não implementado |
--- |
--- |
8Ah |
PCLATH |
--- |
--- |
--- |
Buffer de Escrita para os 5 bits superiores do Contador de Programa |
---0 0000 |
Detalhes |
8Bh |
INTCON |
GIE |
PEIE |
T0IE |
INTE |
RBIE |
T0IF |
INTF |
RBIF |
0000 000x |
Detalhes |
8Ch |
PIE1 |
EEIE |
CMIE |
RCIE |
TXIE |
--- |
CCP1IE |
TMR2IE |
TMR1IE |
0000 -000 |
Detalhes |
8Dh |
--- |
Não implementado |
--- |
--- |
8Eh |
PCON |
--- |
--- |
--- |
--- |
OSCF |
--- |
POR |
BOR |
---- 1-0x |
Detalhes |
8Fh |
--- |
Não Implementado |
--- |
--- |
90h |
--- |
Não Implementado |
--- |
--- |
91h |
--- |
Não Implementado |
--- |
--- |
92h |
PR2 |
Registrador de Período do Timer2 |
1111 1111 |
Detalhes |
93h |
--- |
Não implementado |
--- |
--- |
94h |
--- |
Não implementado |
--- |
--- |
95h |
--- |
Não implementado |
--- |
--- |
96h |
--- |
Não implementado |
--- |
--- |
97h |
--- |
Não implementado |
--- |
--- |
98h |
TXSTA |
CSRC |
TX9 |
TXEN |
SYNC |
--- |
BRGH |
TRMT |
TX9D |
0000 -010 |
Detalhes |
99h |
SPBRG |
Registrador Gerador da Taxa de Transmissão |
0000 0000 |
Detalhes |
9Ah |
EEDATA |
Registrador de Dados da EEPROM |
xxxx xxxx |
Detalhes |
9Bh |
EEADR |
Registrador de Endereço da EEPROM |
xxxx xxxx |
Detalhes |
9Ch |
EECON1 |
--- |
--- |
--- |
--- |
WRERR |
WREN |
WR |
RD |
---- x000 |
Detalhes |
9Dh |
EECON2 |
Registrador 2 de Controle da EEPROM (não é um registrador físico) |
---- ---- |
Detalhes |
9Eh |
--- |
Não implementado |
--- |
--- |
9Fh |
VRCON |
VREN |
VROE |
VRR |
--- |
VR3 |
VR2 |
VR1 |
VR0 |
000- 0000 |
Detalhes |
Legenda:
- = Posições não implementadas, lidas como '0'
u = inalterado
x = desconhecido
q = o valor depende da condição
células sombreadas = não implementado
Nota 1: Para a condição de inicialização para as tabelas de registradores, consulte as Tabelas 14.6 e 14.7.
TABELA 4.5: RESUMO DOS REGISTRADORES DE FUNÇÕES ESPECIAIS - BANCO 2
Endereço |
Nome |
Bit 7 |
Bit 6 |
Bit 5 |
Bit 4 |
Bit 3 |
Bit 2 |
Bit 1 |
Bit 0 |
Valor na Reinicialização POR(1) |
Detalhes |
Banco 2 |
|
|
|
|
100h |
INDF |
O endereçamento desta posição utiliza o conteúdo do FSR para endereçar a memória de dados (não é um registrador físico) |
xxxx xxxx |
Detalhes |
101h |
TMR0 |
Registrador do Módulo do Timer0 |
xxxx xxxx |
Detalhes |
102h |
PCL |
Byte Menos Significativo do Contador de Programa (PC) |
0000 0000 |
Detalhes |
103h |
STATUS |
IRP |
RP1 |
RP0 |
TO |
PD |
Z |
DC |
C |
0001 1xxx |
Detalhes |
104h |
FSR |
Apontador de Endereço da Memória de Dados Indiretos |
xxxx xxxx |
Detalhes |
105h |
--- |
Não Implementado |
--- |
--- |
106h |
PORTB |
RB7 |
RB6 |
RB5 |
RB4 |
RB3 |
RB2 |
RB1 |
RB0 |
xxxx xxxx |
Detalhes |
107h |
--- |
Não implementado |
--- |
--- |
108h |
--- |
Não implementado |
--- |
--- |
109h |
--- |
Não implementado |
--- |
--- |
10Ah |
PCLATH |
--- |
--- |
--- |
Buffer de Escrita para os 5 bits superiores do Contador de Programa |
---0 0000 |
Detalhes |
10Bh |
INTCON |
GIE |
PEIE |
T0IE |
INTE |
RBIE |
T0IF |
INTF |
RBIF |
0000 000x |
Detalhes |
10Ch |
--- |
Não implementado |
--- |
--- |
10Dh |
--- |
Não implementado |
--- |
--- |
10Eh |
--- |
Não implementado |
--- |
--- |
10Fh |
--- |
Não Implementado |
--- |
--- |
110h |
--- |
Não Implementado |
--- |
--- |
111h |
--- |
Não Implementado |
--- |
--- |
112h |
--- |
Não implementado |
--- |
--- |
113h |
--- |
Não implementado |
--- |
--- |
114h |
--- |
Não implementado |
--- |
--- |
115h |
--- |
Não implementado |
--- |
--- |
116h |
--- |
Não implementado |
--- |
--- |
117h |
--- |
Não implementado |
--- |
--- |
118h |
--- |
Não implementado |
--- |
--- |
119h |
--- |
Não implementado |
--- |
--- |
11Ah |
--- |
Não implementado |
--- |
--- |
11Bh |
--- |
Não implementado |
--- |
--- |
11Ch |
--- |
Não implementado |
--- |
--- |
11Dh |
--- |
Não implementado |
--- |
--- |
11Eh |
--- |
Não implementado |
--- |
--- |
11Fh |
--- |
Não implementado |
--- |
--- |
Legenda:
- = Posições não implementadas, lidas como '0'
u = inalterado
x = desconhecido
q = o valor depende da condição
células sombreadas = não implementado
Nota 1: Para a condição de inicialização para as tabelas de registradores, consulte as Tabelas 14.6 e 14.7.
TABELA 4.6: RESUMO DOS REGISTRADORES DE FUNÇÕES ESPECIAIS - BANCO 3
Endereço |
Nome |
Bit 7 |
Bit 6 |
Bit 5 |
Bit 4 |
Bit 3 |
Bit 2 |
Bit 1 |
Bit 0 |
Valor na Reinicialização POR(1) |
Detalhes |
Banco 3 |
|
|
|
|
180h |
INDF |
O endereçamento desta posição utiliza o conteúdo do FSR para endereçar a memória de dados (não é um registrador físico) |
xxxx xxxx |
Detalhes |
181h |
OPTION |
RBPU |
INTEDG |
T0CS |
T0SE |
PSA |
PS2 |
PS1 |
PS0 |
1111 1111 |
Detalhes |
182h |
PCL |
Byte Menos Significativo do Contador de Programa (PC) |
0000 0000 |
Detalhes |
183h |
STATUS |
IRP |
RP1 |
RP0 |
TO |
PD |
Z |
DC |
C |
0001 1xxx |
Detalhes |
184h |
FSR |
Apontador de Endereço da Memória de Dados Indiretos |
xxxx xxxx |
Detalhes |
185h |
--- |
Não Implementado |
--- |
--- |
186h |
TRISB |
TRISB7 |
TRISB6 |
TRISB5 |
TRISB4 |
TRISB3 |
TRISB2 |
TRISB1 |
TRISB0 |
1111 1111 |
Detalhes |
187h |
--- |
Não implementado |
--- |
--- |
188h |
--- |
Não implementado |
--- |
--- |
189h |
--- |
Não implementado |
--- |
--- |
18Ah |
PCLATH |
--- |
--- |
--- |
Buffer de Escrita para os 5 bits superiores do Contador de Programa |
---0 0000 |
Detalhes |
18Bh |
INTCON |
GIE |
PEIE |
T0IE |
INTE |
RBIE |
T0IF |
INTF |
RBIF |
0000 000x |
Detalhes |
18Ch |
--- |
Não implementado |
--- |
--- |
18Dh |
--- |
Não implementado |
--- |
--- |
18Eh |
--- |
Não implementado |
--- |
--- |
18Fh |
--- |
Não Implementado |
--- |
--- |
190h |
--- |
Não Implementado |
--- |
--- |
191h |
--- |
Não Implementado |
--- |
--- |
192h |
--- |
Não implementado |
--- |
--- |
193h |
--- |
Não implementado |
--- |
--- |
194h |
--- |
Não implementado |
--- |
--- |
195h |
--- |
Não implementado |
--- |
--- |
196h |
--- |
Não implementado |
--- |
--- |
197h |
--- |
Não implementado |
--- |
--- |
198h |
--- |
Não implementado |
--- |
--- |
199h |
--- |
Não implementado |
--- |
--- |
19Ah |
--- |
Não implementado |
--- |
--- |
19Bh |
--- |
Não implementado |
--- |
--- |
19Ch |
--- |
Não implementado |
--- |
--- |
19Dh |
--- |
Não implementado |
--- |
--- |
19Eh |
--- |
Não implementado |
--- |
--- |
19Fh |
--- |
Não implementado |
--- |
--- |
Legenda:
- = Posições não implementadas, lidas como '0'
u = inalterado
x = desconhecido
q = o valor depende da condição
células sombreadas = não implementado
Nota 1: Para a condição de inicialização para as tabelas de registradores, consulte as Tabelas 14.6 e 14.7.
Este tópico divide-se para detalhar os seguintes registradores: