Escolar Documentos
Profissional Documentos
Cultura Documentos
com
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.
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.
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)
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.
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
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
VDD
MCLR
POR INTERNO
TPWRT
PWRT TIME-OUT
TOST
PLL TIME-OUT
REINICIALIZAÇÃO INTERNA
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 '.
PC <20: 0>
CALL, RCALL, RETURN 21
RETFIE, RETLW
Pilha de nível 1
-
-
-
Stack Level 31
FFFFh
10000h
Leitura '0 ' Leitura '0 ' Leitura '0 '
PIC18 (L) F26K22
PIC18 (L) F46K22
11111
11110
Registros do topo da pilha 11101 Ponteiro de pilha
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.
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
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.
• Leituras de tabelas
UM VALOR DE COMPENSAÇÃO
MOVF OFFSET, W
LIGAR TABELA
ORG nn00h
TABELA ADDWF PCL
RETLW nnh
RETLW nnh
RETLW nnh
.
.
.
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)
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.
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.
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.
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
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
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
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.
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
Value sobre
Endereço Nome Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
POR, BOR
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.
Value sobre
Endereço Nome Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
POR, BOR
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.
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.
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
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.
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
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.
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.