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

4.2.2.1 Registrador de Status dos microcontroladores PIC16F627A, PIC16F628A e PIC16F648A

Tradução: Maria Elisa - Assessoria em Inglês e Alemão 

Revisão: Renato Kodaira

O registrador de Status, mostrado no Registrador 4.1, contém o status aritmético da ALU, o status de reinicialização e os bits de seleção do banco para a memória de dados (SRAM).

O registrador de status pode ser o destino para qualquer instrução, assim como qualquer outro registrador. Se o registrador de status é o destino para uma instrução que afeta os bits Z, DC ou C, então a escrita nestes três bits é inabilitada. Estes bits são ativados ou apagados de acordo com a lógica do dispositivo. Além destes, os bits TO e PD não são acessíveis para escrita. Portanto, o resultado de uma instrução com o registrador de status como destino pode ser diferente do pretendido.

Por exemplo, CLRF STATUS apagará os três bits superiores e ativará o bit Z. Isso deixa o registrador de status na forma "000uu1uu" (onde u = inalterado).

É recomendado, portanto, que somente as instruções BCF, BSF, SWAPF e MOVWF sejam utilizadas para alterar o registrador de status, pois estas instruções não afetam nenhum bit de status. Para outras instruções que não afetam nenhum bit de status, consulte o "Resumo do Conjunto de Instruções".

Nota:
Os bits C e DC operam como bits externos de Borrow (empréstimo) e Digit Borrow (empréstimo de dígito), respectivamente, na subtração. Veja as intruções SUBLW e SUBWF como exemplos.

REGISTRADOR 4.1: STATUS - REGISTRADOR DE STATUS (ENDEREÇO: 03h, 83h, 103h, 183h)

 
R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x
IRP RP1 RP0 TO PD Z DC C
bit 7             bit 0

 
bit 7 IRP: Bit de Seleção do Banco de Registradores (utilizado para endereçamento indireto)
  1 = Banco 2, 3 (100h-1FFh)
  0 = Banco 0, 1 (00h-FFh)
 
bit 6-5 RP<1:0>: Bits de Seleção do Banco de Registradores (utilizados para endereçamento direto)
  00 = Banco 0 (00h-7Fh)
  01 = Banco 1 (80h-FFh)
  10 = Banco 2 (100h-17Fh)
  11 = Banco 3 (180h-1FFh)
 
bit 4 TO: Bit de estouro de Tempo (time out)
  1 = depois de ligado, instrução CLRWDT ou instrução SLEEP
  0 = ocorrido um estouro de tempo WDT
 
bit 3 PD: Bit de Desligamento (power-down)
  1 = depois de ligado ou pela instrução CLRWDT
  0 = pela execução da instrução SLEEP
 
bit 2 Z: Bit Zero
  1 = o resultado de uma operação aritmética ou lógica é zero
  0 = o resultado de uma operação aritmética ou lógica não é zero
 
bit 1 DC: Bit de Carregamento/Empréstimo de Dígito (Carry/Borrow) (instruções ADDWF, ADDLW, SUBLW, SUBWF) (para Borrow a polaridade é invertida)
  1 = ocorreu um carregamento ("vai um") desde o quarto bit de menor ordem do resultado
  0 = não ocorreu carregamento ("vai um") desde o quarto bit de menor ordem do resultado
 
bit 0 C: Bit de Carregamento/Empréstimo (Carry/Borrow) (instruções ADDWF, ADDLW, SUBLW, SUBWF)
  1 = ocorreu um carregamento ("vai um") desde o bit mais significativo do resultado
  0 = não ocorreu carregamento ("vai um") desde o bit mais significativo do resultado
 
  Nota: Para Borrow, a polaridade é invertida. Uma subtração é efetuada pela adição do complemento de dois do segundo operando. Para instruções de rotação (RRF, RLF), este bit é preenchido com o bit de alta ou de baixa ordem do registrador-fonte.

 
  Legenda:
R = bit de leitura
W = bit de escrita
U = bit não implementado (unimplemented), lido como '0'
-n = valor na POR
'1' = bit está ativado
'0' = bit está apagado
x = bit é desconhecido
<-Anterior Índice Próximo->