Hola a tod@s!
Os cuento mi caso:
Yo quería escribir datos en la memoria EEPROM del PIC16F88, busqué en el datasheet del pic en cuestión y este ya trae un ejemplo de como escribir datos en la eeprom. El problema viene ahora, porque al querer simular el programa con el MPLAB no me escribe el dato correcto en la eeprom...
Simulé paso a paso y el fallo está cuando se ejecuta la intruccion --> "MOVF DIRECCION, W" al ejecutar esta instrucción en vez de pasar a W el valor de DIRECCION pasa un 0. Porqué? Aquí está mi problema, alguién tiene alguna idea?
Ayuda por favor!
El codigo del programa es este:
Os cuento mi caso:
Yo quería escribir datos en la memoria EEPROM del PIC16F88, busqué en el datasheet del pic en cuestión y este ya trae un ejemplo de como escribir datos en la eeprom. El problema viene ahora, porque al querer simular el programa con el MPLAB no me escribe el dato correcto en la eeprom...
Simulé paso a paso y el fallo está cuando se ejecuta la intruccion --> "MOVF DIRECCION, W" al ejecutar esta instrucción en vez de pasar a W el valor de DIRECCION pasa un 0. Porqué? Aquí está mi problema, alguién tiene alguna idea?
Ayuda por favor!
El codigo del programa es este:
Código:
LIST P=16F88
RADIX HEX
INCLUDE <P16F88.INC>
VALOR EQU 0x30
DIRECCION EQU 0x31
ORG 0x00
INICIO
MOVLW d'3'
MOVWF VALOR
MOVLW 0x11
MOVWF DIRECCION
ESCRIBIR
BANKSEL EECON1 ; Select Bank of EECON1
BTFSC EECON1, WR ; Wait for write
GOTO $-1 ; to complete
BANKSEL EEADR ; Select Bank of
; EEADR
MOVF DIRECCION, W ; AQUI ME PONE UN CERO EN W ! PORQUE?
MOVWF EEADR ; Data Memory
; Address to write
MOVF VALOR, W ; Poner Valor!
MOVWF EEDATA ; Data Memory Value
; to write
BANKSEL EECON1 ; Select Bank of
; EECON1
BCF EECON1, EEPGD ; Point to DATA
; memory
BSF EECON1, WREN ; Enable writes
BCF INTCON, GIE ; Disable INTs.
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 INTs.
BCF EECON1, WREN ; Disable writes
END