Grabar clave en la EEPROM de un 16f883

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.

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
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.
 
Atrás
Arriba