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 PIC16F627A, PIC16F628A 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.