Página 1 de 1
inicializar memoria ram do pic

Enviado:
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

Enviado:
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;

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

Enviado:
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

Enviado:
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

Enviado:
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.

Enviado:
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