Altana Tubes > Blog > PIC16F627A/628A/648A > Memória > Dados

4.2 Organização da Memória de Dados dos microcontroladores PIC16F627A, PIC16F628A e PIC16F648A

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.

TABELA 4.1: REGISTRADORES RAM ESTÁTICA DE PROPÓSITO GENÉRICO

  PIC16F627APIC16F628A PIC16F648A
Banco 0 20-7Fh 20-7Fh
Banco 1 A0h-FF A0h-FF
Banco 2 120h-14Fh, 170h-17Fh 120h-17Fh
Banco 3 1F0h-1FFh 1F0h-1FFh

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.

TABELA 4.2: ACESSO AOS BANCOS DE REGISTRADORES

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".

FIGURA 4.2: MAPA DA MEMÓRIA DE DADOS DO PIC16F627A E DO PIC16F628A

FIGURA 4.3: MAPA DA MEMÓRIA DE DADOS DO PIC16F648A

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.

 

TABELA 4.3: RESUMO DOS REGISTRADORES ESPECIAIS - BANCO 0

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) Clique para 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 clique para detalhes
81h OPTION RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 clique para detalhes
82h PCL Byte Menos Significativo do Contador de Programa (PC) 0000 0000 clique para detalhes
83h STATUS IRP RP1 RP0 TO PD Z DC C 0001 1xxx clique para detalhes
84h FSR Apontador de Endereço da Memória de Dados Indiretos xxxx xxxx clique para detalhes
85h TRISA TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 1111 1111 clique para detalhes
86h TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 clique para 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 clique para detalhes
8Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x clique para detalhes
8Ch PIE1 EEIE CMIE RCIE TXIE --- CCP1IE TMR2IE TMR1IE 0000 -000 clique para detalhes
8Dh --- Não implementado --- ---
8Eh PCON --- --- --- --- OSCF --- POR BOR ---- 1-0x clique para detalhes
8Fh --- Não Implementado --- ---
90h --- Não Implementado --- ---
91h --- Não Implementado --- ---
92h PR2 Registrador de Período do Timer2 1111 1111 clique para 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 clique para detalhes
99h SPBRG Registrador Gerador da Taxa de Transmissão 0000 0000 clique para detalhes
9Ah EEDATA Registrador de Dados da EEPROM xxxx xxxx clique para detalhes
9Bh EEADR Registrador de Endereço da EEPROM xxxx xxxx clique para detalhes
9Ch EECON1 --- --- --- --- WRERR WREN WR RD ---- x000 clique para detalhes
9Dh EECON2 Registrador 2 de Controle da EEPROM (não é um registrador físico) ---- ---- clique para detalhes
9Eh --- Não implementado --- ---
9Fh VRCON VREN VROE VRR --- VR3 VR2 VR1 VR0 000- 0000 clique para 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 clique para detalhes
101h TMR0 Registrador do Módulo do Timer0 xxxx xxxx clique para detalhes
102h PCL Byte Menos Significativo do Contador de Programa (PC) 0000 0000 clique para detalhes
103h STATUS IRP RP1 RP0 TO PD Z DC C 0001 1xxx clique para detalhes
104h FSR Apontador de Endereço da Memória de Dados Indiretos xxxx xxxx clique para detalhes
105h --- Não Implementado --- ---
106h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx xxxx clique para 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 clique para detalhes
10Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x clique para 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 clique para detalhes
181h OPTION RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 clique para detalhes
182h PCL Byte Menos Significativo do Contador de Programa (PC) 0000 0000 clique para detalhes
183h STATUS IRP RP1 RP0 TO PD Z DC C 0001 1xxx clique para detalhes
184h FSR Apontador de Endereço da Memória de Dados Indiretos xxxx xxxx clique para detalhes
185h --- Não Implementado --- ---
186h TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 clique para 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 clique para detalhes
18Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x clique para 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:

<-Anterior Índice Próximo->