Página 1 de 1

inicializar memoria ram do pic

MensagemEnviado: 06 Abr 2010 07:21
por cristian
acho q o pic nao inicializa as variaveis em zero tivo problema com isso tb
como faço ja pra incializar as variaveis todas com zero menos as constantes

e como declarar variaveis no mikroc para ficarem sempre na mesma posiçao de memoria

pois toda vez q insisro uma variavel ela modifica os valores das outras ???

pra simular no proteus toda hora tenho q mudar os endereços da memoria

MensagemEnviado: 06 Abr 2010 08:12
por dreher
pra inicializar em 0 com certeza, podes fazer assim:

char minha_variavel = 0;

ai vai sempre inicializar com o valor que colocaste ali.

Ja para ficar sempre no mesmo endereço, utilize o absolute

char minha_variavel = 0 absolute 0x0099;

MensagemEnviado: 06 Abr 2010 14:55
por cristian
mas ai a variavel nao se torna constante ??? ou nao por ser 0

MensagemEnviado: 06 Abr 2010 15:33
por dreher
só vai ser constante se tu usar o const antes dela. senão esse valor ali vai ser o valor inicial dela

MensagemEnviado: 08 Abr 2010 00:39
por BolhaDigital
bom se eu entendi vc quer limpar a ram do pic, certo?

vai aí uma rotina que limpa toda a memória ram do pic, coloque ela na inicialização e se desejar inserir dados utilizando o mesmo processo é só alterar um pouquinho essa rotina, eu utilizo ela para zerar a ram na inicialização e também para (com pequenas alterações) para introduzir valores as variaveis...

essa rotina serve tanto para pic16 quanto para pic18....
bastando vc alterar os vetores do ponteiro,



;---------------
; *** INICIA BLOCO CLEAR RAM ***
;---------------
;Essa rotina limpa todas as posições de RAM (Pic16F877A)
;
clear_bank0:
bcf status, irp
movlw 0x7f
movwf fsr
loop_bank0:
clrf indf
decf fsr, f
movlw 0x1f
subwf fsr, w
btfss status, z
goto loop_bank0
bcf status, irp
;-----------
clear_bank1:
bcf status, irp
movlw 0xff
movwf fsr
loop_bank1:
clrf indf
decf fsr, f
movlw 0x9f
subwf fsr, w
btfss status, z
goto loop_bank1
bcf status, irp
;-----------
clear_bank2:
bsf status, irp
movlw 0x7f
movwf fsr
loop_bank2:
clrf indf
decf fsr, f
movlw 0x0f
subwf fsr, w
btfss status, z
goto loop_bank2
bcf status, irp
;-----------
clear_bank3:
bsf status, irp
movlw 0xff
movwf fsr
loop_bank3:
clrf indf
decf fsr, f
movlw 0x8f

MensagemEnviado: 08 Abr 2010 08:43
por vtrx
Bolha,o Crsitian escreveu o tópico errado,não é inicializar a ram com zero,mas sim inicializar VARIÀVEIS com zero.

MensagemEnviado: 08 Abr 2010 12:55
por cristian
isso eu quero limpar a ram
para garantir q as variaveis q so foram declaradas comecem em zero

e as q atribuir valor sejam inicializadas com seus valores

no ccs tem #zero_ram