Promblema grabar en EEPROM PIC18F258

Hola a todos

Estoy intentando grabar en la EEPROM de mi PIC18F258 un programita que simplemente enciende y apaga un LED en intervalos de tiempo. Me surgen 2 dudas: teoria y practica:

Teoria: cómo se hace para que el micro lea de forma autonoma el codigo grabado en el pic. Yo con el debbuger de MPLAB ICD2 ejecuto el programa pero no sé cómo se hace para arrancar el codigo grabado.

Practica: Al ejecutar el codigo, se me queda en un bucle cuando llego al loop de encendido/apagado del LED (se me ejecuta y es lo que no quiero porque son isntrucciones que quiero que grabe).

El codigo que llevo hecho lo pongo a continuacion

De verdad, muchisimas gracias si podeis ayudarme:





LIST p=18F258

#include "P18f258.INC"


------->COMIENZA ESCRITURA EN EEPROM

MOVLW 0X000000 ;
MOVWF EEDATA ; Data Memory Value to write
BCF EECON1, EEPGD ; Point to DATA memory
BCF EECON1, CFGS ; Access program FLASH or Data EEPROM memory
BSF EECON1, WREN ; Enable writes
BCF INTCON, GIE ; Disable interrupts
MOVLW 55h ;
MOVWF EECON2 ; Write 55h
MOVLW 0AAh ;
MOVWF EECON2 ; Write AAh
BSF EECON1, WR ; Set WR bit to begin write
BSF INTCON, GIE ; Enable interrupts


;*************************************************************************
;COMIENZA EL PROGRAMA QUE QUIERO ESCRIBIR EN EEPROM
;*************************************************************************

activo equ 0x10
contador equ 0x11



STATUS_TEMP equ 0x1D
BSR_TEMP equ 0x1E
WREG_TEMP equ 0x1F


org 0x000050
bra COMIENZO

org 0x000058
bra INTERR


COMIENZO

movlw 0x7F
movwf contador

movlw B'10000111'
movwf T0CON


movlw 0xf0
movwf TMR0H
movlw 0xbd
movwf TMR0L


bcf INTCON, TMR0IF
bsf INTCON, TMR0IE

bsf RCON, IPEN
bsf INTCON, GIEH

inc
bsf TRISC, 0
bsf TRISC, 1
bcf TRISB, 5

loop
btfsc activo, 0
goto loop
btfss PORTC,0
goto incrementa
btfss PORTC,1
goto decrementa

goto loop

incrementa
movlw 10
addwf contador
setf activo
goto loop

decrementa
movlw 10
subwf contador
setf activo
goto loop


INTERR
movff STATUS, STATUS_TEMP
movff BSR, BSR_TEMP
movwf WREG_TEMP

bcf INTCON, TMR0IF

movf contador, W
movwf TMR0H
movlw 0xbd
movwf TMR0L
btg PORTB, 5
clrf activo

movf WREG_TEMP, W
movff BSR_TEMP, BSR
movff STATUS_TEMP, STATUS

retfie

END

;*************************************
;FINALIZA EL PROGRAMA QUE QUIERO ESCRIBIR EN EEPROM
;*************************************

BCF EECON1, WREN ; Disable writes on write complete (EEIF set)

;------>FINALIZA ESCRITURA EN EEPROM

------->COMIENZA LECTURA DE EEPROM

MOVLW 0X000000 ;
MOVWF EEADR ;Data Memory Address
;to read
BCF EECON1, EEPGD ;Point to DATA memory
BCS EECON1, CFGS ;
BSF EECON1, RD ;EEPROM Read
MOVF EEDATA, W ;W = EEDATA




END
 
Atrás
Arriba