probelemas com paginação PIC16f883

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

probelemas com paginação PIC16f883

Mensagempor fabio_souza » 09 Out 2009 10:25

alguem sabe como mudar a paginação da memória de programa?

Estou com o seguinte problema:

Estou desenvolvendo um código em assembly, no entanto a pagian 0 da memória de progrma já encheu. Quando chamo uma rotina que está na pagina 1 o controlador se perde, ou seja, ele está buscando um endereço na pagina zero. Como faço para mudar de pagina consequentemente ir para o endereço correto na memória.
fabio_souza
Bit
 
Mensagens: 13
Registrado em: 30 Set 2008 16:36

Mensagempor Sergio38br » 09 Out 2009 10:51

Vc esta usando um call ou Lcall??

[ ]'s
Sergio
Avatar do usuário
Sergio38br
Word
 
Mensagens: 759
Registrado em: 22 Nov 2007 13:39
Localização: São Paulo - SP

Mensagempor fabio_souza » 09 Out 2009 11:44

Uso o comando call, o pic não possui lcall.
fabio_souza
Bit
 
Mensagens: 13
Registrado em: 30 Set 2008 16:36

Mensagempor diogo_18sp » 09 Out 2009 12:35

enta caro amigo ja passei por este problema , vou passar uma explicaçao espere que ajude.
Quando é necessário acessar uma parte do programa que está em outra página, antes de escrever os comandos “CALL” ou “GOTO”, você precisa dizer em que página essa parte do programa está. Essa indicação é feita pelo registrador “PCLATH”. O mesmo acontece quando você quer retornar à página em que foi chamado pelo “CALL”. Primeiro indica a página, e em seguida escreve “RETURN”.


Para acessar a página 0 --> CLRF PCLATH
Para acessar a página 1 --> BSF PCLATH,3
Para acessar a página 2 --> BSF PCLATH,4
Para acessar a página 3 --> BSF PCLATH,3 / BSF PCLATH,4




Segue um exemplo:



ORG 0x0000

INICIO
.
.
.
BSF PCLATH,3
GOTO APAGA
.
.
.
ORG 0x0800
APAGA
BCF PORTC,0
CLRF PCLATH
RETURN


END
diogo_18sp
Byte
 
Mensagens: 117
Registrado em: 14 Jan 2008 18:12
Localização: Amparo ,SP

Mensagempor vtrx » 09 Out 2009 13:11

use 'DEFINES' QUE FICA FACIL;

...
#DEFINE PAG0 CLRF PCLATH
#DEFINE PAG1 BSF PCLATH,3
#DEFINE PAG2 BSF PCLATH,4
...
E assim por diante.

INICIO

...
PAG0
FAÇA ALGO

PAG1
FAÇA ALGO LÁ..

PAG0
VOLTA DENOVO

....
Avatar do usuário
vtrx
Dword
 
Mensagens: 2240
Registrado em: 20 Abr 2008 21:01

Mensagempor ze » 09 Out 2009 13:14

por ser novidade talvez não tenha ouvido falar ainda. Mas foi desenvolvida agora há pouco - nos anos 1970 - uma tal de linguagem C. Talvez lhe possa evitar tais infortúnios.
abç
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor fabio_souza » 09 Out 2009 13:34

lellis escreveu:por ser novidade talvez não tenha ouvido falar ainda. Mas foi desenvolvida agora há pouco - nos anos 1970 - uma tal de linguagem C. Talvez lhe possa evitar tais infortúnios.
abç


DO QUE ADIANTA USAR A LINGUAGEM C E NÃO SABER O QUE O COMPILADOR FAZ PRA VC?

E BEM PRATICO É RAPIDO E FACIL PROGRAMAR EM C PORÉM HÁ MOMENTOS QUE NÃO É POSSÍVEL....

OBRIGADO PELA DICA!!!!!!
fabio_souza
Bit
 
Mensagens: 13
Registrado em: 30 Set 2008 16:36

Mensagempor fabio_souza » 09 Out 2009 13:36

VALEU vtrx PELA AJUDA

FÁBIO
fabio_souza
Bit
 
Mensagens: 13
Registrado em: 30 Set 2008 16:36

Mensagempor fabio_souza » 09 Out 2009 13:37

diogo_18sp escreveu:enta caro amigo ja passei por este problema , vou passar uma explicaçao espere que ajude.
Quando é necessário acessar uma parte do programa que está em outra página, antes de escrever os comandos “CALL” ou “GOTO”, você precisa dizer em que página essa parte do programa está. Essa indicação é feita pelo registrador “PCLATH”. O mesmo acontece quando você quer retornar à página em que foi chamado pelo “CALL”. Primeiro indica a página, e em seguida escreve “RETURN”.


Para acessar a página 0 --> CLRF PCLATH
Para acessar a página 1 --> BSF PCLATH,3
Para acessar a página 2 --> BSF PCLATH,4
Para acessar a página 3 --> BSF PCLATH,3 / BSF PCLATH,4




Segue um exemplo:



ORG 0x0000

INICIO
.
.
.
BSF PCLATH,3
GOTO APAGA
.
.
.
ORG 0x0800
APAGA
BCF PORTC,0
CLRF PCLATH
RETURN


END



VALEU JÁ ESTÁ RODANDO PERFEITAMENTE!!!!!
fabio_souza
Bit
 
Mensagens: 13
Registrado em: 30 Set 2008 16:36

Mensagempor vtrx » 09 Out 2009 14:20

Será que é por isso que vc acha qua não é possível usar mais de um dispositivo na linha I2C?
O Homem ja foi na lua e voltou....
Alias,mostre para mim como seria em linguagem C para ver a sua dificuldade.
Fabio,não se irrite com os comentarios,não seja mais um cara..seja 'o'cara e não use um Dual Core para piscar leds ou escrever em LCD.
tem gente aqui no forum que esta agarrado em tópicos pois não consegue implementar rotinas eficazes em C,quando leio esses tópicos fico imaginando..'po é tão facil resolver isso!..em ASM ,é claro...
Pelo menos poderia ser um código em C com rotinas em ASM,aí sim bateria palmas.
Se precisar algo em ASM manda Email.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2240
Registrado em: 20 Abr 2008 21:01

Mensagempor proex » 09 Out 2009 15:33

fabio_souza escreveu:Uso o comando call, o pic não possui lcall.


Lcall é uma diretiva do compilador. O Mplab reconhece essa instrução e ajusta o ponteiro de programa para a referida pagina automaticamente.

Além disso, vc pode usar a diretiva Pagesel que fará a mesma coisa automaticamente.

.
proex
Dword
 
Mensagens: 2101
Registrado em: 11 Out 2006 14:05
Localização: São Paulo

Mensagempor Andre_Cruz » 09 Out 2009 15:48

Aprendi em assembler e depois C (Hitech), que permite escrever em assembler, mesclar as duas linguagens resolta em programas rapidos, consomem pouco espaço e de menor complexibilidade.

Fabio usa a diretriz do compilador PAGESEL que o proex disse e seje feliz.

Abraço
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor diogo_18sp » 09 Out 2009 18:11

a linguagem c pode ser bem mais facil do que o asm , mas digo eu programo em basic , c e asm ainda tenho preferencia em asm pois acho que consigo visualizar melhor o meu circuito por isso nao menosprezo o asm...
diogo_18sp
Byte
 
Mensagens: 117
Registrado em: 14 Jan 2008 18:12
Localização: Amparo ,SP

Mensagempor fabim » 09 Out 2009 18:18

adoro ver esses barracos..
Proximo!!
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor vtrx » 09 Out 2009 18:24

Pra vc ver fabim,bombardearam do nada o tópico,mas a verdade sempre prevalece..auauauauaauua
Avatar do usuário
vtrx
Dword
 
Mensagens: 2240
Registrado em: 20 Abr 2008 21:01

Próximo

Voltar para PIC

Quem está online

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

x