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 |