REGISTRADORES - PIC16F6XXX


Os registradores da família PIC16F6XX estão divididos em duas partes. A primeira é conhecida como SFR (Registros de Função Especial) e GPR (Registros de Propósito Geral). Estes registros dividem-seem quatro bancos.

 

 

Registrador de STATUS

Este registrador possui o estado atual da Unidade Lógica Aritmética, do Reset e do banco de registros selecionado.


Escrita

Leitura

Escrita

Leitura

Escrita

Leitura

Leitura

Leitura

Escrita

Leitura

Escrita

Leitura

Escrita

Leitura

IRP

RP1

RP0

TO

PD

Z

DC

C

bit 7


bit 0


bit 7 – IRP – Registro de seleção do banco de registradores

  • 1 = Banco 2,3 (100H-1FFH)

  • 0 = Banco 0,1(00H-FFH)


bit 6, 5 - RP1, RP0 – Registros de seleção do banco de registradores

  • 00 = Banco 0 (00H – 7FH)

  • 01 = Banco 1 (80H – FFH)

  • 10 = Banco 2 (100H-17FH)

  • 11 = Banco 3 (180H-1FFH)


bit 4 - TO – Time-out

  • 1 = Após power-up (ligar), instrução CLRWDT (limpar Cão de Guarda) ou instrução SLEEP (dormir)

  • 0 = Ocorreu um time-out no WDT


bit 3 - PD – Power-down

  • 1 = Após power-up (ligar) ou instrução CLRWDT (limpar Cão de Guarda)

  • 0 = execução da instrução SLEEP (dormir)


bit 2 - Z – Zero

  • 1 = O resultado da operação aritmética ou lógica é igual a zero.

  • 0 = O resultado da operação aritmética ou lógica não é zero.


bit 1 - DC – Digito Carry/borrow

  • 1 = Ocorreu um transbordamento do 4º bit menos significativo

  • 0 = Não ocorreu o transbordamento do 4º bit menos significativo


bit 0 - C – Carry

  • 1 = Ocorreu um transbordamento do 7º bit mais significativo

  • 0 = Não ocorreu um transbordamento do 7º bit mais significativo


REGISTRADOR OPTION_REG

Com este registrador podemos configurar a interrupção externa através de RB0, a interrupção do timer 0 ou WDT, o divisor para o timer/WDT e os resistores de pull-up da parte mais significativa do PORTB.


Escrita

Leitura

Escrita

Leitura

Escrita

Leitura

Escrita

Leitura

Escrita

Leitura

Escrita

Leitura

Escrita

Leitura

Escrita

Leitura

RBPU

INTEDG

T0CS

T0SE

PSA

PS2

PS1

PS0

bit 7


bit 0


bit 7 - RBPU – Habilita/desabilita pull-up’s do PORTB

  • 1 = pull-up desabilitados

  • 0 = pull-up habilitado


bit 6 - INTEDG – Seleção de borda para interrupção

  • 1 = Interrupção ativa na subida de borda em RB0/INT

  • 0 = Interrupção ativa na descida de borda em RB0/INT


bit 5 -T0CS – Captura do clock do timer

  • 1 = Transição em RA4/T0CKI

  • 0 = Instrução interna, oscilador interno


bit 4 - T0SE – Seleção de borda para clock

  • 1 = Incrementa no nível alto para baixo na transição em RA4/T0CKI

  • 0 = Incrementa no nível baixo para alto na transição em RA4/T0CKI


bit 3 - PSA – Seleção da Divisão Escalar do Timer

  • 1 = Divisão ligada ao WDT

  • 2 = Divisão ligada ao TMR0


bits 2..0 - PS2...PS0 – Divisão para contagem do timer e WDT (Cão de Guarda)


Valor

Proporção no TMR0

Proporção no WDT

000

1 : 2

1 : 1

001

1 : 4

1 : 2

010

1 : 8

1 : 4

011

1 : 16

1 : 8

100

1 : 32

1 : 16

101

1 : 64

1 : 32

110

1 : 128

1 : 64

111

1 : 256

1 : 128



REGISTRADOR INTCOM

Este registrador controla as várias interrupções. Também podemos, através deste registrador, saber exatamente qual interrupção foi solicitada.


Escrita

Leitura

Escrita

Leitura

Escrita

Leitura

Escrita

Leitura

Escrita

Leitura

Escrita

Leitura

Escrita

Leitura

Escrita

Leitura

GIE

PEIE

T0IE

INTE

RBIE

T0IF

INTF

RBIF

bit 7


bit 0


bit 7 - GIE – Habilita interrupções

  • 1 = Habilita todas as interrupções

  • 0 = Desabilita todas as interrupções


bit 6 - PEIE – Habilita interrupção dos periféricos

  • 1 = Habilita interrupção dos periféricos

  • 0 = Desabilita interrupção dos periféricos


bit 5 - T0IE – Habilita interrupção para over-flow do Timer

  • 1 = Habilita interrupção pelo timer

  • 0 = Desabilita interrupção pelo timer


bit 4 - INTE – Habilita interrupção pelo pino RB0/INT

  • 1 = Habilita interrupção pelo pino RB0/INT

  • 0 = Desabilita interrupção pelo pino RB0/INT


bit 3 - RBIE – Habilita interrupção na mudança de estado no PORTB

  • 1 = Habilita interrupção na mudança de estado no PORTB

  • 0 = Desabilita interrupção na mudança de estado no PORTB


bit 2 - T0IF – Flag para leitura da interrupção over-flow para o timer

  • 1 = Houve interrupção pelo timer

  • 0 = Não houve interrupção pelo timer


bit 1 - INTF – Flag para leitura da interrupção pelo pino RB0/INT

  • 1 = Houve interrupção pelo pino RB0/INT

  • 0 = Não houve interrupção pelo pino RB0/INT


bit 0 - RBIF – Flag para leitura da interrupção na mudança de estado no PORTB

  • 1 = Houve interrupção na mudança de estado no PORTB

  • 0 = Não houve interrupção na mudança de estado no PORTB



REGISTRADOR PIE1

Este registrador controla as várias outras interrupções.


Escrita

Leitura

Escrita

Leitura

Escrita

Leitura

Escrita

Leitura

Lido sempre 0

Escrita

Leitura

Escrita

Leitura

Escrita

Leitura

EEIE

CMIE

RCIE

TXIE

--

CCP1IE

TMR2IE

TMR1IE

bit 7


bit 0


bit 7 - EEIE –Habilita interrupção de “fim de escrita” para EEPROM

  • 1 = Habilita interrupção de “fim de escrita”

  • 0 = Desabilita interrupção de “fim de escrita”


bit 6 - CMIE – Habilita interrupção do comparador

  • 1 = Habilita interrupção do comparador

  • 0 = Desabilita interrupção do comparador


bit 5 - RCIE – Habilita interrupção de recepção da USART

  • 1 = Habilita interrupção de recepção da USART

  • 0 = Desabilita interrupção de recepção da USART


bit 4 - TXIE – Habilita interrupção de transmissão da USART

  • 1 = Habilita interrupção de transmissão da USART

  • 0 = Desabilita interrupção de transmissão da USART


bit 3 – vazio – sempre lido como zero


bit 2 - CCP1IE – Habilita interrupção para Captura/Comparação/PWM (CCP1)

  • 1 = Habilita interrupção CCP1

  • 0 = Desabilita interrupção CCP1


bit 1 - TMR2IE – Habilita interrupção de comparação entre PR2 e Timer2

  • 1 = Habilita interrupção TMR2

  • 0 = Desabilita interrupção TMR2


bit 0 - TMR1IE – Habilita interrupção de Overflow no Timer1

  • 1 = Habilita interrupção TMR1

  • 0 = Desabilita interrupção TMR1



REGISTRADOR PIR1

Este registrador controla os flags que permitem saber o status das interrupções configuradas em PIE1.


Escrita

Leitura

Escrita

Leitura

Leitura

Leitura

Lido sempre 0

Escrita

Leitura

Escrita

Leitura

Escrita

Leitura

EEIF

CMIF

RCIF

TXIF

--

CCP1IF

TMR1IE

TMR1IE

bit 7


bit 0


bit 7 - EEIF – Flag da interrupção de “fim de escrita” para EEPROM

  • 1 = Operação de “fim de escrita” finalizada

  • 0 = Operação de “fim de escrita” não finalizada ou ainda não iniciada


bit 6 - CMIF – Flag da interrupção do comparador

  • 1 = Saída do comparador foi alterada

  • 0 = Saída do comparador não foi alterada


bit 5 - RCIF – Flag da interrupção de recepção da USART

  • 1 = Buffer de recepção da USART está cheio

  • 0 = Buffer de recepção da USART está vazio


bit 4 - TXIF – Flag da interrupção de transmissão da USART

  • 1 = Buffer de transmissão da USART está vazio

  • 0 = Buffer de transmissão da USART está cheio


bit 3 – vazio – sempre lido como zero


bit 2 - CCP1IF – Flag da interrupção para Captura/Comparação/PWM (CCP1)

Modo Captura

    • 1 = Houve interrupção TMR1 por captura

    • 0 = Não houve interrupção TMR1 por captura

Modo comparação

      • 1 = Houve interrupção TMR1 por comparação

      • 0 = Não houve interrupção TMR1 por comparação

Modo PWM

      • não usado nesse modo


bit 1 - TMR2IF – Flag de interrupção por comparação entre PR2 e TMR2

  • 1 = Houve interrupção TMR2 e PR2 por comparação

  • 0 = Não houve interrupção TMR2 e PR2 por comparação


bit 0 - TMR1IF – Flag de interrupção por overflow no Timer1

  • 1 = Houve interrupção por overflow no TMR1

  • 0 = Não houve interrupção por overflow TMR1


REGISTRADOR PCON

Este registrador controla o clock interno e permite verificar o status do Power-on Reset e o Brown-out reset.


Lido sempre 0

Lido sempre 0

Lido sempre 0

Lido sempre 0

Leitura

Escrita

Lido sempre 0

Escrita

Leitura

Escrita

Leitura

--

--

--

--

OSCF

--

POR

BOR

bit 7


bit 0


bit 7..4 – vazios – lidos sempre como zero


bit 3 - OSCF – Frequencia do oscilador interno

  • 1 = 4MHz

  • 0 = 37KHz


bit 2 – vazio – sempre lido como zero


bit 1 - POR – Flag do Power-on reset

  • 1 = Não aconteceu um reset no Power-on

  • 0 = Aconteceu um reset no Power-on


bit 0 - BOR – Flag do Brown-out reset

  • 1 = Não aconteceu um reset por Brown-out

  • 0 = Aconteceu um reset por Brown-out



REGISTRADOR PCL

Este registrador contém o endereço da instrução a executar. Ele é incrementado automaticamente e contém os 8 bits menos significativos do PC (Progam Couter).


REGISTRADOR STACK

Este registrador contém os endereços de retorno para as sub-rotinas que utilizam a instrução CALL ou de retorno após a execução de uma interrupção. Note que no PIC16F628A só existem 8 níveis de stack, ou seja, não é possível executar mais que oito instruções CALL em Assembly ou fazer a chamada de 8 subrotinas sem executar ao menos uma instrução RETURN. Se isso for ignorado, o PIC ficará “desorientado” e o microcontrolador não funcionará corretamente.


REGISTRADORES INDF e FSR

Estes registradores permitem endereçar indiretamente o banco de memória RAM. Isso é muito útil quando deseja-se, por exemplo, escrever ou ler dados sequencialmente na memória. O registrador FSR deve conter o endereço indireto de memória que deseja-se ler ou escrever. No registro INDF será encontrado o dado do endereço apontado indiretamente por FSR.



REGISTRADORES PORTA e PORTB

Estes registradores contêm o estado atual dos “port’s” de I/O. Pode-se através de instruções acessá-los individualmente ou de forma “inteira”. Sem dúvida alguma estes registradores são os mais utilizados no PIC. Sempre que for preciso escrever ou ler de um pino de I/O, estes registradores serão utilizado. Mais a frente ester registradores serão demostrados com exemplos práticos.


REGISTRADORES TRISA e TRISB

Estes registradores permitem configurar os pinos de I/O como entrada ou saída. Isto é feito de acordo com cada necessidade. TRISA configura o “PORTA” e TRISB configura o “PORTB”. Se for preciso configurar um pino de I/O como entrada faz-se o bit deste pino igual a 1 e para saída o bit deve ser igual a zero.


Os outros registradores, que não foram comentados aqui, serão discutidos no decorrer desta pequena série, pois estão ligados diretamente aos periféricos do microcontrolador que serão posteriormente apresentados.



Copyright deste conteúdo reservado para Márcio José Soares e protegido pela Lei de Direitos Autorais LEI N° 9.610, de 19 de Fevereiro de 1998. É estritamente proibida a reprodução total ou parcial do conteúdo desta página em outros pontos da internet, livros ou outros tipos de publicações comerciais ou não, sem a prévia autorização por escrito do autor.