Saludos, haciendo un programa de Almacenamiento de clave en un Pic 16f883, me encuentro con un problema en el momento de escribir el dato en la EEPROM del Pic, cuento con un teclado hexadecimal y un Display LCD 2x16, cuando en el programa le pongo por defecto una calve que sean los 4 dígitos iguales (por ejemplo 0000) el progrma solo me cambiara la clave si la nueva tambien son iguales (por ejemplo 1111) y si la cambio por uno aleatorio (ejemplo 1234) se pierde la clave y ya ninguna me la acepta.
aquí configuro la clave por defecto 0000
Si modifico la configuración de la a una contraseña con caracteres distintos ya no acepta ninguna clave. Si alguien sabe que rutina puedo añadir, modificar o añadir se lo agradeceré bastante ya que llevo poco tiempo con este cuento y estoy muy interesado en aprender.
Código:
clrf MEMO ;
movlw b'01110111' ;1
movwf CLAVE1
call escribir
incf MEMO,F
movlw b'10110111' ;2
movwf CLAVE1
call escribir
incf MEMO,F
movlw b'11010111' ;3
movwf CLAVE1
call escribir
incf MEMO,F
movlw b'01111011' ;4
movwf CLAVE1
call escribir
aquí configuro la clave por defecto 0000
Código:
escribir bcf ESTADO,RP1
bcf ESTADO,RP0 ;BANCO0
movf MEMO,W ;Posicion de memoria
bsf ESTADO,RP1 ;BANCO2
movwf EEADR ;
bcf ESTADO,RP1 ;BANCO0
movf CLAVE1,W ;Dato a escribir
bsf ESTADO,RP1 ;BANCO2
movwf EEDATA ;
bsf ESTADO,RP0 ;BANCO3
bcf EECON1,EEPGD ;Escritura en la EEPROM
bsf EECON1,WREN ;Habilitar Escritura
bcf INTCON,GIE ;Deshabilitar Interrupciones
btfsc INTCON, GIE ;SEE AN576
goto $-2
movlw 0x55 ;Rutina recomendada
movwf EECON2 ;
movlw 0xAA ;
movwf EECON2 ;Write AAh
bsf EECON1,WR ;Comienza la escritura
bsf INTCON,GIE ;Habilitar Interrupcion
sleep
bsf ESTADO,RP0 ;
bsf ESTADO,RP1 ;BANCO3
bcf INTCON,GIE ;=0
bcf EECON1,WR ;=0
bcf EECON1,WREN ;=0
bcf ESTADO,RP0
bcf ESTADO,RP1
return