TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: isfan en 21 de Noviembre de 2011, 10:12:19
-
Hola me ocurre un problema a la hora de direccionar la grabación de la EEPROM interna del 16f876. y especificar a la Dirección donde se grabara..
Quiero coger los datos que hay dentro del registro 0x23(dirmem1) en este caso el valor cargado es 0x06, y lo que me esta cogiendo al ejecutar esta instruciónes es el valor de la dirección del registro dirmem1 y no del contenido osea se me carga el valor 0x23 y lo que deseo es el contenido de dicha dirección no la dirección en si
movlw dirmem1 ;dirección de EEPROM
movwf EEADR ;ponerla en EEADR
EEADR se carga con el valor 0x23 es dcir con la direccíon de la variable que declare como dirmem1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
grabaEEPROM
movwf eepromdata ;aquí va el dato a escribir en EEPROM
bsf STATUS,RP1 ;cambiar a Banco 2
bsf STATUS,RP0
bsf EECON1,WREN ;habilitar grabación de EEPROM
bcf STATUS,RP0
movwf EEDATA ;poner dato en en EEDATA
movlw dirmem1 ;dirección de EEPROM
movwf EEADR ;ponerla en EEADR
bsf STATUS,RP0
movlw 0X55
movwf EECON2 ;comando
movlw 0XAA
movwf EECON2 ;comando
bsf EECON1,WR ;agregar el dato en la EEPROM
btfsc EECON1,WR ;esperar a que termine (10 ms)
goto $-1
bcf STATUS,RP1 ;cambiar a Banco 0
bcf STATUS,RP0
return
Donde tengo el fallo?
un saludo
-
Hola, tienes que hacer movf dirmem1,w
movwf EEADR
con eso si pasas el contenido de dirmem1 al registro EEADR
Saludos!
-
Ya lo tengo solucionado tambien habia probado esa instrucción pero algo me fallaba, ahora detecte el problema:
El problema estaba que no sabia que los Registros GPRs de la RAM del Micro tambien se modificaba con el cambio de los bancos.
las operaciones esas la estaba realizando dentro banco 2 y me redirecionaba automaticamnte a la Posición 0x1A3 cuando hacia la llamada al registro dirmen1(0x23).
Me pueden confirmar que esto es cierto? que hay que tener en cuenta en que registro estas antes de llamar a un registro GPR?
Un saludo