Altana Tubes > Blog > PIC16F627A/628A/648A > Memória > PCL e PCLATH

4.3 Registradores PCL e PCLATH dos microcontroladores PIC16F627A, PIC16F628A e PIC16F648A

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

Revisão: Renato Kodaira

O contador do programa (PC) dos microcontroladores PIC16F627APIC16F628A e PIC16F648A tem 13 bits de largura. O byte de ordem baixa vem do registrador PCL, que é um registrador de leitura e escrita. O byte de ordem alta (PC<12:8>) não pode ser lido ou escrito diretamente e vem do PCLATH. Em qualquer reinicialização, o PC é apagado. A Figura 4.4 mostra as duas situções para carregamento do PC. O exemplo superior na Figura 4.4 mostra como o PC é carregado em uma escrita no PCL (PCLATH<4:0> → PCH). O exemplo inferior na Figura 4.4 mostra como o PC é carregado durante a instrução CALL ou GOTO (PCLATH<4:3> → PCH).

FIGURA 4.4: CARREGAMENTO DO PC EM DIFERENTES SITUAÇÕES

4.3.1 GOTO COMPUTADO

Um GOTO computado é realizado adicionando-se um desvio ao contador de programa (ADDWF PCL). Ao se fazer a leitura de uma tabela utilizando-se o método GOTO , deve-se ter cuidado se a posição da tabela atravessa uma borda da memória PCL (cada bloco de 256 bytes). Consulte a Nota de Aplicação AN556 "Implementando a Leitura de uma Tabela" (DS00556).

4.3.2 PILHA

A família PIC16F627A/628A/648A possui uma pilha de hardware com 8 níveis de profundidade x 13 bits de largura (Figura 4.1). O espaço da pilha não é parte nem do espaço do programa e nem do espaço dos dados, e o Apontador de Pilha (Stack Pointer) não é acessível para leitura ou escrita. O PC é empilhado (PUSHed) no topo da pilha quando uma instrução CALL é executada, ou quando uma interrupção causa um desvio do programa. A pilha é desempilhada (POPed) na com a execução de uma instrução RETURN, RETLW ou RETFIE. O PCLATH não é afetado por uma operação PUSH ou POP.

A pilha opera como um buffer circular. Isto significa que depois que a pilha foi empilhada (PUSHed) oito vezes, o nono PUSH sobrescreve o valor que foi armazenado no primeiro PUSH. O décimo PUSH sobrescreve o segundo PUSH (e assim por diante).

Nota 1:
Não existem bits de Status para indicar condições de overflow ou underflow da pilha.

Nota 2:
Não existem instruções/ mnemônicas chamadas PUSH ou POP. Estas consistem em ações que decorrem da execução das instruções CALL,RETURN, RETLW e RETFIE, ou da vetorização para um endereço de interrupção.


<-Anterior Índice Próximo->