Está en la página 1de 20

CLAVE 1

; Escritura de clave 1753 en la EEPROM


LIST P=16F877A
INCLUDE <P16F877A.INC>
CBLOCK 0X20
DIRECCION ; Variable para la direccin de la
; EEPROM
DATO

; Variable para el dato de la EEPROM

ENDC
ORG 0X2007
DW 0X3F7A
ORG 0X0000
BANKSEL TRISA

; Bank 1

BANKSEL PORTA

; Bank 0

INICIO:

; Inicio de programa

MOVLW 0X00

; Direccin inicial de la EEPROM

MOVWF DIRECCION
MOVLW .1
MOVWF DATO

; 1er digito a grabar (EEPROM)

CALL ESCRITURA
INCF DIRECCION,F ; Direccin 01H de la EEPROM
MOVLW .7

; 2do digito a grabar (EEPROM)

MOVWF DATO
CALL ESCRITURA

INCF DIRECCION,F ; Direccin 02H de la EEPROM


MOVLW .5

; 3er digito a grabar (EEPROM)

MOVWF DATO
CALL ESCRITURA

INCF DIRECCION,F ; Direccin 03H de la EEPROM


MOVLW .3

; 4to digito a grabar (EEPROM)

MOVWF DATO
CALL ESCRITURA

GOTO $

; Fin de programa

ESCRITURA:
MOVFW DIRECCION

; Bank 0

BANKSEL EEDATA

; Bank 2

MOVWF EEADR

; Direccin de EEPROM

BANKSEL PORTA

; Bank 0

MOVFW DATO
BANKSEL EEDATA

; Bank 2

MOVWF EEDATA

; Dato para la EEPROM

BANKSEL EECON1

; Bank 3

BSF EECON1,WREN

; Habilita la escritura

MOVLW 0X55

; Asegurando la escritura

MOVWF EECON2
MOVLW 0XAA
MOVWF EECON2
BSF EECON1,WR
SENSA:

; Escritura

BTFSC EECON1,WR
GOTO SENSA
BCF EECON1,WREN

; Deshabilita la escritura

BANKSEL PORTA

; Bank 0

RETURN
END
---------------------------------------------------

; Lectura de la clave contenida en la EEPROM la que grabamos


anteriormente
LIST P=16F877A
INCLUDE <P16F877A.INC>
CBLOCK 0X20
DIRECCION ; Variable para la direccin de la
; EEPROM
DATO

; Variable para el dato de la EEPROM

T1

; Variables para los tiempos.

T2
T3
ENDC
ORG 0X2007
DW 0X3F7A
ORG 0X0000
BANKSEL TRISA

; Bank 1

CLRF TRISB

; Port B de salida a LEDs

BANKSEL PORTA

; Bank 0

INICIO: CLRF PORTB


MOVLW 0X00

; LEDs Off, Inicio de programa


; Direccin inicial de la EEPROM

MOVWF DIRECCION
CALL LECTURA
MOVFW DATO
MOVWF PORTB

; Primer dato

CALL DELAY
INCF DIRECCION,F ; Direccin 01H de la EEPROM
CALL LECTURA
MOVFW DATO
MOVWF PORTB

; Segundo dato

CALL DELAY
INCF DIRECCION,F ; Direccin 01H de la EEPROM
CALL LECTURA
MOVFW DATO
MOVWF PORTB

; Tercer dato

CALL DELAY
INCF DIRECCION,F ; Direccin 01H de la EEPROM
CALL LECTURA
MOVFW DATO
MOVWF PORTB
CALL DELAY

; Cuarto dato

GOTO $

; Fin de programa

LECTURA:
MOVFW DIRECCION
BANKSEL EEDATA

; Bank 2

MOVWF EEADR

; Direccin de EEPROM

BANKSEL EECON1

; Bank 3

BSF EECON1,RD

; Lectura

BANKSEL EEDATA

; Bank 2

MOVFW EEDATA
BANKSEL PORTA
MOVWF DATO
RETURN
DELAY: MOVLW .10
MOVWF T1
LAZO1:

CALL T100MS
DECFSZ T1,F
GOTO LAZO1
RETURN

T100MS: MOVLW .100


MOVWF T2
LAZO2:

CALL T1MS

; Bank 0

DECFSZ T2,F
GOTO LAZO2
RETURN
T1MS:

MOVLW .250
MOVWF T3

LAZO3:

NOP
DECFSZ T3,F
GOTO LAZO3
RETURN

END

---------------------------------------------------

; Escritura de clave 6261 en la EEPROM


LIST P=16F877A
INCLUDE <P16F877A.INC>
CBLOCK 0X20
DIRECCION ; Variable para la direccin de la
; EEPROM
DATO

; Variable para el dato de la EEPROM

ENDC
ORG 0X2007
DW 0X3F7A
ORG 0X0000
BANKSEL TRISA

; Bank 1

BANKSEL PORTA

; Bank 0

INICIO:

; Inicio de programa
MOVLW 0X00

; Direccin inicial de la EEPROM

MOVWF DIRECCION
ABC:

MOVFW DIRECCION
CALL TABLA

; Dato de la tabla a grabar

MOVWF DATO
CALL ESCRITURA
INCF DIRECCION,F ; Direccin 01H,02H,03H,04H

BTFSS DIRECCION,2
GOTO ABC
GOTO $

; Fin de programa

ESCRITURA:
MOVFW DIRECCION

; Bank 0

BANKSEL EEDATA

; Bank 2

MOVWF EEADR

; Direccin de EEPROM

BANKSEL PORTA

; Bank 0

MOVFW DATO
BANKSEL EEDATA

; Bank 2

MOVWF EEDATA

; Dato para la EEPROM

BANKSEL EECON1

; Bank 3

BSF EECON1,WREN

; Habilita la escritura

MOVLW 0X55

; Asegurando la escritura

MOVWF EECON2
MOVLW 0XAA
MOVWF EECON2
BSF EECON1,WR
SENSA:

; Escritura

BTFSC EECON1,WR
GOTO SENSA
BCF EECON1,WREN

; Deshabilita la escritura

BANKSEL PORTA

; Bank 0

RETURN
TABLA: ADDWF PCL,F
DT .6,.2,.6,.1
END

; Lectura de la clave contenida en la EEPROM


LIST P=16F877A
INCLUDE <P16F877A.INC>
CBLOCK 0X20
DIRECCION ; Variable para la direccin de la
; EEPROM
DATO

; Variable para el dato de la EEPROM

T1

; Variables para los tiempos.

T2
T3
ENDC
ORG 0X2007
DW 0X3F7A
ORG 0X0000
BANKSEL TRISA

; Bank 1

CLRF TRISB

; Port B de salida a LEDs

BANKSEL PORTA

; Bank 0

INICIO: CLRF PORTB


MOVLW 0X00

; LEDs Off, Inicio de programa


; Direccin inicial de la EEPROM

MOVWF DIRECCION
ABC:

CALL LECTURA
MOVFW DATO
MOVWF PORTB

; 1er,2do, datos

CALL DELAY
INCF DIRECCION,F ; Direccin 01H de la EEPROM
BTFSS DIRECCION,2
GOTO ABC
GOTO $

; Fin de programa

LECTURA:
MOVFW DIRECCION
BANKSEL EEDATA

; Bank 2

MOVWF EEADR

; Direccin de EEPROM

BANKSEL EECON1

; Bank 3

BSF EECON1,RD

; Lectura

BANKSEL EEDATA

; Bank 2

MOVFW EEDATA
BANKSEL PORTA

; Bank 0

MOVWF DATO
RETURN
DELAY: MOVLW .10
MOVWF T1
LAZO1:

CALL T100MS
DECFSZ T1,F
GOTO LAZO1
RETURN

T100MS: MOVLW .100


MOVWF T2
LAZO2:

CALL T1MS
DECFSZ T2,F
GOTO LAZO2
RETURN

T1MS:

MOVLW .250
MOVWF T3

LAZO3:

NOP
DECFSZ T3,F
GOTO LAZO3
RETURN
END

-----------------------------------------------------------------------------------------------------------------------------------

; Acceso a un local mediante una clave de


seguridad
LIST P=16F877A
INCLUDE <P16F877A.INC>
CBLOCK 0X20
DIRECCION ; Variable para la direccin de la
; EEPROM
DATO

; Variable para el dato de la EEPROM

T1

; Variables para los tiempos.

T2
T3
DIGITO1

; Digtos de la clave de acceso

DIGITO2
DIGITO3
DIGITO4
ENDC
ORG 0X2007
DW 0X3F7A
ORG 0X0000
BANKSEL TRISA

; Bank 1

MOVLW 0X1F

; Port B entrada para el teclado

MOVWF TRISB

CLRF TRISD

; Port D de salida a LEDs

BANKSEL PORTA

; Bank 0

INICIO: CLRF PORTD

; LEDs Off, Inicio de programa

LEE11:

; Pulso

BTFSS PORTB,4
GOTO LEE11
MOVFW PORTB
ANDLW 0X0F
CALL TABLA
MOVWF DIGITO1

LEE12:

BTFSC PORTB,4

; Libero

GOTO LEE12
LEE21:

BTFSS PORTB,4

; Pulso

GOTO LEE21
MOVFW PORTB
ANDLW 0X0F
CALL TABLA
MOVWF DIGITO2
LEE22:

BTFSC PORTB,4

; Libero

GOTO LEE22
LEE31:

BTFSS PORTB,4
GOTO LEE31
MOVFW PORTB

; Pulso

ANDLW 0X0F
CALL TABLA
MOVWF DIGITO3
LEE32:

BTFSC PORTB,4

; Libero

GOTO LEE32
LEE41:

BTFSS PORTB,4

; Pulso

GOTO LEE41
MOVFW PORTB
ANDLW 0X0F
CALL TABLA
MOVWF DIGITO4
LEE42:

BTFSC PORTB,4

; Libero

GOTO LEE42

COMPARACION:
DGTO1:

MOVLW 0X00

; Direccin inicial de la EEPROM

MOVWF DIRECCION
CALL LECTURA
MOVFW DATO
XORWF DIGITO1
BTFSS STATUS,Z
GOTO ERROR

DGTO2:

INCF DIRECCION,F ; Direccin 01H de la EEPROM


CALL LECTURA
MOVFW DATO
XORWF DIGITO2
BTFSS STATUS,Z
GOTO ERROR

DGTO3:

INCF DIRECCION,F ; Direccin 01H de la EEPROM


CALL LECTURA
MOVFW DATO
XORWF DIGITO3
BTFSS STATUS,Z
GOTO ERROR

DGTO4:

INCF DIRECCION,F ; Direccin 01H de la EEPROM


CALL LECTURA
MOVFW DATO
XORWF DIGITO4
BTFSS STATUS,Z
GOTO ERROR

BIEN:

BSF PORTD,3

; Led verde ON

GOTO FIN
ERROR:

BSF PORTD,2

; Led rojo ON

FIN:

GOTO $

; Fin de programa

LECTURA: MOVFW DIRECCION


BANKSEL EEDATA

; Bank 2

MOVWF EEADR

; Direccin de EEPROM

BANKSEL EECON1

; Bank 3

BSF EECON1,RD

; Lectura

BANKSEL EEDATA

; Bank 2

MOVFW EEDATA
BANKSEL PORTA
MOVWF DATO
RETURN
DELAY: MOVLW .10
MOVWF T1
LAZO1:

CALL T100MS
DECFSZ T1,F
GOTO LAZO1
RETURN

T100MS: MOVLW .100


MOVWF T2
LAZO2:

CALL T1MS
DECFSZ T2,F

; Bank 0

GOTO LAZO2
RETURN
T1MS:

MOVLW .250
MOVWF T3

LAZO3:

NOP
DECFSZ T3,F
GOTO LAZO3
RETURN

TABLA:

ADDWF PCL,F
DT .1,.2,.3,.0,.4,.5,.6,.0,.7,.8,.9,.0,.0,.0,.0,.0
END

; Modulo conversor a 10 bits


LIST P=16F877A
INCLUDE <P16F877A.INC>
CBLOCK

0X20

ENDC
ORG 0X2007
DW 0X3F7A
ORG 0X0000
BANKSEL TRISA
CLRF TRISB

; Bank 1
; Port B de salida a leds

CLRF TRISC
MOVLW

0x8E

; Port C de salida a leds


; Programacion del

Conversor A/D
MOVWF ADCON1
BANKSEL PORTA
MOVLW

0x01

; Bank 0
; Programacion del

Conversor A/D
MOVWF ADCON0

CLRF

PORTB

; LEDs off

CLRF

PORTC

; LEDs off

INICIO:

BSF ADCON0,2

SENSA:

BTFSC ADCON0,2
GOTO SENSA
MOVFW ADRESH
MOVWF PORTB
BANKSEL TRISA

; Bank 1

MOVFW ADRESL
BANKSEL PORTA
MOVWF PORTC
GOTO INICIO

END

; Bank 0

También podría gustarte