Seleção de bancos de memória (migrado)

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Seleção de bancos de memória (migrado)

Mensagempor Fábio Pereira » 16 Out 2006 14:18

A série 16 é capaz de endereçar até 512 bytes de memória RAM (interna).

No entanto, devido às limitações arquiteturais (como largura de barramento da memória de programa), somente é possível endereçar diretamente 128 bytes de memória RAM.

Para ter acesso ao restante da memória, utilizam-se bancos de memória, que são selecionados a partir dos bits RP0 e RP1 no registrador STATUS. A organização destes bits é feita da seguinte forma:

RP0 RP1 Banco Endereço
..0.....0........0.......0x000 a 0x07F
..0.....1........1.......0x080 a 0x0FF
..1.....0........2.......0x100 a 0x17F
..1.....1........3.......0x180 a 0x1FF

Por padrão, estes bits são inicializados em 0, o que faz com que o PIC inicie no banco de memória 0.

Sempre que for necessário acessar diretamente um endereço de memória pertence a outro banco, será necessário alterar os bits RP0 e RP1.

Existem duas formas básicas de se fazer isso em assembly:

1 - Utilizando as instruções BCF e BSF para apagar/setar cada um dos bits. Exemplo:

BSF STATUS,RP0
BSF STATUS,RP1

; seleciona o banco 3

2 - Utilizando o macro comando BANKSEL, que instruirá o montador a modificar os bits RPx de acordo com o endereço da variável:

BANKSEL TESTE

; seleciona o banco de memória da variável TESTE

É isso,
Fábio Pereira
embeddedsystems.io
Avatar do usuário
Fábio Pereira
Word
 
Mensagens: 674
Registrado em: 16 Out 2006 09:07
Localização: Kitchener, ON

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x