Você está na página 1de 30

Traduzido do Inglês para o Português - www.onlinedoctranslator.

com

PIC18 (L) F2X / 4XK22


4.2 Master Clear (MCLR) FIGURA 4-2: LIGAÇÃO EXTERNA
REINICIAR CIRCUITO (PARA
O pino MCLR fornece um método para acionar uma
SLOW VDD ENERGIZAR)
reinicialização externa do dispositivo. Um Reset é gerado
mantendo o pino baixo. Esses dispositivos têm um filtro de
ruído no caminho de redefinição MCLR que detecta e ignora
VDD VDD
pequenos pulsos. Um fraco internopuxar-up é habilitado
FOTO® MCU
quando o pino é configurado como a entrada MCLR.
D R
O pino MCLR não é baixado por nenhuma reconfiguração R1
interna, incluindo o WDT. MCLR
Em dispositivos PIC18 (L) F2X / 4XK22, a entrada MCLR pode ser C
desabilitada com o bit de configuração MCLRE. Quando o MCLR é
desabilitado, o pino se torna uma entrada digital. Ver
Seção 10.6 "Registros PORTE" para mais
em formação.
Observação 1: Circuito de reinicialização externo de ativação é
necessário apenas se o VDD a inclinação do power-up é
muito lenta. O diodo D ajuda a descarregar o capacitor
4.3 Reinicialização de inicialização (POR) rapidamente quando VDD desliga.

Um pulso de reinicialização de inicialização é gerado no chip 2: 15 k- <R <40 k- é recomendado para garantir
que a queda de tensão em R não viole as
sempre que VDD sobe acima de um certo limite. Isso permite
especificações elétricas do dispositivo.
que o dispositivo inicie no estado inicializado quando VDD é
adequado para operação. 3: R1 - 1 k- limitará qualquer corrente fluindo
para MCLR do capacitor externo C, no caso
Para aproveitar as vantagens do circuito POR, deixe o pino flutuando de MCLR / VPP quebra do pino, devido a
ou amarre o pino MCLR por meio de um resistor em VDD. Isso descarga eletrostática (ESD) ou sobrecarga
eliminará os componentes RC externos geralmente necessários para elétrica (EOS).
criar um retardo na reinicialização da inicialização. Uma taxa de
aumento mínima para VDD é especificado. Para um tempo de subida
lento, consulte a Figura 4-2.

Quando o dispositivo começa a operação normal (ou seja, sai da


condição de reinicialização), os parâmetros operacionais do
dispositivo (tensão, frequência, temperatura, etc.) devem ser
atendidos para garantir a operação adequada. Se essas condições não
forem atendidas, o dispositivo deve ser mantido em Reset até que as
condições de operação sejam atendidas.

Os eventos POR são capturados pelo bit POR do registro RCON. O


estado do bit é definido como '0 ' sempre que um POR occurs; ele
não muda para nenhum outro evento de Reset. POR não foi
redefinido para '1 ' por qualquer evento de hardware. Para
capturar vários eventos, o usuário deve definir manualmente o
bit para '1 ' por software seguindo qualquer POR.

- 2010 Microchip Technology Inc. Preliminares DS41412B-page 61


PIC18 (L) F2X / 4XK22
4.4 Redefinição de Brown-out (BOR) 4.4.2 SOFTWARE HABILITADO BOR

Os dispositivos PIC18 (L) F2X / 4XK22 implementam um Quando BOREN <1: 0> = 01, o BOR pode ser habilitado
circuito BOR que fornece ao usuário uma série de opções ou desabilitado pelo usuário no software. Isso é feito
de configuração e economia de energia. O BOR é com o bit de controle SBOREN do registro RCON. Definir
controlado pelos bits BORV <1: 0> e BOREN <1: 0> do SBOREN permite que o BOR funcione conforme descrito
registro de configuração CONFIG2L. Há um total de anteriormente. Limpar o SBOREN desativa o BOR
quatro configurações de BOR resumidas na Tabela 4-1. inteiramente. O bit SBOREN opera apenas neste modo;
caso contrário, é lido como '0 '.
O limite BOR é definido pelos bits BORV <1: 0>. Se BOR
estiver habilitado (qualquer valor de BOREN <1: 0>, exceto Colocar o BOR sob o controle do software oferece ao usuário
'00'), qualquer gota de VDD abaixo de VBOR para maior a flexibilidade adicional de adaptar o aplicativo ao ambiente
que TBOR irá reiniciar o dispositivo. Um Reset pode ou sem ter que reprogramar o dispositivo para alterar a
não ocorrer se VDD cai abaixo de VBOR por menos de TBOR. configuração do BOR. Ele também permite que o usuário
O chip permanecerá em Brown-out Reset até VDD sobe ajuste o consumo de energia do dispositivo no software,
acima de VBOR. eliminando a corrente incremental que o BOR consome.
Embora a corrente BOR seja normalmente muito pequena,
Se o temporizador de inicialização estiver habilitado, ele será
ela pode ter algum impacto em aplicações de baixa potência.
invocado após VDD sobe acima de VBOR; em seguida, ele manterá
o chip em Reset por um atraso de tempo adicional, TPWRT. Se V Observação: Mesmo quando o BOR está sob o controle do
DD cai abaixo de VBOR enquanto o temporizador de inicialização software, o nível de tensão de reset do BOR ainda
estiver em execução, o chip voltará a uma redefinição marrom e é definido pelos bits de configuração BORV <1: 0>.
o temporizador de inicialização será inicializado. Uma vez VDD Não pode ser alterado por software.
sobe acima de VBOR, o temporizador de inicialização executará o
retardo de tempo adicional. 4.4.3 DESATIVANDO BOR NO MODO DORMIR

O BOR e o Power-on Timer (PWRT) são configurados Quando BOREN <1: 0> = 10, o BOR permanece sob controle
independentemente. Habilitar BOR Reset não habilita de hardware e opera conforme descrito anteriormente.
automaticamente o PWRT. Sempre que o dispositivo entra no modo de suspensão, no
entanto, o BOR é automaticamente desativado. Quando o
O circuito BOR tem uma saída que alimenta o circuito
dispositivo retorna a qualquer outro modo de operação, o
POR e rearma o POR dentro da faixa operacional do BOR.
BOR é reativado automaticamente.
Este rearmamento precoce do POR garante que o
dispositivo permanecerá em Reset no caso de VDD Este modo permite que os aplicativos se recuperem de situações
cai abaixo da faixa de operação do circuito BOR. de queda de energia, enquanto executam ativamente o código,
quando o dispositivo requer mais proteção BOR. Ao mesmo
4.4.1 DETECÇÃO DE BOR tempo, ele economiza energia adicional no modo Sleep,
eliminando a pequena corrente BOR incremental.
Quando BOR está habilitado, o bit BOR sempre redefine para '0 '
em qualquer evento BOR ou POR. Isso torna difícil
4.4.4 TEMPO DE HABILITAÇÃO DE BOR MÍNIMO
determinar se umBO evento OR ocorreu apenas pela leitura
do estado de BOR sozinho. Um método mais confiávelé para Habilitar o BOR também habilita a Referência de Tensão Fixa
verificar simultaneamente o estado de robôh POR e BOR. (FVR) quando nenhum outro periférico que requer o FVR está
Isso pressupõe que os bits POR e BOR são redefinidos para ativo. O BOR torna-se ativo somente após a estabilização do FVR.
'1' por software imimediatamente após qualquer evento POR. Se Portanto, para garantir a proteção do BOR, o tempo de
BOR for '0 ' enquanto POR é '1 ', pode-se presumir com estabilização do FVR deve ser considerado ao habilitar o BOR no
segurança que ocorreu um evento BOR. software ou quando o BOR for habilitado automaticamente após
despertar do sono. Se o BOR for desabilitado, no software ou ao
entrar novamente no modo de espera antes que o FVR se
estabilize, o circuito BOR não detectará uma condição de BOR. O
bit FVRST do registro VREFCON0 pode ser usado para determinar
a estabilidade de FVR.

DS41412B-page 62 Preliminares - 2010 Microchip Technology Inc.


PIC18 (L) F2X / 4XK22

TABELA 4-1: BOR CONFIGURATIONS


Configuração BOR Status de
SBOREN Operação BOR
BOREN1 BOREN0 (RCON <6>)

0 0 Indisponível BOR desativado; deve ser habilitado reprogramando os bits de configuração.


0 1 Disponível BOR habilitado por software; operação controlada pela SBOREN.
1 0 Indisponível BOR habilitado pelo hardware nos modos Run e Idle, desabilitado durante o
modo Sleep.
1 1 Indisponível BOR habilitado por hardware; deve ser desabilitado reprogramando os bits de configuração.

4,5 Timers de reinicialização do dispositivo 4.5.3 PLL LOCK TIME-OUT


PIC18 (L) F2X / 4XK22 dispositivos incorporar três Com o PLL habilitado, a sequência de tempo limite após uma reinicialização

temporizadores separados no chip que ajudam a regular o processo de na inicialização é ligeiramente diferente de outros modos do oscilador. Um

reinicialização do Poweron. Sua principal função é garantir que o relógio do temporizador separado é usado para fornecer um tempo limite fixo que é

dispositivo esteja estável antes que o código seja executado. Esses suficiente para o PLL travar na frequência do oscilador principal. Este tempo

cronômetros são: limite de bloqueio PLL (TPLL) é normalmente 2 ms e segue o tempo limite de
inicialização do oscilador.
• Temporizador de inicialização (PWRT)

• Temporizador de inicialização do oscilador (OST) 4.5.4 SEQUÊNCIA DE TEMPO LIMITE


• Tempo limite de bloqueio PLL
Na inicialização, a sequência de tempo limite é a seguinte:

4.5.1 TEMPORIZADOR DE ENERGIA (PWRT) 1. Após o pulso POR ter sido eliminado, o tempo limite de PWRT é
invocado (se habilitado).
O temporizador de inicialização (PWRT) dos dispositivos
2. Em seguida, o OST é ativado.
PIC18 (L) F2X / 4XK22 é um contador de 11 bits que usa a
fonte LFINTOSC como a entrada do relógio. Isso resulta em O tempo limite total varia com base na configuração do
um intervalo de tempo aproximado de 2048 x 32 -s = 65,6 oscilador e no status do PWRT. Figura 4-3, Figura 4-4, Figura
ms. Enquanto o PWRT está contando, o dispositivo é mantido 4-5, Figura 4-6 e Figura 4-7 representam sequências de
em Reset. tempo limite na inicialização, com o Temporizador de
inicialização habilitado e o dispositivo operando no modo
O atraso de tempo de inicialização depende do relógio
Oscilador HS . As Figuras 4-3 a 4-6 também se aplicam a
LFINTOSC e irá variar de chip para chip devido à temperatura
dispositivos que operam nos modos XT ou LP. Por outro
e variação do processo.
lado, para dispositivos em modo RC e com o PWRT
O PWRT é habilitado apagando o bit de configuração desabilitado, não haverá tempo limite.
PWRTEN.
Uma vez que os tempos limites ocorrem a partir do pulso POR, se
MCLR é mantido baixo por muito tempoai, todos os tempos
4.5.2 TEMPORIZADOR DE INICIALIZAÇÃO DO OSCILADOR
limite expirarão, após o que, elevar o MCLR alto permitirá que a
(OST)
execução do programa comece imediatamente (Figura 4-5). Isso
O temporizador de inicialização do oscilador (OST) fornece é útil para fins de teste ou para sincronizar mais de um PIC®
um atraso de ciclo do oscilador de 1024 (da entrada OSC1) Dispositivo MCU operando em paralelo.
após o término do atraso PWRT. Isso garante que o oscilador
ou ressonador de cristal foi iniciado e estabilizado.

O tempo limite de OST é invocado apenas para os modos XT, LP e HS e


apenas na reinicialização da inicialização ou na saída de todos os
modos gerenciados de energia que param o oscilador externo.

- 2010 Microchip Technology Inc. Preliminares DS41412B-page 63


PIC18 (L) F2X / 4XK22

TABELA 4-2: TEMPO LIMITE EM VÁRIAS SITUAÇÕES

Oscilador Energizar(2) e Brown-out Sair de


Configuração PWRTEN = 0 PWRTEN = 1 Modo de gerenciamento de energia

HSPLL 66 ms(1) + 1024 TOSC + 2 1024 TOSC + 2 ms(2) 1024 TOSC + 2 ms(2)
em(2)
HS, XT, LP 66 ms(1) + 1024 TOSC 1024 TOSC 1024 TOSC
EC, ECIO 66 ms(1) - -
RC, RCIO 66 ms(1) - -
INTIO1, INTIO2 66 ms(1) - -
Nota 1: 66 ms (65,5 ms) é o atraso nominal do temporizador de inicialização (PWRT).
2: 2 ms é o tempo nominal necessário para o bloqueio do PLL.

FIGURA 4-3: SEQUÊNCIA DE TEMPO LIMITE NA ALIMENTAÇÃO (MCLR LIGADO A VDD, VDD RISE <TPWRT)

VDD

MCLR

POR INTERNO

TPWRT

PWRT TIME-OUT
TOST

OST TIME-OUT

REINICIALIZAÇÃO INTERNA

FIGURA 4-4: SEQUÊNCIA DE TEMPO LIMITE NA ALIMENTAÇÃO (MCLR NÃO ASSOCIADO A VDD): CASO 1

VDD

MCLR

POR INTERNO
TPWRT

PWRT TIME-OUT
TOST

OST TIME-OUT

REINICIALIZAÇÃO INTERNA

DS41412B-page 64 Preliminares - 2010 Microchip Technology Inc.


PIC18 (L) F2X / 4XK22
FIGURA 4-5: SEQUÊNCIA DE TEMPO LIMITE NA ALIMENTAÇÃO (MCLR NÃO ASSOCIADO A VDD): CASO 2

VDD

MCLR

POR INTERNO
TPWRT

PWRT TIME-OUT
TOST

OST TIME-OUT

REINICIALIZAÇÃO INTERNA

FIGURA 4-6: TEMPO LENTO DE AUMENTO (MCLR LIGADO A VDD, VDD RISE> TPWRT)

5V
VDD 0V

MCLR

POR INTERNO

TPWRT

PWRT TIME-OUT
TOST

OST TIME-OUT

REINICIALIZAÇÃO INTERNA

- 2010 Microchip Technology Inc. Preliminares DS41412B-page 65


PIC18 (L) F2X / 4XK22
FIGURA 4-7: SEQUÊNCIA DE TEMPO LIMITE EM POR W / PLL HABILITADO (MCLR LIGADO A VDD)

VDD

MCLR

POR INTERNO
TPWRT

PWRT TIME-OUT
TOST

OST TIME-OUT TPLL

PLL TIME-OUT

REINICIALIZAÇÃO INTERNA

Observação: TOST = 1024 ciclos de clock. TPLL - 2 ms máx. Os primeiros três


estágios do temporizador PWRT.

DS41412B-page 66 Preliminares - 2010 Microchip Technology Inc.


PIC18 (L) F2X / 4XK22
4.6 Reiniciar estado de registros A Tabela 5-2 descreve os estados de reinicialização para
todos os registros de função especial. A tabela identifica
Alguns registros não são afetados por um Reset. Seu status é as diferenças entre Power-On Reset (POR) / Brown-Out
desconhecido no POR e inalterado por todas as outras redefinições. Reset (BOR) e todas as outras reinicializações (ou seja,
Todos os outros registros são forçados a um “estado de Master Clear, WDT Reset, STKFUL, STKUNF, etc.). Além
reinicialização” dependendo do tipo de reinicialização que ocorreu. disso, a tabela identifica os bits de registro que são
A maioria dos registros não são afetados por um despertar WDT, alterados quando o dispositivo recebe uma ativação do
uma vez que isso é visto como a retomada de noumãeeu WDT ou outras interrupções.
operação. Statuspedaços do registro RCON, RI, TO, PD, POR e
BOR, são configurados ou apagados de maneira diferente em
diferentes situações de Reset, conforme indicado na Tabela 4-3.
Esses bits são usados pelo software para determinar a natureza
do Reset.

TABELA 4-3: STATUS BITS, SEU SIGNIFICADO E A CONDIÇÃO DE INICIALIZAÇÃO PARA O


REGISTRO RCON

Programa Registro RCON Registro STKPTR


Doença
Contador SBOREN RI PARA PD POR BOR STKFUL STKUNF
Reinicialização de inicialização 0000h 1 1 1 1 0 0 0 0
REDEFINIR Instrução 0000h você(2)
0 você você você você você você
Redefinição de Brown-out 0000h você(2)
1 1 1 você 0 você você
MCLR durante modos de execução 0000h você(2)
você 1 você você você você você
gerenciados por energia

MCLR durante os modos de inatividade 0000h você(2)


você 1 0 você você você você
gerenciados por energia e modo de suspensão

Tempo limite do WDT durante o modo 0000h você(2)


você 0 você você você você você
Full Power ou Power-Managed Run

MCLR durante a execução de 0000h você(2)


você você você você você você você
energia total

Stack Full Reset (STVREN = 1) 0000h você(2)


você você você você você 1 você
Redefinir Stack Underflow 0000h você(2)
você você você você você você 1
(STVREN = 1)
Erro de estouro negativo da pilha (não é 0000h você(2)
você você você você você você 1
uma reinicialização real, STVREN = 0)

Tempo limite do WDT durante PC + 2 você(2)


você 0 0 você você você você
Modos de inatividade ou repouso com gerenciamento

de energia

Interromper saída de PC + 2(1) você(2)


você você 0 você você você você
Modos de gerenciamento de energia

Lenda: u = inalterado
Nota 1: Quando o despertar é devido a uma interrupção e os bits GIEH ou GIEL são definidos, o PC é carregado com o
vetor de interrupção (008h ou 0018h).
2: O estado de reinicialização é '1 ' para SBOREN e inalterado para todas as outras reinicializações quando o software BOR está habilitado
(BOREN <1: 0> bits de configuração = 01). Caso contrário, o estado de reinicialização é '0 '.

TABELA 4-4: REGISTROS ASSOCIADOS A RESET


Registro
Nome Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
na página

RCON IPEN SBOREN - RI PARA PD POR BOR 60


STKPTR STKFUL STKUNF - STKPTR <4: 0> 72
Lenda: - = locais não implementados, lidos como '0 '. Os bits sombreados não são usados para redefinições.

- 2010 Microchip Technology Inc. Preliminares DS41412B-page 67


PIC18 (L) F2X / 4XK22

TABELA 4-5: REGISTOS DE CONFIGURAÇÃO ASSOCIADOS A RESET


Registro
Nome Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
na página

CONFIG2L - - - BORV <1: 0> BOREN <1: 0> PWRTEN 352


CONFIG2H - - WDPS <3: 0> WDTEN <1: 0> 353
CONFIG3H MCLRE - P2BMX T3CMX HFOFST CCP3MX PBADEN CCP2MX 354
CONFIG4L DEPURAR XINST - - - LVP - STRVEN 355
Lenda: - = locais não implementados, lidos como '0 '. Os bits sombreados não são usados para redefinições.

DS41412B-page 68 Preliminares - 2010 Microchip Technology Inc.


PIC18 (L) F2X / 4XK22

5.0 ORGANIZAÇÃO DA MEMÓRIA 5.1 Organização da Memória do Programa

Existem três tipos de memória em dispositivos Os microcontroladores PIC18 implementam um contador de


microcontroladores PIC18 Enhanced: programa de 21 bits, que é capaz de endereçar um espaço
de memória de programa de 2 Mbyte. Acessar um local entre
• Memória de programa
o limite superior da memória fisicamente implementada e o
• RAM de dados
endereço de 2 Mbyte retornará todos '0 's (a
• Dados EEPROM NOP instrução).
Como dispositivos da arquitetura Harvard, os dados e as Esta família de dispositivos contém o seguinte:
memórias de programa usam barramentos separados; isso
• PIC18 (L) F23K22, PIC18 (L) F43K22: 8 Kbytes de memória
permite o acesso simultâneo dos dois espaços de memória. A
Flash, até 4.096 instruções de palavra única
EEPROM de dados, para fins práticos, pode ser considerada um
dispositivo periférico, uma vez que é endereçada e acessada por • PIC18 (L) F24K22, PIC18 (L) F44K22: 16 Kbytes de
meio de um conjunto de registros de controle. memória Flash, até 8.192 instruções de palavra única
• PIC18 (L) F25K22, PIC18 (L) F45K22: 32 Kbytes de
Informações detalhadas adicionais sobre a operação da
memória Flash, até 16.384 instruções de palavra
memória do programa Flash são fornecidas em Seção 6.0
única
“Memória de programa flash”. Dados EEPROM são
discutidos separadamente emSeção 7.0 "Memória EEPROM • PIC18 (L) F26K22, PIC18 (L) F46K22: 64 Kbytes de
de dados". memória Flash, até 37.768 instruções de palavra única

Os dispositivos PIC18 têm dois vetores de interrupção. O


endereço do vetor de reset está em 0000h e os endereços do
vetor de interrupção estão em 0008h e 0018h.

O mapa de memória do programa para dispositivos PIC18 (L) F2X /


4XK22 é mostrado na Figura 5-1. Os detalhes do bloco de memória
são mostrados na Figura 20-2.

- 2010 Microchip Technology Inc. Preliminares DS41412B-page 69


PIC18 (L) F2X / 4XK22
FIGURA 5-1: MAPA DE MEMÓRIA DO PROGRAMA E PILHA PARA DISPOSITIVOS PIC18 (L) F2X / 4XK22

PC <20: 0>
CALL, RCALL, RETURN 21
RETFIE, RETLW
Pilha de nível 1
-
-
-

Stack Level 31

Redefinir vetor 0000h

Vetor de interrupção de alta prioridade 0008h

Vetor de interrupção de baixa prioridade 0018h


On-Chip
Memória de Programa
1FFFh On-Chip
Memória de Programa
2000h
3FFFh On-Chip
PIC18 (L) F23K22 Memória de Programa
4000h
PIC18 (L) F43K22
On-Chip

Espaço de memória do usuário


PIC18 (L) F24K22
Memória de Programa
PIC18 (L) F44K22
7FFFh
8000h

PIC18 (L) F25K22


PIC18 (L) F45K22

FFFFh
10000h
Leitura '0 ' Leitura '0 ' Leitura '0 '
PIC18 (L) F26K22
PIC18 (L) F46K22

Leitura '0 '


1FFFFFh
200000h

5.1.1 CONTADOR DE PROGRAMA o CALL, RCALL, GOTO e as instruções de desvio do programa


são gravadas diretamente no contador do programa. Para
O contador de programa (PC) especifica o endereço da
essas instruções, o conteúdo de PCLATH e PCLATU não é
instrução a ser buscada para execução. O PC tem 21 bits de
transferido para o contador do programa.
largura e está contido em três registros separados de 8 bits.
O byte baixo, conhecido como registrador PCL, é legível e
5.1.2 RETORNAR PILHA DE ENDEREÇO
gravável. O byte alto, ou registrador PCH, contém os bits PC
<15: 8>; não é diretamente legível ou gravável. As A pilha de endereço de retorno permite que qualquer
atualizações no registro PCH são realizadas por meio do combinação de até 31 chamadas de programa e interrupções
registro PCLATH. O byte superior é denominado PCU. Este ocorram. O PC é colocado na pilha quando umLIGAR ou RCALL
registro contém os bits do PC <20:16>; também não é a instrução é executada ou uma interrupção é reconhecida.
diretamente legível ou gravável. As atualizações no registro O valor do PC é retirado da pilha em umRETURN, RETLW ou
PCU são realizadas por meio do registro PCLATU. um RETFIE instrução. PCLATU e PCLATH não são afetados por
nenhum dosRETORNA ou LIGAR
O conteúdo de PCLATH e PCLATU é transferido para o
instruções.
contador do programa por qualquer operação que grava
PCL. Da mesma forma, os dois bytes superiores do contador A pilha opera como uma RAM de 31 palavras por 21 bits e
do programa são transferidos para PCLATH e PCLATU por um Stack Pointer de 5 bits, STKPTR. O espaço de pilha não
uma operação que lê PCL. Isso é útil para compensações faz parte do programa nem do espaço de dados. O Stack
computadas para o PC (consulteSeção 5.1.4.1 “GOTO Pointer é legível e gravável e o endereço no topo da pilha é
Computado”) legível e gravável por meio dos Registros de Arquivos
Especiais do Topo da Pilha (TOS). Os dados também podem
O PC endereça bytes na memória do programa. Para evitar
ser enviados para, ou retirados da pilha, usando esses
que o PC fique desalinhado com as instruções de palavras, o
registradores.
bit menos significativo de PCL é fixado em um valor de '0 '. O
PC é incrementado em 2 para endereçar as instruções
sequenciais na memória do programa.

DS41412B-page 70 Preliminares - 2010 Microchip Technology Inc.


PIC18 (L) F2X / 4XK22
UMA LIGAR a instrução de tipo causa um push na 5.1.2.1 Acesso topo da pilha
pilha; o Stack Pointer é primeiro incrementado e a
Apenas o topo da pilha de endereço de retorno (TOS) é legível e
localização apontada pelo Stack Pointer é escrita com
gravável. Um conjunto de três registradores, TOSU: TOSH: TOSL,
o conteúdo do PC (já apontando para a instrução
contém o conteúdo da localização da pilha apontada pelo
após oLIGAR). UMA RETORNA a instrução de tipo
registrador STKPTR (Figura 5-2). Isso permite que os usuários
causa um estouro da pilha; o conteúdo do local
implementem uma pilha de software, se necessário. Após um
apontado pelo STKPTR é transferido para o PC e, em
CALL, RCALL ou interrupção, o software pode ler o valor enviado
seguida, o Stack Pointer é decrementado.
lendo os registros TOSU: TOSH: TOSL. Esses valores podem ser
O Stack Pointer é inicializado para '00000 ' afinal Resets. colocados em uma pilha de software definida pelo usuário. Na
Não há RAM associada ao local correspondente a um hora de retorno, o software pode retornar esses valores para
valor Stack Pointer de '00000 '; este é apenas um valor de TOSU: TOSH: TOSL e fazer um retorno.
redefinição. Os bits de status indicam se a pilha está
O usuário deve desabilitar os bits de habilitação de
cheia, estourou ou estourou.
interrupção global (GIE) ao acessar a pilha para evitar
corrupção inadvertida da pilha.

FIGURA 5-2: PILHA DE ENDEREÇO DE RETORNO E REGISTROS ASSOCIADOS

Pilha de endereços de devolução <20: 0>

11111
11110
Registros do topo da pilha 11101 Ponteiro de pilha

TOSU TOSH TOSL STKPTR <4: 0>


00h 1Ah 34h 00010
00011
Topo da pilha 001A34h 00010
000D58h 00001
00000

5.1.2.2 Ponteiro de pilha de retorno (STKPTR) Se STVREN for apagado, o bit STKFUL será definido no
31º push e o Stack Pointer aumentará para 31.
O registro STKPTR (registro 5-1) contém o valor do
Qualquer push adicional não substituirá o 31st push e
ponteiro da pilha, o bit de status STKFUL (pilha cheia) e
STKPTR permanecerá em 31.
os bits de status STKUNF (pilha insuficiente). O valor do
Stack Pointer pode ser de 0 a 31. O Stack Pointer Quando a pilha for removida vezes suficientes para
aumenta antes que os valores sejam colocados na pilha e descarregá-la, o próximo pop retornará um valor zero para o
diminui depois que os valores são removidos da pilha. PC e definirá o bit STKUNF, enquanto o ponteiro da pilha
Na reinicialização, o valor do Stack Pointer será zero. O permanecerá em zero. O bit STKUNF permanecerá definido
usuário pode ler e gravar o valor do Stack Pointer. Este até que seja limpo pelo software ou até que ocorra um POR.
recurso pode ser usado por um Sistema Operacional em
Observação: Retornar um valor de zero para o PC em um
Tempo Real (RTOS) para manutenção da pilha de retorno.
underflow tem o efeito de vetorar o
Depois que o PC é colocado na pilha 31 vezes (sem programa para o vetor Reset, onde as
retirar nenhum valor da pilha), o bit STKFUL é condições da pilha podem ser verificadas e
definido. O bit STKFUL é apagado pelo software ou as ações apropriadas podem ser tomadas.
por um POR. Isso não é o mesmo que um Reset, pois o
A ação que ocorre quando a pilha fica cheia depende conteúdo dos SFRs não é afetado.
do estado do bit de configuração STVREN (Stack
Overflow Reset Enable). (Referir-se
Seção 24.1 “Bits de configuração” para obter uma
descrição dos bits de configuração do dispositivo.) Se
STVREN for definido (padrão), o 31º push empurrará o valor
(PC + 2) para a pilha, definirá o bit STKFUL e reinicializará o
dispositivo. O bit STKFUL permanecerá definido e o ponteiro
de pilha será definido como zero.

- 2010 Microchip Technology Inc. Preliminares DS41412B-page 71


PIC18 (L) F2X / 4XK22
5.1.2.3 EMPURRE e POP Instruções o EMPURRE a instrução coloca o valor atual do PC na
pilha. Isso incrementa o ponteiro da pilha e carrega o
Como o Top-of-Stack é legível e gravável, a capacidade
valor atual do PC na pilha.
de enviar valores para a pilha e retirá-los da pilha sem
atrapalhar a execução normal do programa é um recurso o POP A instrução descarta o TOS atual diminuindo o
desejável. O conjunto de instruções PIC18 inclui duas Stack Pointer. O valor anterior colocado na pilha
instruções,EMPURRE e POP, que permitem que o TOS torna-se o valor TOS.
seja manipulado sob o controle do software. TOSU, TOSH
e TOSL podem ser modificados para colocar dados ou
um endereço de retorno na pilha.
REGISTRO 5-1: STKPTR: STACK POINTER REGISTER

R / C-0 R / C-0 U-0 R / W-0 R / W-0 R / W-0 R / W-0 R / W-0


STKFUL(1) STKUNF(1) - STKPTR <4: 0>
bit 7 bit 0

Lenda:
R = bit legível W = Bit gravável '1' = U = não implementado C = Apagável apenas o bit x

- n = Valor no POR Bit está definido '0' = Bit está limpo = O bit é desconhecido

bit 7 STKFUL: Bit Stack Full Flag(1)


1 = A pilha ficou cheia ou transbordou
0 = A pilha não ficou cheia ou transbordou
bit 6 STKUNF: Bit de sinalização de estouro negativo de pilha(1)

1 = Stack Underflow ocorreu


0 = Stack Underflow não ocorreu
bit 5 Não implementado: Lido como '0 '

bit 4-0 STKPTR <4: 0>: Bits de localização do ponteiro de pilha

Nota 1: Os bits 7 e 6 são apagados pelo software do usuário ou por um POR.

5.1.2.4 Redefinições de pilha cheia e de fluxo insuficiente enquanto atendendo a uma interrupção de baixa prioridade, os valores de
registro da pilha armazenados pela interrupção de baixa prioridade serão
As redefinições de dispositivo nas condições Stack Overflow e Stack
sobrescritos. Nestes casos, os usuários devem salvar os registros-chave por
Underflow são habilitadas configurando o bit STVREN no registro de
software durante uma interrupção de baixa prioridade.
configuração 4L. Quando STVREN é definido, um full ou underflow
definirá o bit STKFUL ou STKUNF apropriado e causará uma Se a prioridade de interrupção não for usada, todas as interrupções
reinicialização do dispositivo. Quando STVREN é apagado, uma podem usar a pilha de registro rápida para retornos de interrupção.
condição de full ou underflow definirá o bit STKFUL ou STKUNF Se nenhuma interrupção for usada, a pilha de registro rápida pode ser
apropriado, mas não causará uma reinicialização do dispositivo. Os usada para restaurar os registros de Status, WREG e BSR no final de
bits STKFUL ou STKUNF são apagados pelo software do usuário ou por uma chamada de sub-rotina. Para usar a pilha de registro rápido para
uma reinicialização na inicialização. uma chamada de sub-rotina, umRótulo CALL, RÁPIDO a instrução deve
ser executada para salvar os registradores Status, WREG e BSR na
5.1.3 PILHA DE REGISTRO RÁPIDO pilha de registradores rápida. UMARETORNAR, RÁPIDO
a instrução é então executada para restaurar esses registradores da
Uma pilha de registro rápida é fornecida para os registros Status,
pilha de registradores rápida.
WREG e BSR, para fornecer uma opção de “retorno rápido” para
interrupções. A pilha de cada registro tem apenas um nível de O Exemplo 5-1 mostra um exemplo de código-fonte que usa a
profundidade e não é legível nem gravável. Ele é carregado com pilha de registro rápido durante uma chamada e retorno de sub-
o valor atual do registro correspondente quando o processador é rotina.
vetor para uma interrupção. Todas as fontes de interrupção
enviarão valores para os registradores da pilha. Os valores nos
registros são carregados de volta em seus registros associados
se oRETFIE, RÁPIDO
a instrução é usada para retornar da interrupção.

Se as interrupções de baixa e alta prioridade estiverem habilitadas, os registros da


pilha não podem ser usados de forma confiável para retornar de interrupções de
baixa prioridade. Se ocorrer uma interrupção de alta prioridade

DS41412B-page 72 Preliminares - 2010 Microchip Technology Inc.


PIC18 (L) F2X / 4XK22
EXEMPLO 5-1: PILHA DE REGISTRO RÁPIDO 5.1.4.2 Leituras e gravações de tabelas
EXEMPLO DE CÓDIGO Um método melhor de armazenamento de dados na memória de programa
LIGUE PARA SUB1, RÁPIDO ; STATUS, WREG, BSR permite que dois bytes de dados sejam armazenados em cada localização de
; SALVO NO REGISTRO RÁPIDO;
instrução.
PILHA
- Os dados da tabela de consulta podem ser armazenados
- dois bytes por palavra de programa usando leituras e
gravações de tabelas. O registro Table Pointer (TBLPTR)
SUB1 - especifica o endereço do byte e o registro Table Latch
- (TABLAT) contém os dados que são lidos ou gravados na
RETORNAR, RÁPIDO ; RESTAURAR OS VALORES SALVOS
memória do programa. Os dados são transferidos de ou
; NA PILHA DE REGISTRO RÁPIDO
para a memória do programa, um byte de cada vez.

As operações de leitura e gravação de tabelas são discutidas


5.1.4 TABELAS DE PESQUISA NA MEMÓRIA DO
mais adiante em Seção 6.1 "Leituras e gravações de
PROGRAMA
tabelas".
Pode haver situações de programação que requeiram a criação
de estruturas de dados, ou tabelas de consulta, na memória do
programa. Para dispositivos PIC18, as tabelas de consulta podem
ser implementadas de duas maneiras:

• Computado VAMOS PARA

• Leituras de tabelas

5.1.4.1 Computado VAMOS PARA

A computado VAMOS PARA é realizado adicionando um


deslocamento ao contador do programa. Um exemplo é
mostrado no Exemplo 5-2.

Uma tabela de consulta pode ser formada com um ADDWF PCL


instrução e um grupo de RETLW nn instruções. O registro
W é carregado com um deslocamento na tabela antes de
executar uma chamada para essa tabela. A primeira
instrução da rotina chamada é aADDWF PCL instrução. A
próxima instrução executada será uma dasRETLW nn
instruções que retornam o valor 'nn ' para a função de
chamada.
O valor de deslocamento (em WREG) especifica o número
de bytes que o contador do programa deve avançar e
deve ser múltiplos de 2 (LSb = 0).
Neste método, apenas um byte de dados pode ser armazenado
em cada localização de instrução e é necessário espaço na pilha
de endereços de retorno.

EXEMPLO 5-2: COMPUTADORIZADO VAMOS PARA USANDO

UM VALOR DE COMPENSAÇÃO

MOVF OFFSET, W
LIGAR TABELA
ORG nn00h
TABELA ADDWF PCL
RETLW nnh
RETLW nnh
RETLW nnh
.
.
.

- 2010 Microchip Technology Inc. Preliminares DS41412B-page 73


PIC18 (L) F2X / 4XK22
5.2 Ciclo de Instrução PIC18 5.2.2 FLUXO DE INSTRUÇÃO / PIPELINAMENTO
Um “Ciclo de Instrução” consiste em quatro ciclos Q: Q1 a
5.2.1 ESQUEMA DE RELÓGIO
Q4. A instrução fetch e execute são pipeline de tal
A entrada do relógio do microcontrolador, seja de uma maneira que uma fetch leva um ciclo de instrução,
fonte interna ou externa, é dividida internamente por enquanto a decodificação e execução leva outro ciclo de
quatro para gerar quatro relógios de quadratura não instrução. No entanto, devido ao pipelining, cada
sobrepostos (Q1, Q2, Q3 e Q4). Internamente, o contador instrução é executada efetivamente em um ciclo. Se uma
do programa é incrementado a cada Q1; a instrução é instrução faz com que o contador do programa mude
buscada na memória do programa e travada no (por exemplo,VAMOS PARA), então, dois ciclos são
registrador de instrução durante o Q4. A instrução é necessários para completar a instrução (Exemplo 5-3).
decodificada e executada durante o Q1 seguinte até
Um ciclo de busca começa com o contador de programa (PC)
Q4. Os relógios são fluxo de execução de instrução são
incrementando em Q1.
mostrados na Figura 5-3.
No ciclo de execução, a instrução buscada é travada no
Registro de Instrução (IR) no ciclo Q1. Esta instrução é
então decodificada e executada durante os ciclos Q2, Q3
e Q4. A memória de dados é lida durante Q2 (leitura de
operando) e escrita durante Q4 (gravação de destino).

FIGURA 5-3: RELÓGIO / CICLO DE INSTRUÇÃO

T1 Q2 3º T Q4 T1 Q2 3º T Q4 T1 Q2 3º T Q4
OSC1
T1
Q2 interno
Estágio
3º T Relógio
Q4
PC PC PC + 2 PC + 4
OSC2 / CLKOUT
(Modo RC)
Execute INST (PC - 2)
Buscar INST (PC) Execute INST (PC)
Buscar INST (PC + 2) Executar INST (PC + 2)
Buscar INST (PC + 4)

EXEMPLO 5-3: FLUXO DO PIPELINE DE INSTRUÇÃO

TCY0 TCY1 TCY2 TCY3 TCY4 TCY5


1. MOVLW 55h Buscar 1 Execute 1
2. MOVWF PORTB Buscar 2 Execute 2
3. BRA SUB_1 Buscar 3 Execute 3
4. BSF PORTA, BIT3 (NOP forçado) Buscar 4 Rubor (NOP)
5. Instrução @ endereço SUB_1 Buscar SUB_1 Executar SUB_1

Todas as instruções são de ciclo único, exceto para quaisquer ramificações do programa. Isso leva dois ciclos, pois a instrução de busca
é “liberada” do pipeline enquanto a nova instrução está sendo buscada e então executada.

DS41412B-page 74 Preliminares - 2010 Microchip Technology Inc.


PIC18 (L) F2X / 4XK22
5.2.3 INSTRUÇÕES NA MEMÓRIA DO o LIGAR e VAMOS PARA as instruções têm o endereço de memória de
PROGRAMA programa absoluto embutido na instrução. Como as instruções são
sempre armazenadas em limites de palavra, os dados contidos na
A memória do programa é endereçada em bytes. As instruções
instrução são um endereço de palavra. O endereço da palavra é
são armazenadas como dois bytes ou quatro bytes na memória
escrito no PC <20: 1>, que acessa o endereço do byte desejado na
do programa. O byte menos significativo de uma palavra de
memória do programa. A instrução # 2 na Figura 5-4 mostra como a
instrução é sempre armazenado em uma localização de memória
instruçãoGOTO 0006h está codificado na memória do programa. As
de programa com um endereço par (LSb =0). Para manter o
instruções de desvio do programa, que codificam um deslocamento
alinhamento com os limites da instrução, os incrementos do PC
de endereço relativo, operam da mesma maneira. O valor de
em etapas de 2 e o LSb sempre lerá
deslocamento armazenado em uma instrução de desvio representa o
'0' (Vejo Seção 5.1.1 “Contador de programa”)
número de instruções de palavra única pelas quais o PC será
A Figura 5-4 mostra um exemplo de como as palavras de instrução são compensado.Seção 25.0 "Resumo do conjunto de instruções"
armazenadas na memória do programa.
fornece mais detalhes do conjunto de instruções.

FIGURA 5-4: INSTRUÇÕES NA MEMÓRIA DO PROGRAMA


Endereço Word
LSB = 1 LSB = 0 -
Memória de Programa 000000h
Localização de bytes -- 000002h
000004h
000006h
Instrução 1: MOVLW 055h 0Fh 55h 000008h
Instrução 2: VAMOS PARA 0006h EFh 03h 00000Ah
F0h 00h 00000Ch
Instrução 3: MOVFF 123h, 456h C1h 23h 00000Eh
F4h 56h 000010h
000012h
000014h

5.2.4 INSTRUÇÕES DE DUAS PALAVRAS e usado pela sequência de instruções. Se a primeira palavra
for ignorada por algum motivo e a segunda palavra for
O conjunto de instruções PIC18 padrão tem quatro
executada sozinha, umNOP é executado em seu lugar. Isso é
instruções de duas palavras: CALL, MOVFF, GOTO e LSFR. Em
necessário para os casos em que a instrução de duas
todos os casos, a segunda palavra da instrução sempre tem
palavras é precedida por uma instrução condicional que
'1111' como seus quatro bits mais significativos; os outros 12 bits são dados
muda o PC. O Exemplo 5-4 mostra como isso funciona.
literais, geralmente um endereço de memória de dados.

O uso de '1111 ' nos 4 MSbs de uma instrução especifica uma Observação: Ver Seção 5.6 "Execução da Instrução PIC18
forma especial de NOP. Se a instrução for executada na e o Conjunto de Instruções Estendido" para
sequência adequada - imediatamente após a primeira obter informações sobre instruções de duas
palavra - os dados da segunda palavra são acessados palavras no conjunto de instruções estendidas.

EXEMPLO 5-4: INSTRUÇÕES DE DUAS PALAVRAS


CASO 1:
Código do Objeto Código fonte
0110 0110 0000 0000 TSTFSZ REG1 ; é a localização RAM 0? ;
1100 0001 0010 0011 MOVFF REG1, REG2 Não, pule esta palavra
1111 0100 0101 0110 ; Execute esta palavra como um NOP;
0010 0100 0000 0000 ADDWF REG3 continuar código
CASO 2:
Código do Objeto Código fonte
0110 0110 0000 0000 TSTFSZ REG1 ; é a localização RAM 0?
1100 0001 0010 0011 MOVFF REG1, REG2 ; Sim, execute esta palavra; 2ª
1111 0100 0101 0110 palavra de instrução; continuar
0010 0100 0000 0000 ADDWF REG3 código

- 2010 Microchip Technology Inc. Preliminares DS41412B-page 75


PIC18 (L) F2X / 4XK22
5.3 Organização da Memória de Dados 5.3.1 BANK SELECT REGISTER (BSR)
Grandes áreas de memória de dados requerem um esquema de
Observação: A operação de alguns aspectos da memória de
endereçamento eficiente para possibilitar o acesso rápido a
dados é alterada quando o conjunto de
qualquer endereço. Idealmente, isso significa que um endereço
instruções estendidas PIC18 é habilitado. Ver
inteiro não precisa ser fornecido para cada operação de leitura
Seção 5.5 "Memória de dados e o conjunto
ou gravação. Para dispositivos PIC18, isso é realizado com um
de instruções estendidas" Para maiores
esquema de banco de RAM. Isso divide o espaço de memória em
informações.
16 bancos contíguos de 256 bytes. Dependendo da instrução,
A memória de dados em dispositivos PIC18 é implementada cada local pode ser endereçado diretamente por seu endereço
como RAM estática. Cada registro na memória de dados completo de 12 bits ou um endereço de ordem inferior de 8 bits e
possui um endereço de 12 bits, permitindo até 4096 bytes de um ponteiro de banco de 4 bits.
memória de dados. O espaço de memória é dividido em até A maioria das instruções no conjunto de instruções PIC18 faz
16 bancos que contêm 256 bytes cada. As Figuras 5-5 a 5-7 uso do Bank Pointer, conhecido como Bank Select Register
mostram a organização da memória de dados para os (BSR). Este SFR contém os 4 bits mais significativos do
dispositivos PIC18 (L) F2X / 4XK22. endereço de um local; a própria instrução inclui os 8 bits
A memória de dados contém registros de função especial menos significativos. Apenas os quatro bits inferiores do BSR
(SFRs) e registros de propósito geral (GPRs). Os SFRs são são implementados (BSR <3: 0>). Os quatro bits superiores
usados para controle e status do controlador e funções não são usados; eles sempre vão ler '0 ' e não pode ser
periféricas, enquanto os GPRs são usados para escrito. O BSR pode ser carregado diretamente usando o
armazenamento de dados e operações de rascunho no MOVLB instrução.
aplicativo do usuário. Qualquer leitura de um local não O valor do BSR indica o banco na memória de dados;
implementado será lido como '0 's. os 8 bits na instrução mostram a localização no banco
O conjunto de instruções e a arquitetura permitem operações em e podem ser considerados como um deslocamento
todos os bancos. Toda a memória de dados pode ser acessada do limite inferior do banco. A relação entre o valor do
pelos modos de endereçamento direto, indireto ou indexado. Os BSR e a divisão do banco na memória de dados é
modos de endereçamento são discutidos posteriormente nesta mostrada nas Figuras 5-5 a 5-7.
subseção. Uma vez que até 16 registros podem compartilhar o mesmo endereço
Para garantir que os registros comumente usados (SFRs e GPRs de ordem inferior, o usuário deve sempre ter o cuidado de garantir
selecionados) possam ser acessados em um único ciclo, os que o banco adequado seja selecionado antes de executar uma leitura
dispositivos PIC18 implementam um Banco de Acesso. Este é um ou gravação de dados. Por exemplo, gravar o que deveriam ser dados
espaço de memória de 256 bytes que fornece acesso rápido aos do programa em um endereço de 8 bits de F9h enquanto o BSR é 0Fh
SFRs e à parte inferior do GPR Bank 0 sem usar o Bank Select acabará reiniciando o contador do programa.
Register (BSR).Seção 5.3.2 “Banco de Acesso” Embora qualquer banco possa ser selecionado, apenas os bancos
fornece uma descrição detalhada do Access RAM. que estão realmente implementados podem ser lidos ou
gravados. As gravações em bancos não implementados são
ignoradas, enquanto as leituras em bancos não implementados
retornarão '0 's. Mesmo assim, o registro de STATUS ainda será
afetado como se a operação fosse bem-sucedida. Os mapas de
memória de dados nas Figuras 5-5 a 5-7 indicam quais bancos
estão implementados.

No conjunto de instruções PIC18 principal, apenas o MOVFF


a instrução especifica completamente o endereço de 12 bits dos
registradores de origem e destino. Esta instrução ignora o BSR
completamente quando é executado. Todas as outras instruções
incluem apenas o endereço de ordem inferior como um
operando e devem usar o BSR ou o Banco de Acesso para
localizar seus registradores de destino.

DS41412B-page 76 Preliminares - 2010 Microchip Technology Inc.


PIC18 (L) F2X / 4XK22
FIGURA 5-5: MAPA DE MEMÓRIA DE DADOS PARA DISPOSITIVOS PIC18 (L) F23K22 E PIC18 (L) F43K22
Quando 'a' = 0:
BSR <3: 0> Mapa de memória de dados
O BSR é ignorado e o Banco
00h 000h de Acesso é usado.
= 0000 Acesso RAM
05Fh Os primeiros 96 bytes
Banco 0 060h
FFh GPR são RAM de uso geral
0FFh
00h 100h (do Banco 0).
= 0001
Banco 1 GPR Os segundos 160 bytes são
FFh 1FFh Registros de Função Especial
= 0010 00h 200h (do Banco 15).
Banco 2
FFh 2FFh Quando 'a' = 1:
= 0011 00h 300h
Banco 3 O BSR especifica o banco
usado pela instrução.
FFh 3FFh
00h 400h
= 0100 Banco 4

FFh 4FFh
= 0101 00h 500h
Banco 5

FFh 5FFh
= 0110 00h 600h
Banco 6
Banco de acesso
FFh 6FFh
= 0111 00h 700h 00h
Banco 7 Acesso RAM baixo
5Fh
FFh 7FFh Acesso RAM alto 60h
= 1000 00h 800h (SFRs)
Banco 8 FFh

FFh 8FFh
= 1001 00h Não utilizado 900h
Banco 9 Leia 00h
FFh 9FFh
00h A00h
= 1010
Banco 10

FFh AFFh
= 1011 00h B00h
Banco 11

FFh BFFh
= 1100 00h C00h
Banco 12

FFh CFFh
= 1101 D00h
Banco 13
00h

FFh DFFh
00h E00h
= 1110
Banco 14
FFh EFFh
00h F00h
= 1111 Não utilizado
F37h
Banco 15
F38h
SFR(1) F5Fh Observação 1: Os endereços de F38h a F5Fh também
são usados por SFRs, mas não fazem
F60h
parte da RAM de acesso. Os usuários
devem sempre usar o endereço
SFR
completo ou carregar o valor BSR
FFh FFFh adequado para acessar esses registros.

- 2010 Microchip Technology Inc. Preliminares DS41412B-page 77


PIC18 (L) F2X / 4XK22
FIGURA 5-6: MAPA DE MEMÓRIA DE DADOS PARA DISPOSITIVOS PIC18 (L) F24K22 E PIC18 (L) F44K22

Quando 'a' = 0:
BSR <3: 0> Mapa de memória de dados
O BSR é ignorado e o Banco
000h de Acesso é usado.
00h Acesso RAM
= 0000 05Fh
Banco 0 Os primeiros 96 bytes
GPR 060h
FFh 0FFh são RAM de uso geral
00h 100h (do Banco 0).
= 0001
Banco 1 GPR Os segundos 160 bytes são
FFh 1FFh Registros de Função Especial
= 0010 00h 200h (do Banco 15).
Banco 2 GPR
FFh 2FFh Quando 'a' = 1:
= 0011 00h 300h
Banco 3 O BSR especifica o banco
usado pela instrução.
FFh 3FFh
00h 400h
= 0100 Banco 4

FFh 4FFh
= 0101 00h 500h
Banco 5

FFh 5FFh
= 0110 00h 600h
Banco 6
Banco de acesso
FFh 6FFh
= 0111 00h 700h 00h
Banco 7 Acesso RAM baixo
5Fh
FFh 7FFh Acesso RAM alto 60h
= 1000 00h 800h (SFRs)
Banco 8 FFh

FFh 8FFh
= 1001 00h Não utilizado 900h
Banco 9 Leia 00h
FFh 9FFh
00h A00h
= 1010
Banco 10

FFh AFFh
= 1011 00h B00h
Banco 11

FFh BFFh
= 1100 00h C00h
Banco 12

FFh CFFh
= 1101 D00h
Banco 13
00h

FFh DFFh
00h E00h
= 1110
Banco 14
FFh EFFh
00h F00h
= 1111 Não utilizado
F37h
Banco 15
F38h
SFR(1) 1: Os endereços de F38h a F5Fh também
F5Fh Observação

são usados por SFRs, mas não fazem


F60h
parte da RAM de acesso. Os usuários
devem sempre usar o endereço
SFR completo ou carregar o valor BSR
FFh adequado para acessar esses registros.
FFFh

DS41412B-page 78 Preliminares - 2010 Microchip Technology Inc.


PIC18 (L) F2X / 4XK22
FIGURA 5-7: MAPA DE MEMÓRIA DE DADOS PARA DISPOSITIVOS PIC18 (L) F25K22 E PIC18 (L) F45K22

Quando 'a' = 0:
BSR <3: 0> Mapa de memória de dados
O BSR é ignorado e o Banco
000h de Acesso é usado.
00h Acesso RAM
= 0000 05Fh
Banco 0 Os primeiros 96 bytes
GPR 060h
FFh 0FFh são RAM de uso geral
00h 100h (do Banco 0).
= 0001
Banco 1 GPR Os segundos 160 bytes são
FFh 1FFh Registros de Função Especial
= 0010 00h 200h (do Banco 15).
Banco 2 GPR
FFh 2FFh Quando 'a' = 1:
= 0011 00h 300h
Banco 3 O BSR especifica o banco
GPR
usado pela instrução.
FFh 3FFh
00h 400h
= 0100 Banco 4 GPR
FFh 4FFh
= 0101 00h 500h
Banco 5
GPR
FFh 5FFh
= 0110 00h 600h
Banco 6
Banco de acesso
FFh 6FFh
= 0111 00h 700h 00h
Banco 7 Acesso RAM baixo
5Fh
FFh 7FFh Acesso RAM alto 60h
= 1000 00h 800h (SFRs)
Banco 8 FFh

FFh 8FFh
= 1001 00h 900h
Banco 9

FFh 9FFh
00h A00h
= 1010 Não utilizado
Banco 10
Leia 00h
FFh AFFh
= 1011 00h B00h
Banco 11

FFh BFFh
= 1100 00h C00h
Banco 12

FFh CFFh
= 1101 D00h
Banco 13
00h

FFh DFFh
00h E00h
= 1110
Banco 14
FFh EFFh
00h F00h
= 1111 Não utilizado
F37h
Banco 15
SFR(1)
F38h Observação 1: Os endereços de F38h a F5Fh também
F5Fh são usados por SFRs, mas não fazem
F60h parte da RAM de acesso. Os usuários
devem sempre usar o endereço
SFR completo ou carregar o valor BSR
adequado para acessar esses registros.
FFh FFFh

- 2010 Microchip Technology Inc. Preliminares DS41412B-page 79


PIC18 (L) F2X / 4XK22
FIGURA 5-8: MAPA DE MEMÓRIA DE DADOS PARA DISPOSITIVOS PIC18 (L) F26K22 E PIC18 (L) F46K22

Quando 'a' = 0:
BSR <3: 0> Mapa de memória de dados
O BSR é ignorado e o Banco
000h de Acesso é usado.
00h Acesso RAM
= 0000 05Fh
Banco 0 Os primeiros 96 bytes
GPR 060h
FFh 0FFh são RAM de uso geral
00h 100h (do Banco 0).
= 0001
Banco 1 GPR Os segundos 160 bytes são
FFh 1FFh Registros de Função Especial
= 0010 00h 200h (do Banco 15).
Banco 2 GPR
FFh 2FFh Quando 'a' = 1:
= 0011 00h 300h
Banco 3 O BSR especifica o banco
GPR
usado pela instrução.
FFh 3FFh
00h 400h
= 0100 Banco 4 GPR
FFh 4FFh
= 0101 00h 500h
Banco 5
GPR
FFh 5FFh
= 0110 00h 600h
Banco 6 GPR
Banco de acesso
FFh 6FFh
= 0111 00h 700h 00h
Banco 7 Acesso RAM baixo
GPR 5Fh
FFh 7FFh Acesso RAM alto 60h
= 1000 00h 800h (SFRs)
Banco 8 FFh
GPR
FFh 8FFh
= 1001 00h 900h
Banco 9 GPR
FFh 9FFh
00h A00h
= 1010
Banco 10 GPR
FFh AFFh
= 1011 00h B00h
Banco 11 GPR
FFh BFFh
= 1100 00h C00h
Banco 12 GPR
FFh CFFh
= 1101 D00h
Banco 13
00h
GPR
FFh DFFh
00h E00h
= 1110
Banco 14 GPR
FFh
00h F00h
= 1111 GPR F37h
Banco 15
F38h
SFR(1) 1: Os endereços de F38h a F5Fh também
F5Fh Observação

F60h são usados por SFRs, mas não fazem


parte da RAM de acesso. Os usuários
SFR devem sempre usar o endereço
completo ou carregar o valor BSR
adequado para acessar esses registros.
FFh FFFh

DS41412B-page 80 Preliminares - 2010 Microchip Technology Inc.


PIC18 (L) F2X / 4XK22
FIGURA 5-9: USO DO REGISTRO DE SELEÇÃO DE BANCO (ENDEREÇO DIRETO)

Memória de Dados
BSR(1) Do Opcode(2)
7 0 000h 00h 7 0
00000011 Banco 0 11111111
FFh
100h 00h
Banco 1
Seleção de banco(2)
200h FFh
00h
Banco 2
300h FFh
00h

Banco 3
Através dos

Banco 13

FFh
E00h
00h
Banco 14
F00h FFh
00h
Banco 15
FFFh FFh

Nota 1: O bit Access RAM da instrução pode ser usado para forçar uma sobreposição do banco selecionado (BSR <3: 0>) para os
registradores do banco de acesso.
2: o MOVFF a instrução incorpora todo o endereço de 12 bits na instrução.

- 2010 Microchip Technology Inc. Preliminares DS41412B-page 81


PIC18 (L) F2X / 4XK22
5.3.2 ACESSAR BANCO 5.3.3 ARQUIVO DE REGISTRO DE PROPÓSITO

Embora o uso do BSR com um endereço de 8 bits incorporado GERAL


permita aos usuários endereçar toda a gama de memória de Os dispositivos PIC18 podem ter armazenado memória na área GPR.
dados, isso também significa que o usuário deve sempre garantir Esta é a RAM de dados, que está disponível para uso em todas as
que o banco correto seja selecionado. Caso contrário, os dados instruções. Os GPRs começam na parte inferior do Banco 0 (endereço
podem ser lidos ou gravados no local errado. Isso pode ser 000h) e crescem em direção à parte inferior da área de SFR. Os GPRs
desastroso se um GPR for o alvo pretendido de uma operação, não são inicializados por uma reinicialização na inicialização e não são
mas um SFR for gravado em seu lugar. Verificar e / ou alterar o alterados em todas as outras reinicializações.
BSR para cada leitura ou gravação na memória de dados pode se
tornar muito ineficiente. 5.3.4 REGISTROS DE FUNÇÕES ESPECIAIS
Para agilizar o acesso aos locais de memória de dados mais Os Registros de Função Especial (SFRs) são registros usados
comumente usados, a memória de dados é configurada com pela CPU e módulos periféricos para controlar a operação
um banco de acesso, que permite aos usuários acessar um desejada do dispositivo. Esses registros são implementados
bloco mapeado de memória sem especificar um BSR. O como RAM estática. SFRs começam no topo da memória de
Banco de Acesso consiste nos primeiros 96 bytes de dados (FFFh) e se estendem para baixo para ocupar a parte
memória (00h-5Fh) no Banco 0 e nos últimos 160 bytes de superior do Banco 15 (F38h a FFFh). Uma lista desses
memória (60h-FFh) no Bloco 15. A metade inferior é registros é fornecida na Tabela 5-1 e Tabela 5-2.
conhecida como “RAM de Acesso” e é composta por GPRs. Os SFRs podem ser classificados em dois conjuntos:
Esta metade superior também é onde os SFRs do dispositivo aqueles associados à funcionalidade do dispositivo
são mapeados. Essas duas áreas são mapeadas de forma “principal” (ALU, reinicializações e interrupções) e aqueles
contígua no Banco de Acesso e podem ser endereçadas de relacionados às funções periféricas. Os registros de reset
maneira linear por um endereço de 8 bits (Figuras 5-5 a 5-7). e interrupção são descritos em seus respectivos
O banco de acesso é usado pelas instruções PIC18 capítulos, enquanto o registro de STATUS da ALU é
centrais que incluem o bit Access RAM (o parâmetro 'a' descrito posteriormente nesta seção. Os registros
na instrução). Quando 'a' é igual a '1 ', a instrução usa o relacionados à operação de um recurso periférico são
BSR e o endereço de 8 bits incluído no opcode para o descritos no capítulo desse periférico.
endereço de memória de dados. Quando 'a' é '0 ', Os SFRs são normalmente distribuídos entre os periféricos
no entanto, a instrução é forçada a usar o mapa de cujas funções eles controlam. Os locais SFR não utilizados
endereços do banco de acesso; o valor atual do BSR é não foram implementados e lidos como '0 's.
totalmente ignorado.
Usar este endereçamento “forçado” permite que a instrução
opere em um endereço de dados em um único ciclo, sem
atualizar o BSR primeiro. Para endereços de 8 bits de 60h e
acima, isso significa que os usuários podem avaliar e operar em
SFRs com mais eficiência. O Access RAM abaixo de 60h é um bom
lugar para valores de dados que o usuário pode precisar acessar
rapidamente, como resultados computacionais imediatos ou
variáveis de programa comuns. O Access RAM também permite
um salvamento de contexto de código mais rápido e eficiente e a
troca de variáveis.

O mapeamento do banco de acesso é ligeiramente diferente


quando o conjunto de instruções estendidas está habilitado (bit
de configuração XINST = 1). Isso é discutido em mais detalhes em
Seção 5.5.3 "Mapeando o Banco de Acesso no Modo de
Compensação Literal Indexada".

DS41412B-page 82 Preliminares - 2010 Microchip Technology Inc.


PIC18 (L) F2X / 4XK22

TABELA 5-1: MAPA DE REGISTRO DE FUNÇÕES ESPECIAIS PARA DISPOSITIVOS PIC18 (L) F2X / 4XK22

Endereço Nome Endereço Nome Endereço Nome Endereço Nome Endereço Nome
FFFh TOSU FD7h TMR0H FAFh SPBRG1 F87h - (2) F5Fh CCPR3H
FFEh TOSH FD6h TMR0L FAEh RCREG1 F86h - (2) F5Eh CCPR3L
FFDh TOSL FD5h T0CON FADh TXREG1 F85h - (2) F5Dh CCP3CON
FFCh STKPTR FD4h - (2) FACh TXSTA1 F84h PORTE F5Ch PWM3CON
FFBh PCLATU FD3h OSCCON FABh RCSTA1 F83h PORTD(3) F5Bh ECCP3AS
FFAh PCLATH FD2h OSCCON2 FAAh EEADRH(4) F82h PORTC F5Ah PSTR3CON
FF9h PCL FD1h WDTCON FA9h EEADR F81h PORTB F59h CCPR4H
FF8h TBLPTRU FD0h RCON FA8h EEDATA F80h PORTA F58h CCPR4L
FF7h TBLPTRH FCFh TMR1H FA7h EECON2(1) F7Fh IPR5 F57h CCP4CON
FF6h TBLPTRL FCEh TMR1L FA6h EECON1 F7Eh PIR5 F56h CCPR5H
FF5h TABLAT FCDh T1CON FA5h IPR3 F7Dh PIE5 F55h CCPR5L
FF4h PRODH FCCh T1GCON FA4h PIR3 F7Ch IPR4 F54h CCP5CON
FF3h PRODL FCBh SSP1CON3 FA3h PIE3 F7Bh PIR4 F53h TMR4
FF2h INTCON FCAh SSP1MSK FA2h IPR2 F7Ah PIE4 F52h PR4
FF1h INTCON2 FC9h SSP1BUF FA1h PIR2 F79h CM1CON0 F51h T4CON
FF0h INTCON3 FC8h SSP1ADD FA0h PIE2 F78h CM2CON0 F50h TMR5H
FEFh INDF0(1) FC7h SSP1STAT F9Fh IPR1 F77h CM2CON1 F4Fh TMR5L
FEEh POSTINC0(1) FC6h SSP1CON1 F9Eh PIR1 F76h SPBRGH2 F4Eh T5CON
FEDh POSTDEC0(1) FC5h SSP1CON2 F9Dh PIE1 F75h SPBRG2 F4Dh T5GCON
FECh PREINC0(1) FC4h ADRESH F9Ch HLVDCON F74h RCREG2 F4Ch TMR6
FEBh PLUSW0(1) FC3h ADRESL F9Bh OSCTUNE F73h TXREG2 F4Bh PR6
FEAh FSR0H FC2h ADCON0 F9Ah - (2) F72h TXSTA2 F4Ah T6CON
FE9h FSR0L FC1h ADCON1 F99h - (2) F71h RCSTA2 F49h CCPTMRS0
FE8h WREG FC0h ADCON2 F98h - (2) F70h BAUDCON2 F48h CCPTMRS1
FE7h INDF1(1) FBFh CCPR1H F97h - (2) F6Fh SSP2BUF F47h SRCON0
FE6h POSTINC1(1) FBEh CCPR1L F96h TRISE F6Eh SSP2ADD F46h SRCON1
FE5h POSTDEC1(1) FBDh CCP1CON F95h TRISD(3) F6Dh SSP2STAT F45h CTMUCONH
FE4h PREINC1(1) FBCh TMR2 F94h TRISC F6Ch SSP2CON1 F44h CTMUCONL
FE3h PLUSW1(1) FBBh PR2 F93h TRISB F6Bh SSP2CON2 F43h CTMUICON
FE2h FSR1H FBAh T2CON F92h TRISA F6Ah SSP2MSK F42h VREFCON0
FE1h FSR1L FB9h PSTR1CON F91h - (2) F69h SSP2CON3 F41h VREFCON1
FE0h BSR FB8h BAUDCON1 F90h - (2) F68h CCPR2H F40h VREFCON2
FDFh INDF2(1) FB7h PWM1CON F8Fh - (2) F67h CCPR2L F3Fh PMD0
FDEh POSTINC2(1) FB6h ECCP1AS F8Eh - (2) F66h CCP2CON F3Eh PMD1
FDDh POSTDEC2(1) FB5h - (2) F8Dh ATRASADO(3) F65h PWM2CON F3Dh PMD2
FDCh PREINC2(1) FB4h T3GCON F8Ch LATD(3) F64h ECCP2AS F3Ch ANSELE
FDBh PLUSW2(1) FB3h TMR3H F8Bh LATC F63h PSTR2CON F3Bh ANSELD
FDAh FSR2H FB2h TMR3L F8Ah LATB F62h IOCB F3Ah ANSELC
FD9h FSR2L FB1h T3CON F89h LATA F61h WPUB F39h ANSELB
FD8h STATUS FB0h SPBRGH1 F88h - (2) F60h SLRCON F38h ANSELA

Nota 1: Este não é um registro físico. Registros não


2: implementados são lidos como '0 '.
3: Dispositivos PIC18 (L) F4XK22 apenas.
4: Dispositivos PIC18 (L) F26K22 e PIC18 (L) F46K22 apenas.

- 2010 Microchip Technology Inc. Preliminares DS41412B-page 83


PIC18 (L) F2X / 4XK22
TABELA 5-2: RESUMO DO ARQUIVO DE REGISTRO PARA DISPOSITIVOS PIC18 (L) F2X / 4XK22

Value sobre
Endereço Nome Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
POR, BOR

FFFh TOSU - - - Topo da pilha, Byte superior (TOS <20:16>) - - - 0 0000


FFEh TOSH Topo da pilha, Byte alto (TOS <15: 8>) 0000 0000
FFDh TOSL Topo da pilha, Byte baixo (TOS <7: 0>) 0000 0000
FFCh STKPTR STKFUL STKUNF - STKPTR <4: 0> 00-0 0000
FFBh PCLATU - - - Mantendo o Registro para PC <20:16> - - - 0 0000
FFAh PCLATH Registro de retenção para PC <15: 8> 0000 0000
FF9h PCL Registro de retenção para PC <7: 0> 0000 0000
FF8h TBLPTRU - - Byte superior do ponteiro da tabela de memória do programa (TBLPTR <21:16>) - - 00 0000
FF7h TBLPTRH Byte alto do ponteiro da tabela de memória do programa (TBLPTR <15: 8>) 0000 0000
FF6h TBLPTRL Byte baixo do ponteiro da tabela da memória do programa (TBLPTR <7: 0>) 0000 0000
FF5h TABLAT Trava da tabela de memória do programa 0000 0000
FF4h PRODH Registro de produto, registro de xxxx xxxx
FF3h PRODL produto de byte alto, byte baixo xxxx xxxx
FF2h INTCON GIE / GIEH PEIE / GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 0000 000x
FF1h INTCON2 RBPU INTEDG0 INTEDG1 INTEDG2 - TMR0IP - RBIP 1111 - 1-1
FF0h INTCON3 INT2IP INT1IP - INT2IE INT1IE - INT2IF INT1IF 11-0 0-00
FEFh INDF0 Usa o conteúdo de FSR0 para endereçar a memória de dados - valor de FSR0 não alterado (não é um registro físico). Usa o ---- ----
FEEh POSTINC0 conteúdo de FSR0 para endereçar a memória de dados - valor de FSR0 pós-incrementado (não é um registro físico) ---- ----
FEDh POSTDEC0 Usa o conteúdo de FSR0 para endereçar a memória de dados - valor de FSR0 pós-decrescente (não um registro físico). Usa o ---- ----
FECh PREINC0 conteúdo de FSR0 para endereçar a memória de dados - valor de FSR0 pré-incrementado (não um registro físico) ---- ----
FEBh PLUSW0 Usa o conteúdo do FSR0 para endereçar a memória de dados - valor do FSR0 pré-incrementado (não é um registro físico) - ---- ----
valor de FSR0 compensado por W

FEAh FSR0H - - - - Ponteiro de endereço de memória de dados indiretos 0, byte alto ---- 0000
FE9h FSR0L Ponteiro de endereço de memória de dados indiretos 0, byte baixo xxxx xxxx
FE8h WREG Registro de Trabalho xxxx xxxx
FE7h INDF1 Usa o conteúdo do FSR1 para endereçar a memória de dados - valor do FSR1 não alterado (não é um registro físico). Usa o ---- ----
FE6h POSTINC1 conteúdo do FSR1 para endereçar a memória dos dados - valor do FSR1 pós-incrementado (não é um registro físico) ---- ----
FE5h POSTDEC1 Usa o conteúdo de FSR1 para endereçar memória de dados - valor de FSR1 pós-decrescente (não é um registro físico) ---- ----
FE4h PREINC1 Usa o conteúdo do FSR1 para endereçar a memória de dados - valor do FSR1 pré-incrementado (não é um registro físico) ---- ----
FE3h PLUSW1 Usa o conteúdo do FSR1 para endereçar a memória de dados - valor do FSR1 pré-incrementado (não é um registro físico) - ---- ----
valor de FSR1 deslocado por W

FE2h FSR1H - - - - Ponteiro de endereço de memória de dados indiretos 1, byte alto ---- 0000
FE1h FSR1L Ponteiro de endereço de memória de dados indiretos 1, byte baixo xxxx xxxx
FE0h BSR - - - - Banco Select Register ---- 0000
FDFh INDF2 Usa o conteúdo do FSR2 para endereçar a memória de dados - valor do FSR2 não alterado (não é um registro físico). Usa o ---- ----
FDEh POSTINC2 conteúdo do FSR2 para endereçar a memória de dados - valor do FSR2 pós-incrementado (não é um registro físico) ---- ----
FDDh POSTDEC2 Usa o conteúdo do FSR2 para endereçar a memória de dados - valor do FSR2 pós-decrescente (não é um registro físico) ---- ----
FDCh PREINC2 Usa o conteúdo do FSR2 para endereçar a memória de dados - valor do FSR2 pré-incrementado (não é um registro físico) ---- ----
FDBh PLUSW2 Usa o conteúdo do FSR2 para endereçar a memória de dados - valor do FSR2 pré-incrementado (não é um registro físico) - ---- ----
valor de FSR2 deslocado por W

FDAh FSR2H - - - - Ponteiro de endereço de memória de dados indiretos 2, byte alto ---- 0000
FD9h FSR2L Ponteiro de endereço de memória de dados indiretos 2, byte baixo xxxx xxxx
FD8h STATUS - - - N OV Z DC C - - - x xxxx
FD7h TMR0H Registro Timer0, Byte alto 0000 0000
FD6h TMR0L Registro Timer0, Byte baixo xxxx xxxx
FD5h T0CON TMR0ON T08BIT T0CS T0SE PSA T0PS <2: 0> 1111 1111
FD3h OSCCON IDLEN IRCF <2: 0> OSTS HFIOFS SCS <1: 0> 0011 q000
FD2h OSCCON2 PLLRDY SOSCRUN - MFIOSEL SOSCGO PRISD MFIOFS LFIOFS 00-0 01x0
Lenda: x = desconhecido, u = inalterado, - = não implementado, q = o valor depende apenas dos
Observação 1: dispositivos de condição PIC18 (L) F4XK22.
2: Dispositivos PIC18 (L) F2XK22 apenas.
3: Dispositivos PIC18 (L) F23 / 24K22 e PIC18 (L) F43 / 44K22 apenas.
4: Dispositivos PIC18 (L) F26K22 e PIC18 (L) F46K22 apenas.

DS41412B-page 84 Preliminares - 2010 Microchip Technology Inc.


PIC18 (L) F2X / 4XK22
TABELA 5-2: RESUMO DO ARQUIVO DE REGISTRO PARA DISPOSITIVOS PIC18 (L) F2X / 4XK22

Value sobre
Endereço Nome Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
POR, BOR

FD1h WDTCON - - - - - - - SWDTEN ---- ---0


FD0h RCON IPEN SBOREN - RI PARA PD POR BOR 01-1 1100
FCFh TMR1H Registro Timer1, Registro xxxx xxxx
FCEh TMR1L Timer1 de byte alto, Byte xxxx xxxx
FCDh T1CON TMR1CS <1: 0> baixo T1CKPS <1: 0> T1SOSCEN T1SYNC T1RD16 TMR1ON 0000 0000
FCCh T1GCON TMR1GE T1GPOL T1GTM T1GSPM T1GGO / FEITO T1GVAL T1GSS <1: 0> 0000 xx00

FCBh SSP1CON3 ACKTIM PCIE SCIE BOEN SDAHT SBCDE AHEN DHEN 0000 0000
FCAh SSP1MSK SSP1 MASK Register bits 1111 1111
FC9h SSP1BUF Buffer de recepção / registro de transmissão SSP1 xxxx xxxx
FC8h SSP1ADD Registro de endereço SSP1 em I2Modo C Slave. SSP1 Baud Rate Reload Register in I2Modo C Master 0000 0000
FC7h SSP1STAT SMP CKE D/A P S R/W UA BF 0000 0000
FC6h SSP1CON1 WCOL SSPOV SSPEN CKP SSPM <3: 0> 0000 0000
FC5h SSP1CON2 GCEN ACKSTAT ACKDT ACKEN RCEN CANETA RSEN SEN 0000 0000
FC4h ADRESH Resultado A / D, Resultado xxxx xxxx
FC3h ADRESL A / D de byte alto, CHS de xxxx xxxx
FC2h ADCON0 - byte baixo <4: 0> VÁ / CONCLUÍDO ADON - - 00 0000
FC1h ADCON1 TRIGSEL - - - PVCFG <1: 0> NVCFG <1: 0> 0 --- 0000
FC0h ADCON2 ADFM - ACQT <2: 0> ADCS <2: 0> 0-00 0000
FBFh CCPR1H Captura / Comparar / Registro PWM 1, High Byte xxxx xxxx
FBEh CCPR1L Capture / Compare / Registro PWM 1, Low Byte xxxx xxxx
FBDh CCP1CON P1M <1: 0> DC1B <1: 0> CCP1M <3: 0> 0000 0000
FBCh TMR2 Registro Timer2 0000 0000
FBBh PR2 Registro de Período Timer2 1111 1111
FBAh T2CON - T2OUTPS <3: 0> TMR2ON T2CKPS <1: 0> - 000 0000
FB9h PSTR1CON - - - STR1SYNC STR1D STR1C STR1B STR1A - - - 0 0001
FB8h BAUDCON1 ABDOVF RCIDL DTRXP CKTXP BRG16 - WUE ABDEN 0100 0-00
FB7h PWM1CON P1RSEN P1DC <6: 0> 0000 0000
FB6h ECCP1AS CCP1ASE CCP1AS <2: 0> P1SSAC <1: 0> P1SSBD <1: 0> 0000 0000
FB4h T3GCON TMR3GE T3GPOL T3GTM T3GSPM T3GGO / T3GVAL T3GSS 0000 0x00
FEITO
FB3h TMR3H Registro Timer3, Registro xxxx xxxx
FB2h TMR3L Timer3 alto, Byte baixo xxxx xxxx
FB1h T3CON TMR3CS <1: 0> T3CKPS <1: 0> T3SOSCEN T3SYNC T3RD16 TMR3ON 0000 0000
FB0h SPBRGH1 EUSART1 Baud Rate Generator, High Byte 0000 0000
FAFh SPBRG1 EUSART1 Baud Rate Generator, Low Byte 0000 0000
FAEh RCREG1 EUSART1 Receber Registro 0000 0000
FADh TXREG1 EUSART1 Transmitir Registro 0000 0000
FACh TXSTA1 CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 0000 0010
FABh RCSTA1 SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x
FAAh EEADRH(5) - - - - - - EEADR <9: 8> ---- - - 00
FA9h EEADR EEADR <7: 0> 0000 0000
FA8h EEDATA Registro de dados EEPROM 0000 0000
FA7h EECON2 Registro de controle EEPROM 2 (não é um registro físico) ---- - - 00
FA6h EECON1 EEPGD CFGS - GRATUITO WRERR WREN WR RD xx-0 x000
FA5h IPR3 SSP2IP BCL2IP RC2IP TX2IP CTMUIP TMR5GIP TMR3GIP TMR1GIP 0000 0000
FA4h PIR3 SSP2IF BCL2IF RC2IF TX2IF CTMUIF TMR5GIF TMR3GIF TMR1GIF 0000 0000
FA3h PIE3 SSP2IE BCL2IE RC2IE TX2IE CTMUIE TMR5GIE TMR3GIE TMR1GIE 0000 0000
Lenda: x = desconhecido, u = inalterado, - = não implementado, q = o valor depende apenas dos
Observação 1: dispositivos de condição PIC18 (L) F4XK22.
2: Dispositivos PIC18 (L) F2XK22 apenas.
3: Dispositivos PIC18 (L) F23 / 24K22 e PIC18 (L) F43 / 44K22 apenas.
4: Dispositivos PIC18 (L) F26K22 e PIC18 (L) F46K22 apenas.

- 2010 Microchip Technology Inc. Preliminares DS41412B-page 85


PIC18 (L) F2X / 4XK22
TABELA 5-2: RESUMO DO ARQUIVO DE REGISTRO PARA DISPOSITIVOS PIC18 (L) F2X / 4XK22

Value sobre
Endereço Nome Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
POR, BOR

FA2h IPR2 OSCFIP C1IP C2IP EEIP BCL1IP HLVDIP TMR3IP CCP2IP 1111 1111
FA1h PIR2 OSCFIF C1IF C2IF EEIF BCL1IF HLVDIF TMR3IF CCP2IF 0000 0000
FA0h PIE2 OSCFIE C1IE C2IE EEIE BCL1IE HLVDIE TMR3IE CCP2IE 0000 0000
F9Fh IPR1 - UM MERGULHO RC1IP TX1IP SSP1IP CCP1IP TMR2IP TMR1IP - 111 1111
F9Eh PIR1 - ADIF RC1IF TX1IF SSP1IF CCP1IF TMR2IF TMR1IF - 000 0000
F9Dh PIE1 - ADIE RC1IE TX1IE SSP1IE CCP1IE TMR2IE TMR1IE - 000 0000
F9Ch HLVDCON VDIRMAG BGVST IRVST HLVDEN HLVDL <3: 0> 0000 0000
F9Bh OSCTUNE INTSRC PLLEN TUN <5: 0> 00xx xxxx
F96h TRISE WPUE3 - - - - TRISE2(1) TRISE1(1) TRISE0(1) 1 --- - 111
F95h TRISD(1) TRISD7 TRISD6 TRISD5 TRISD4 TRISD3 TRISD2 TRISD1 TRISD0 1111 1111
F94h TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111
F93h TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111
F92h TRISA TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 1111 1111
F8Dh ATRASADO(1) - - - - - LATE2 LATE1 LATE0 ---- - xxx
F8Ch LATD(1) LATD7 LATD6 LATD5 LATD4 LATD3 LATD2 LATD1 LATD0 xxxx xxxx
F8Bh LATC LATC7 LATC6 LATC5 LATC4 LATC3 LATC2 LATC1 LATC0 xxxx xxxx
F8Ah LATB LATB7 LATB6 LATB5 LATB4 LATB3 LATB2 LATB1 LATB0 xxxx xxxx
F89h LATA LATA7 LATA6 LATA5 LATA4 LATA3 LATA2 LATA1 LATA0 xxxx xxxx
PORTE(2) - - - - RE3 - - - ---- x ---
F84h
PORTE(1) - - - - RE3 RE2 RE1 RE0 ---- x000
F83h PORTD(1) RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 0000 0000
F82h PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 0000 00xx
F81h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxx0 0000
F80h PORTA RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0 xx0x 0000
F7Fh IPR5 - - - - - TMR6IP TMR5IP TMR4IP ---- - 111
F7Eh PIR5 - - - - - TMR6IF TMR5IF TMR4IF ---- - 111
F7Dh PIE5 - - - - - TMR6IE TMR5IE TMR4IE ---- - 000
F7Ch IPR4 - - - - - CCP5IP CCP4IP CCP3IP ---- - 000
F7Bh PIR4 - - - - - CCP5IF CCP4IF CCP3IF ---- - 000
F7Ah PIE4 - - - - - CCP5IE CCP4IE CCP3IE ---- - 000
F79h CM1CON0 C1ON C1OUT C1OE C1POL C1SP C1R C1CH <1: 0> 0000 1000
F78h CM2CON0 C2ON C2OUT C2OE C2POL C2SP C2R C2CH <1: 0> 0000 1000
F77h CM2CON1 MC1OUT MC2OUT C1RSEL C2RSEL C1HYS C2HYS C1SYNC C2SYNC 0000 0000
F76h SPBRGH2 EUSART2 Baud Rate Generator, High Byte 0000 0000
F75h SPBRG2 EUSART2 Baud Rate Generator, Low Byte 0000 0000
F74h RCREG2 EUSART2 Receber Registro 0000 0000
F73h TXREG2 EUSART2 Transmitir Registro 0000 0000
F72h TXSTA2 CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 0000 0010
F71h RCSTA2 SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x
F70h BAUDCON2 ABDOVF RCIDL DTRXP CKTXP BRG16 - WUE ABDEN 01x0 0-00
F6Fh SSP2BUF Buffer de recepção / registro de transmissão SSP2 xxxx xxxx
F6Eh SSP2ADD Registro de endereço SSP2 em I2Modo C Slave. SSP2 Baud Rate Reload Register in I2Modo C Master 0000 0000
F6Dh SSP2STAT SMP CKE D/A P S R/W UA BF 0000 0000
F6Ch SSP2CON1 WCOL SSPOV SSPEN CKP SSPM <3: 0> 0000 0000
F6Bh SSP2CON2 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN 0000 0000
F6Ah SSP2MSK SSP1 MASK Register bits 1111 1111
F69h SSP2CON3 ACKTIM PCIE SCIE BOEN SDAHT SBCDE AHEN DHEN 0000 0000
Lenda: x = desconhecido, u = inalterado, - = não implementado, q = o valor depende apenas dos
Observação 1: dispositivos de condição PIC18 (L) F4XK22.
2: Dispositivos PIC18 (L) F2XK22 apenas.
3: Dispositivos PIC18 (L) F23 / 24K22 e PIC18 (L) F43 / 44K22 apenas.
4: Dispositivos PIC18 (L) F26K22 e PIC18 (L) F46K22 apenas.

DS41412B-page 86 Preliminares - 2010 Microchip Technology Inc.


PIC18 (L) F2X / 4XK22
TABELA 5-2: RESUMO DO ARQUIVO DE REGISTRO PARA DISPOSITIVOS PIC18 (L) F2X / 4XK22

Value sobre
Endereço Nome Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
POR, BOR

F68h CCPR2H Captura / Comparar / Registro PWM 2, High Byte xxxx xxxx
F67h CCPR2L Capture / Compare / Registro PWM 2, Low Byte xxxx xxxx
F66h CCP2CON P2M <1: 0> DC2B <1: 0> CCP2M <3: 0> 0000 0000
F65h PWM2CON P2RSEN P2DC <6: 0> 0000 0000
F64h ECCP2AS CCP2ASE CCP2AS <2: 0> P2SSAC <1: 0> P2SSBD <1: 0> 0000 0000
F63h PSTR2CON - - - STR2SYNC STR2D STR2C STR2B STR2A - - - 0 0001
F62h IOCB IOCB7 IOCB6 IOCB5 IOCB4 - - - - 1111 - - - -
F61h WPUB WPUB7 WPUB6 WPUB5 WPUB4 WPUB3 WPUB2 WPUB1 WPUB0 1111 1111
SLRCON(2) - - - - - SLRC SLRB SLRA ---- - 111
F60h
SLRCON(1) - - - SLRE SLRD SLRC SLRB SLRA - - - 1 1111
F5Fh CCPR3H Capture / Compare / PWM Register 3, High Byte xxxx xxxx
F5Eh CCPR3L Capture / Compare / PWM Register 3, Low Byte xxxx xxxx
F5Dh CCP3CON P3M <1: 0> DC3B <1: 0> CCP3M <3: 0> 0000 0000
F5Ch PWM3CON P3RSEN P3DC <6: 0> 0000 0000
F5Bh ECCP3AS CCP3ASE CCP3AS <2: 0> P3SSAC <1: 0> P3SSBD <1: 0> 0000 0000
F5Ah PSTR3CON - - - STR3SYNC STR3D STR3C STR3B STR3A - - - 0 0001
F59h CCPR4H Captura / Comparar / Registro PWM 4, High Byte xxxx xxxx
F58h CCPR4L Capture / Compare / Registro PWM 4, Low Byte xxxx xxxx
F57h CCP4CON - - DC4B <1: 0> CCP4M <3: 0> - - 00 0000
F56h CCPR5H Captura / Comparar / Registro PWM 5, High Byte xxxx xxxx
F55h CCPR5L Capture / Compare / Registro PWM 5, Low Byte xxxx xxxx
F54h CCP5CON - - DC5B <1: 0> CCP5M <3: 0> - - 00 0000
F53h TMR4 Registro Timer4 0000 0000
F52h PR4 Registro de período do cronômetro 4 1111 1111
F51h T4CON - T4OUTPS <3: 0> TMR4ON T4CKPS <1: 0> - 000 0000
F50h TMR5H Registro do temporizador 5, 0000 0000
F4Fh TMR5L Registro do temporizador 5 do byte 0000 0000
F4Eh T5CON TMR5CS <1: 0> alto, T5CKPS do byte baixo <1: 0> T5SOSCEN T5SYNC T5RD16 TMR5ON 0000 0000
F4Dh T5GCON TMR5GE T5GPOL T5GTM T5GSPM T5GGO / FEITO T5GVAL T5GSS 0000 0x00

F4Ch TMR6 Registro Timer6 0000 0000


F4Bh PR6 Registro de período do cronômetro 6 1111 1111
F4Ah T6CON - T6 SAÍDAS <3: 0> TMR6ON T6CKPS <1: 0> - 000 0000
F49h CCPTMRS0 C3TSEL <1: 0> - C2TSEL <1: 0> - C1TSEL <1: 0> 00-0 0-00
F48h CCPTMRS1 - - - - C5TSEL <1: 0> C4TSEL <1: 0> ---- 0000
F47h SRCON0 SRLEN SRCLK <2: 0> SRQEN SRNQEN SRPS SRPR 0000 0000
F46h SRCON1 SRSPE SRSCKE SRSC2E SRSC1E SRRPE SRRCKE SRRC2E SRRC1E 0000 0000
F45h CTMUCONH CTMUEN - CTMUSIDL TGEN EDGEN EDGSEQEN IDISSEN CTTRIG 0000 0000
F44h CTMUCONL EDG2POL EDG2SEL <1: 0> EDG1POL EDG1SEL <1: 0> EDG2STAT EDG1STAT 0000 0000
F43h CTMUICON ITRIM <5: 0> IRNG <1: 0> 0000 0000
F42h VREFCON0 FVREN FVRST FVRS <1: 0> - - - - 0001 - - - -
F41h VREFCON1 DACEN DACLPS DACOE - DACPSS <1: 0> - DACNSS 000- 00-0
F40h VREFCON2 - - - DACR <4: 0> - - - 0 0000
F3Fh PMD0 UART2MD UART1MD TMR6MD TMR5MD TMR4MD TMR3MD TMR2MD TMR1MD 0000 0000
F3Eh PMD1 MSSP2MD MSSP1MD - CCP5MD CCP4MD CCP3MD CCP2MD CCP1MD 00-0 0000
F3Dh PMD2 - - - - CTMUMD CMP2MD CMP1MD ADCMD ---- 0000
F3Ch ANSELE(1) - - - - - ANSE2 ANSE1 ANSE0 ---- - 111
F3Bh ANSELD(1) ANSD7 ANSD6 ANSD5 ANSD4 ANSD3 ANSD2 ANSD1 ANSD0 1111 1111
Lenda: x = desconhecido, u = inalterado, - = não implementado, q = o valor depende apenas dos
Observação 1: dispositivos de condição PIC18 (L) F4XK22.
2: Dispositivos PIC18 (L) F2XK22 apenas.
3: Dispositivos PIC18 (L) F23 / 24K22 e PIC18 (L) F43 / 44K22 apenas.
4: Dispositivos PIC18 (L) F26K22 e PIC18 (L) F46K22 apenas.

- 2010 Microchip Technology Inc. Preliminares DS41412B-page 87


PIC18 (L) F2X / 4XK22
TABELA 5-2: RESUMO DO ARQUIVO DE REGISTRO PARA DISPOSITIVOS PIC18 (L) F2X / 4XK22

Value sobre
Endereço Nome Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
POR, BOR

F3Ah ANSELC ANSC7 ANSC6 ANSC5 ANSC4 ANSC3 ANSC2 - - 1111 11--
F39h ANSELB - - ANSB5 ANSB4 ANSB3 ANSB2 ANSB1 ANSB0 - - 11 1111
F38h ANSELA - - ANSA5 - ANSA3 ANSA2 ANSA1 ANSA0 - - 1- 1111
Lenda: x = desconhecido, u = inalterado, - = não implementado, q = o valor depende apenas dos
Observação 1: dispositivos de condição PIC18 (L) F4XK22.
2: Dispositivos PIC18 (L) F2XK22 apenas.
3: Dispositivos PIC18 (L) F23 / 24K22 e PIC18 (L) F43 / 44K22 apenas.
4: Dispositivos PIC18 (L) F26K22 e PIC18 (L) F46K22 apenas.

DS41412B-page 88 Preliminares - 2010 Microchip Technology Inc.


PIC18 (L) F2X / 4XK22
5.3.5 REGISTRO DE STATUS Recomenda-se que apenas BCF, BSF, SWAPF, MOVFF
e MOVWF instruções são usadas para alterar o registro
O registro STATUS, mostrado no Registro 5-2, contém o
de STATUS, porque essas instruções não afetam o Z,
status aritmético da ALU. Como com qualquer outro SFR,
C, DC, OV ou N bits no registro STATUS.
pode ser o operando para qualquer instrução.
Para outras instruções que não afetam os bits de status, consulte
Se o registrador STATUS é o destino de uma instrução
os resumos do conjunto de instruções na Tabela 25.2 e na Tabela
que afeta os bits Z, DC, C, OV ou N, os resultados da
25-3.
instrução não são escritos; em vez disso, o registro
STATUS é atualizado de acordo com a instrução Observação: Os bits C e DC operam como os bits de
executada. Portanto, o resultado de uma instrução empréstimo e empréstimo de dígitos,
com o registrador STATUS como destino pode ser respectivamente, na subtração.
diferente do pretendido. Como um exemplo,CLRF
STATUS irá definir o bit Z e deixar os bits de status
restantes inalterados ('000u u1uu ').

REGISTRO 5-2: STATUS: STATUS REGISTER

U-0 U-0 U-0 R / Wx R / Wx R / Wx R / Wx R / Wx


- - - N OV Z DC(1) C(1)
bit 7 bit 0

Lenda:
R = bit legível W = Bit gravável '1' = U = bit não implementado, lido como '0' '0' = bit
- n = Valor no POR Bit está definido apagado x = bit desconhecido

bit 7-5 Não implementado: Lido como '0 '


bit 4 N: Bit negativo
Este bit é usado para aritmética com sinais (complemento de dois). Indica se o resultado foi negativo (ALU
MSB =1).
1 = Resultado foi negativo
0 = O resultado foi positivo
bit 3 OV: Broca de estouro
Este bit é usado para aritmética com sinais (complemento de dois). Indica um estouro de magnitude de 7 bits
que faz com que o bit de sinal (bit 7 do resultado) mude de estado.
1 = O estouro ocorreu para aritmética assinada (nesta operação aritmética)
0 = Nenhum estouro ocorreu
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: Dígito Carry / Borrow bit (ADDWF, ADDLW, SUBLW, SUBWF instruções)(1)
1 = Ocorreu uma transferência do 4º bit de ordem inferior do resultado
0 = Sem transporte do 4º bit de ordem inferior do resultado
bit 0 C: Carregar / emprestar bit (ADDWF, ADDLW, SUBLW, SUBWF instruções)(1)
1 = Ocorreu uma transferência da parte mais significativa do resultado
0 = Nenhuma transferência da parte mais significativa do resultado ocorreu

Nota 1: Para Borrow, a polaridade é invertida. Uma subtração é executada adicionando o complemento de dois do segundo
operando. Para girar (RRF, RLF) instruções, este bit é carregado com o bit de ordem superior ou inferior do
registrador de origem.

- 2010 Microchip Technology Inc. Preliminares DS41412B-page 89


PIC18 (L) F2X / 4XK22
5.4 Modos de endereçamento de dados O bit 'a' do Access RAM determina como o endereço é
interpretado. Quando 'a' é '1 ', o conteúdo do BSR (Seção
Observação: A execução de algumas instruções no conjunto de 5.3.1 "Bank Select Register (BSR)") são usados com o
instruções PIC18 central é alterada quando o endereço para determinar o endereço completo de 12
conjunto de instruções estendidas PIC18 é bits do registro. Quando 'a' é '0 ', o endereço é
habilitado. VerSeção 5.5 "Memória de dados e o interpretado como um registro no Banco de Acesso. O
conjunto de instruções estendidas" Para endereçamento que usa a RAM de acesso também é
maiores informações. conhecido como modo de endereçamento forçado direto.

Embora a memória do programa só possa ser endereçada de Algumas instruções, como MOVFF, incluem todo o
uma maneira - por meio do contador do programa - as endereço de 12 bits (origem ou destino) em seus
informações no espaço da memória de dados podem ser opcodes. Nesses casos, o BSR é totalmente ignorado.
endereçadas de várias maneiras. Para a maioria das instruções, o O destino dos resultados da operação é determinado
modo de endereçamento é fixo. Outras instruções podem usar pelo bit de destino 'd'. Quando 'd' é '1 ', os resultados são
até três modos, dependendo de quais operandos são usados e armazenados de volta no registro de origem,
se o conjunto de instruções estendidas está habilitado ou não. sobrescrevendo seu conteúdo original. Quando 'd' é '0 ',
Os modos de endereçamento são: os resultados são armazenados no registrador W. As
instruções sem o argumento 'd' têm um destino implícito
• Inerente
na instrução; seu destino é o registrador alvo que está
• literal sendo operado ou o registrador W.
• direto
• Indireto 5.4.3 ENDEREÇO INDIRETO
Um modo de endereçamento adicional, Deslocamento Literal O endereçamento indireto permite que o usuário acesse um local
Indexado, está disponível quando o conjunto de instruções estendidas na memória de dados sem fornecer um endereço fixo na
está habilitado (bit de configuração XINST = 1). Sua operação é instrução. Isso é feito usando File Select Registers (FSRs) como
discutida em maiores detalhes em Seção 5.5.1 “Endereçamento ponteiros para os locais que devem ser lidos ou gravados. Uma
indexado com deslocamento literal”. vez que os FSRs estão localizados na RAM como Registros de
Arquivos Especiais, eles também podem ser manipulados
5.4.1 INERENTE E LITERAL diretamente sob o controle do programa. Isso torna os FSRs
ENDEREÇANDO muito úteis na implementação de estruturas de dados, como
tabelas e matrizes na memória de dados.
Muitas instruções de controle PIC18 não precisam de nenhum
argumento; eles executam uma operação que afeta globalmente Os registradores para endereçamento indireto também são
o dispositivo ou operam implicitamente em um registro. Este implementados com Indirect File Operands (INDFs) que
modo de endereçamento é conhecido como endereçamento permitem a manipulação automática do valor do ponteiro
inerente. Exemplos incluemSLEEP, RESET e DAW. com auto-incremento, auto-decremento ou deslocamento
com outro valor. Isso permite um código eficiente, usando
Outras instruções funcionam de maneira semelhante, mas
loops, como o exemplo de limpeza de um banco de RAM
requerem um argumento explícito adicional no opcode. Isso é
inteiro no Exemplo 5-5.
conhecido como modo de endereçamento literal porque eles
exigem algum valor literal como argumento. Exemplos incluem
ADDLW e MOVLW, que, respectivamente, adicionam ou movem
EXEMPLO 5-5: COMO LIMPAR A RAM
um valor literal para o registrador W. Outros exemplos incluem (BANCO 1) USANDO
LIGAR e VAMOS PARA, que incluem um endereço de memória de ENDEREÇO INDIRETO
programa de 20 bits. LFSR FSR0, 100h;
PRÓXIMO CLRF POSTINC0 ; Limpar INDF
5.4.2 ENDEREÇO DIRETO ; registre-se então
; apontador inc
O endereçamento direto especifica todo ou parte do BTFSS FSR0H, 1 ; Tudo feito com
endereço de origem e / ou destino da operação dentro ; Banco1?
do próprio opcode. As opções são especificadas pelos SUTIÃ PRÓXIMO ; NÃO, claro próximo
argumentos que acompanham a instrução. PROSSEGUIR ; SIM, continue
No conjunto de instruções PIC18 principal, as instruções
orientadas a bits e a bytes usam alguma versão de
endereçamento direto por padrão. Todas essas instruções
incluem algum endereço literal de 8 bits como seu byte
menos significativo. Este endereço especifica um endereço
de registro em um dos bancos de dados RAM (Seção 5.3.3
"Arquivo de registro de uso geral") ou um local no Banco
de Acesso (Seção 5.3.2 “Banco de Acesso”) como a fonte de
dados para a instrução.

DS41412B-page 90 Preliminares - 2010 Microchip Technology Inc.

Você também pode gostar