Documente Academic
Documente Profesional
Documente Cultură
;****************************************************************************
; PROYECTO: CERRADURA ELECTRICA CON CONTRASEÑA DE 4 DIGITOS USANDO SOLAMENTE 1
SOLO BOTÓN (SERIAL)
;****************************************************************************
;-----------------------------“fechadura1sw.asm”-----------------------------
;
; INICIO: 09/01/12 TERM.:
; AUTOR: C. LÁRIOS
; PROCESSADOR: PIC12F629
; OBJETIVO: ACCIONAR SOLENOIDE DE PUERTO O COMANDO DE ABRIR/CERRAR PORTÓN
AUTOMATICO
;****************************************************************************
;
#INCLUDE <P12F629.INC> ; ARCHIVO ESTÁNDAR
__CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _MCLRE_OFF &
_INTRC_OSC_NOCLKOUT ;( ATENCIÓN DESACTIVADO. ¡HECHO DURANTE LA CONFIGURACION!!!)
ERRORLEVEL -302
; PAGINACION DE MEMORIA;
#DEFINE BANK0 BCF STATUS,RP0 ;CONFIGURA BANK0 DE MEMORIA
#DEFINE BANK1 BSF STATUS,RP0 ;CONFIGURA BANK1
; VARIABLES
CBLOCK 0X20 ;DIRECCION INICIAL DE MEMORIA
N0,N1,N2,N3,AUX,DEL4,
DEL5,AUX1,TEMP,CONT,SAIDA,NUM,PONT,XW0,XW1,XW2,XW3,W0,W1,W2,W3,C0,C1,C2,FLAG,B0,
B1,B2,PASSO
ENDC
;...........................................................................
; VECTOR DE INTERRUPCION
ORG 0X04
RETFIE
;...........................................................................
TABELA
ADDWF PCL,F
; ABCPEFGD
RETLW B'11101101' ;0
RETLW B'01100000' ;1
RETLW B'11001011' ;2
RETLW B'11100011' ;3
RETLW B'01100110' ;4
RETLW B'10100111' ;5
RETLW B'10101111' ;6
RETLW B'11100000' ;7
RETLW B'11101111' ;8
RETLW B'11100111' ;9
RETLW B'11001110' ;LETRA 'P' =.10
RETLW B'10001111' ;LETRA 'E' =.11
RETLW B'10001101' ;LETRA 'C' =.12
RETLW B'11101100' ;LETRA 'N' =.13
RETLW B'00101011' ;LETRA 'O' =.14
RETLW B'10001110' ;LETRA 'F' =.15
RETLW B'00010000' ;LETRA '.' =.16
RETLW B'00001101' ;LETRA 'L' =.17
RETLW B'11101110' ;LETRA 'A' =.18
RECEBE_SENHA
CLRF PONT
CLRF PCLATH
MOVFW PASSO
ADDWF PCL,F
GOTO TESTA_SENHA ;0- NORMAL - COMPARA CONTRASEÑA RECEBIDA
CON EEPROM
GOTO TESTA_SENHA ;1- MODO CAMBIO DE CONTRASEÑA - COMPARA
CONTRASEÑA RECIBIDA CON EEPROM Y SIGUE LOS PASOS
GOTO RECEBE_NOVA_SEÑA ;2- RECIBE NUEVA CONTRASEÑA
GOTO CONFIRMA_NOVA_SEÑA ;3- RECIBE NUEVAMENTE LA MESMA NUEVA
CONTRASEÑA PARA CONFIRMACION
RECEBE_NOVA_SENHA
MOVFW N0 ;SALVA CONTRASEÑA A CONFIRMAR
MOVWF XW0
MOVFW N1
MOVWF XW1
MOVFW N2
MOVWF XW2
MOVFW N3
MOVWF XW3
MOVLW 0X04
CALL DELAYSEG
MOVLW LETRA_C
CALL MOSTRALETRA
MOVLW .3
MOVWF PASSO
GOTO MAIN
TESTA_SENHA
CALL LEEEP
CONFIRMA_NOVA_SENHA
MOVFW XW0
XORWF N0
BTFSS STATUS,Z
GOTO FALHA1
MOVFW XW1
XORWF N1
BTFSS STATUS,Z
GOTO FALHA1
MOVFW XW2
XORWF N2
BTFSS STATUS,Z
GOTO FALHA1
MOVFW XW3
XORWF N3
BTFSS STATUS,Z
GOTO FALHA1
MOVLW .1
XORWF PASSO,W
BTFSC STATUS,Z
GOTO PASSO1 ;MODO 1 - INICIA ALTERACION DE CONTRASEÑA
MOVLW .3
XORWF PASSO,W
BTFSC STATUS,Z
GOTO GRAVAR ;MODO 3 - GRABAR NUEVA CONTRASEÑA EN LA EEPROM
MOVLW 0X02
CALL DELAYSEG
MOVLW LETRA_L
CALL MOSTRALETRA
CLRF GPIO
BSF GPIO,1 ;CONECTA PUNTO (SALIDA A LA CERRADURA)
MOVLW TEMPO_FECHADURA_LIGADO
CALL DELAYSEG
VFIM
CLRF N0
CLRF N1
CLRF N2
CLRF N3
CLRF PONT
CLRF GPIO
CLRF PASSO
BCF FLAGTAP
GOTO MAIN
PASSO1
MOVLW 0X02
CALL DELAYSEG
MOVLW LETRA_N
CALL MOSTRALETRA
MOVLW .2
MOVWF PASSO
GOTO MAIN
GRAVAR
CALL VAIEEPROM
MOVLW 0X03
MOVWF AUX
MOVLW 0X04
CALL DELAYSEG
MOVLW LETRA_A
CALL MOSTRALETRA
DECFSZ AUX,F
GOTO $-5
GOTO VFIM
;
;
INICIO
BANK1 ;BANCO 1
MOVLW .0
MOVWF INTCON ;DESCONECTA TODAS LAS INTERRUPCIONES
MOVLW B'000000' ;SALIDA EN GP0
MOVWF TRISIO ;
BANK0
MOVLW .7 ; DESCONECTA EL COMPARADOR
MOVWF CMCON ;IDEM
CLRF GPIO
CLRF PONT ;PONE A CERO EL PUNTERO
MOVLW TMAX
MOVWF C2
CLRF FLAG
CLRF PASSO
MAIN
BTFSC SW
GOTO VETEMP
DECFSZ B0,F
GOTO MAIN
DECFSZ B1,F
GOTO MAIN
MOVLW TMAX
MOVWF C2
GOTO INITCONT
VETEMP
CLRF B0
CLRF B1
DECFSZ C0,F
GOTO MAIN
DECFSZ C1,F
GOTO MAIN
DECFSZ C2,F
GOTO MAIN
MOVLW TMAX
MOVWF C2
BTFSS FLAGTAP
GOTO NMOSTRAC
CALL FALHA1
NMOSTRAC
CLRF N0
CLRF N1
CLRF N2
CLRF N3
GOTO MAIN
INITCONT
CLRF AUX1
MOVLW .0
MOVWF NUM
CALL TABELA
MOVWF SAIDA
APRMESMO
CALL MS1
CALL DELAYT
ADDLW .0
BTFSS STATUS,Z
GOTO PEGAN
CALL MS2
CALL DELAYT
ADDLW .0
BTFSS STATUS,Z
GOTO PEGAN
DECFSZ AUX1,F
GOTO APRMESMO
INCF NUM,F
MOVFW NUM
CALL TABELA
MOVWF SAIDA
MOVFW NUM
SUBLW .11
BTFSC STATUS,Z
GOTO INITCONT
GOTO APRMESMO
PEGAN
MOVFW NUM
SUBLW .10 ;PRUEBA SI ES LETRA 'A' DE CAMBIAR CONTRASEÑA
BTFSC STATUS,Z
GOTO ALTERA_SENHA ; VA A CAMBIAR CONTRASEÑA
BSF FLAGTAP ; FLAG PARA PRESENTACIÓN DE 'F'
MOVFW PONT
ADDLW 0X20
MOVWF FSR
MOVFW NUM
MOVWF INDF
INCF PONT,F
MOVFW PONT
SUBLW .4
BTFSC STATUS,Z
GOTO RECEBE_SENHA
GOTO MAIN
ALTERA_SENHA
MOVLW .1 ; SEÑALA QUE HAY CAMBIO DE CONTRASEÑA
MOVWF PASSO
MOVLW 0X04
CALL DELAYSEG
MOVLW LETRA_o ; MUESTRA LETRA 'O' DE OLD (CONTRASEÑA VIEJA)
CALL MOSTRALETRA
GOTO MAIN
FALHA1 MOVLW .3 ; PARPADEA 3 VECES Y APARECE LA LETRA 'F'
MOVWF AUX
MOVLW 0X04
CALL DELAYSEG
MOVLW LETRA_F
CALL MOSTRALETRA
DECFSZ AUX,F
GOTO $-5
GOTO VFIM
MOSTRALETRA
CLRF AUX1
CALL TABELA
MOVWF SAIDA
X1
CALL MS1
CALL DELAY
CALL MS2
CALL DELAY
DECFSZ AUX1,F
GOTO X1
CLRF GPIO
RETURN
MS1
CLRF GPIO
BTFSC SAIDA,7
BSF GPIO,5
BTFSC SAIDA,6
BSF GPIO,4
BTFSC SAIDA,5
BSF GPIO,2
BTFSC SAIDA,4
BSF GPIO,1
BCF GPIO,0
RETURN
MS2
CLRF GPIO
BTFSC SAIDA,3
BSF GPIO,5
BTFSC SAIDA,2
BSF GPIO,4
BTFSC SAIDA,1
BSF GPIO,2
BTFSC SAIDA,0
BSF GPIO,1
BSF GPIO,0
RETURN
;---------------------------------------------------------------------------
DELAY
MOVLW 0XFF
MOVWF DEL5
NOP
NOP
NOP
NOP
DECFSZ DEL5,F
GOTO $-5
RETURN
DELAYT
MOVLW 0XFF
MOVWF DEL5
NOP
BTFSC SW
GOTO DBNCE
NOP
NOP
VT1 DECFSZ DEL5,F
GOTO $-5
CLRF GPIO
RETLW .0
DBNCE
CALL DELAY
BTFSS SW
GOTO VT1
CLRF GPIO
RETLW .1
;..................SUB-RUTINA DE ESCRITURA EN E2PROM...................
ESCR_E2PROM
BANK1
MOVWF EEDATA
BCF INTCON,GIE
BSF EECON1,WREN
MOVLW 0X55
MOVWF EECON2
MOVLW 0XAA
MOVWF EECON2
BSF EECON1,WR
BCF EECON1,WREN
; BTFSC EECON1,WRERR ;* HUBO ERROR?(* OPCIONAL ESTA LÍNEA Y LA PROXIMA)
; GOTO ESCR_E2PROM ;* INTENTA NUEVAMENTE SIN AFECTAR EEDATA
BTFSC EECON1,WR
GOTO $ - 1
BANK0
RETURN
VAIEEPROM ; ESCRIBE EN E2PROM
MOVLW .0
BANK1
MOVWF EEADR
BANK0
MOVFW XW0 ; DATO DEL TMR1H N.OVERFLOW
CALL ESCR_E2PROM
MOVLW .1
BANK1
MOVWF EEADR
BANK0
MOVFW XW1 ; DATO DEL TMR1H
CALL ESCR_E2PROM
MOVLW .2 ; TODAVIA NO
BANK1
MOVWF EEADR
BANK0
MOVFW XW2 ; DATO DEL TMR1L
CALL ESCR_E2PROM
MOVLW .3 ; TODAVIA NO
BANK1
MOVWF EEADR
BANK0
MOVFW XW3 ; DATO DEL TMR1L
CALL ESCR_E2PROM
LEEEP MOVLW .0 ; VALOR PARA NUMERO 0
BANK1
MOVWF EEADR ; CARGA DIRECCION
CALL LE_E2PROM ; SUBRUTINA PARA LECTURA
MOVWF XW0 ; CARGA PRIMER NUMERO
MOVLW .1 ; VALOR PARA NUMERO 0
BANK1
MOVWF EEADR ; CARGA DIRECCION
CALL LE_E2PROM ; SUBRUTINA PARA LECTURA
MOVWF XW1 ; CARGA PRIMER NUMERO
MOVLW .2 ; VALOR PARA NUMERO 0
BANK1
MOVWF EEADR ; CARGA DIRECCION
CALL LE_E2PROM ; SUBRUTINA PARA LECTURA
MOVWF XW2 ; CARGA PRIMER NUMERO
MOVLW .3 ; VALOR PARA NUMERO 0
BANK1
MOVWF EEADR ; CARGA DIRECCION
CALL LE_E2PROM ; SUBRUTINA PARA LECTURA
MOVWF XW3 ; CARGA PRIMER NUMERO
RETURN
LE_E2PROM
BANK1 ; SUBRUTINA PARA LECTURA DE E2PROM
BSF EECON1,RD ;
MOVF EEDATA,W ;
BANK0 ;
RETURN
DELAYSEG
MOVWF C2
DECFSZ C0,F
GOTO $-1
DECFSZ C1,F
GOTO $-3
DECFSZ C2,F
GOTO $-5
RETURN
END
Sigue el código "cerradura1sw.hex":
:020000040000FA
:020000006B286B
:0800080009008207ED346034A9
:10001000CB34E3346634A734AF34E034EF34E73420
:10002000CE348F348D34EC342B348E3410340D3484
:10003000EE34AC018A013C088207302830282128A0
:1000400031282008AD002108AE002208AF002308A7
:10005000B000043048210C30CE200330BC00792899
:100060002E212D08A006031DC5282E08A106031D5C
:10007000C5282F08A206031DC5283008A306031DA6
:10008000C52801303C0603195A2803303C060319E1
:100090006128023048211130CE208501851450306E
:1000A0004821A001A101A201A301AC018501BC016D
:1000B00038107928023048210D30CE200230BC00A3
:1000C000792816210330A400043048211230CE20B4
:1000D000A40B64285128831600308B000030850063
:1000E0008312073099008501AC012830B700B801B0
:1000F000BC0185198228B90B7928BA0B79282830D8
:10010000B7009428B901BA01B50B7928B60B792844
:10011000B70B79282830B700381C8F28C520A001DC
:10012000A101A201A3017928A7010030AB0005209D
:10013000AA00D920F820003E031DAE28E420F820B4
:10014000003E031DAE28A70B9928AB0A2B080520FB
:10015000AA002B080B3C0319942899282B080A3C69
:100160000319BE2838142C08203E84002B08800078
:10017000AC0A2C08043C0319192879280130BC006A
:10018000043048210E30CE2079280330A4000430FA
:1001900048210F30CE20A40BC7285128A7010520E5
:1001A000AA00D920EF20E420EF20A70BD128850159
:1001B00008008501AA1B85162A1B0516AA1A051513
:1001C0002A1A8514051008008501AA1985162A190E
:1001D0000516AA1805152A18851405140800FF30FD
:1001E000A6000000000000000000A60BF128080097
:1001F000FF30A60000008519032900000000A60BAF
:10020000FB2885010034EF20851DFF28850101347E
:1002100083169A008B131C1555309D00AA309D0043
:100220009C141C119C18122983120800003083169C
:100230009B0083122D080821013083169B00831236
:100240002E080821023083169B0083122F080821F4
:10025000033083169B008312300808210030831678
:100260009B004321AD00013083169B004321AE006B
:10027000023083169B004321AF00033083169B009E
:100280004321B000080083161C141A0883120800CA
:10029000B700B50B4929B60B4929B70B4929080006
:02400E00C43FAD
:084200000700030002000500A5
:00000001FF
curiosidades:
FECHADURA ELÉTRICA COM SENHA DE 4 DIGITOS USANDO 1 SÓ BOTÃO COM
PIC12F629 (REF001)
14 de março de 2012 Claudio Larios
;****************************************************************************
; PROJETO : FECHADURA ELETRICA COM SENHA DE 4 DIGITOS USANDO APENAS 1 SÓ BOTÃO
(SERIAL)
;****************************************************************************
; -------------------------------------“fechadura1sw.asm”--------------------
----------
;
; INICIO : 09/01/12 TERM.:
; AUTOR: C. LÁRIOS
; PROCESSADOR: PIC 12F629
; OBJETIVO: ACIONAR SOLENOIDE DE PORTÃO OU COMANDO DE ABRIR /FECHAR PORTÃO
AUTOMATICO
;****************************************************************************
*
;
#INCLUDE <P12F629.INC> ; ARQUIVO PADRAO
__CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _MCLRE_OFF &
_INTRC_OSC_NOCLKOUT ;(ATENÇÃO DESLIGADO. FEITO NO CONFIGURE!!!!)
ERRORLEVEL -302
; PAGINACAO DE MEMORIA;
#DEFINE BANK0 BCF STATUS,RP0 ;SETA BANK0 DE MEMORIA
#DEFINE BANK1 BSF STATUS,RP0 ;SETA BANK1
; VARIAVEIS
CBLOCK 0X20 ;ENDERECO INICIAL DE MEMORIA
N0,N1,N2,N3,AUX,DEL4,
DEL5,AUX1,TEMP,CONT,SAIDA,NUM,PONT,XW0,XW1,XW2,XW3,W0,W1,W2,W3,C0,C1,C2,FLAG,B0,
B1,B2,PASSO
ENDC
;............................................................................
....................
; VETOR DE INTERRUPCAO
ORG 0X04
RETFIE
;............................................................................
....................
TABELA
ADDWF PCL,F
; ABCPEFGD
RETLW B'11101101' ;0
RETLW B'01100000' ;1
RETLW B'11001011' ;2
RETLW B'11100011' ;3
RETLW B'01100110' ;4
RETLW B'10100111' ;5
RETLW B'10101111' ;6
RETLW B'11100000' ;7
RETLW B'11101111' ;8
RETLW B'11100111' ;9
RETLW B'11001110' ;LETRA 'P' =.10
RETLW B'10001111' ;LETRA 'E' =.11
RETLW B'10001101' ;LETRA 'C' =.12
RETLW B'11101100' ;LETRA 'N' =.13
RETLW B'00101011' ;LETRA 'O' =.14
RETLW B'10001110' ;LETRA 'F' =.15
RETLW B'00010000' ;LETRA '.' =.16
RETLW B'00001101' ;LETRA 'L' =.17
RETLW B'11101110' ;LETRA 'A' =.18
RECEBE_SENHA
CLRF PONT
CLRF PCLATH
MOVFW PASSO
ADDWF PCL,F
GOTO TESTA_SENHA ;0- NORMAL - COMPARA SENHA RECEBIDA COM
EEPROM
GOTO TESTA_SENHA ;1- MODO TROCA DE SENHA - COMPARA SENHA
RECEBIDA COM EEPROM E SEGUE OS PASSOS
GOTO RECEBE_NOVA_SENHA ;2- RECEBE NOVA SENHA
GOTO CONFIRMA_NOVA_SENHA ;3- RECEBE ANOVAMENTE A MESMA NOVA SENHA
PARA CONFIRMAÇÃO
RECEBE_NOVA_SENHA
MOVFW N0 ;SALVA SENHA A CONFIRMAR
MOVWF XW0
MOVFW N1
MOVWF XW1
MOVFW N2
MOVWF XW2
MOVFW N3
MOVWF XW3
MOVLW 0X04
CALL DELAYSEG
MOVLW LETRA_C
CALL MOSTRALETRA
MOVLW .3
MOVWF PASSO
GOTO MAIN
TESTA_SENHA
CALL LEEEP
CONFIRMA_NOVA_SENHA
MOVFW XW0
XORWF N0
BTFSS STATUS,Z
GOTO FALHA1
MOVFW XW1
XORWF N1
BTFSS STATUS,Z
GOTO FALHA1
MOVFW XW2
XORWF N2
BTFSS STATUS,Z
GOTO FALHA1
MOVFW XW3
XORWF N3
BTFSS STATUS,Z
GOTO FALHA1
MOVLW .1
XORWF PASSO,W
BTFSC STATUS,Z
GOTO PASSO1 ;MODO 1 - INICIA ALTERAÇÃO DE SENHA
MOVLW .3
XORWF PASSO,W
BTFSC STATUS,Z
GOTO GRAVAR ;MODO 3 - GRAVAR NOVA SENHA NA EEPROM
MOVLW 0X02
CALL DELAYSEG
MOVLW LETRA_L
CALL MOSTRALETRA
CLRF GPIO
BSF GPIO,1 ;LIGA PONTO (SAIDA PARA FECHADURA)
MOVLW TEMPO_FECHADURA_LIGADO
CALL DELAYSEG
VFIM
CLRF N0
CLRF N1
CLRF N2
CLRF N3
CLRF PONT
CLRF GPIO
CLRF PASSO
BCF FLAGTAP
GOTO MAIN
PASSO1
MOVLW 0X02
CALL DELAYSEG
MOVLW LETRA_N
CALL MOSTRALETRA
MOVLW .2
MOVWF PASSO
GOTO MAIN
GRAVAR
CALL VAIEEPROM
MOVLW 0X03
MOVWF AUX
MOVLW 0X04
CALL DELAYSEG
MOVLW LETRA_A
CALL MOSTRALETRA
DECFSZ AUX,F
GOTO $-5
GOTO VFIM
;
;
INICIO
BANK1 ;BANCO 1
MOVLW .0
MOVWF INTCON ;DESLIGA TODAS INTERRUPCOES
MOVLW B'000000' ;SAIDA EM GP0
MOVWF TRISIO ;
BANK0
MOVLW .7 ;DESLIGA O COMPARADOR
MOVWF CMCON ;IDEM
CLRF GPIO
CLRF PONT ;ZERA PONTEIRO
MOVLW TMAX
MOVWF C2
CLRF FLAG
CLRF PASSO
MAIN
BTFSC SW
GOTO VETEMP
DECFSZ B0,F
GOTO MAIN
DECFSZ B1,F
GOTO MAIN
MOVLW TMAX
MOVWF C2
GOTO INITCONT
VETEMP
CLRF B0
CLRF B1
DECFSZ C0,F
GOTO MAIN
DECFSZ C1,F
GOTO MAIN
DECFSZ C2,F
GOTO MAIN
MOVLW TMAX
MOVWF C2
BTFSS FLAGTAP
GOTO NMOSTRAC
CALL FALHA1
NMOSTRAC
CLRF N0
CLRF N1
CLRF N2
CLRF N3
GOTO MAIN
INITCONT
CLRF AUX1
MOVLW .0
MOVWF NUM
CALL TABELA
MOVWF SAIDA
APRMESMO
CALL MS1
CALL DELAYT
ADDLW .0
BTFSS STATUS,Z
GOTO PEGAN
CALL MS2
CALL DELAYT
ADDLW .0
BTFSS STATUS,Z
GOTO PEGAN
DECFSZ AUX1,F
GOTO APRMESMO
INCF NUM,F
MOVFW NUM
CALL TABELA
MOVWF SAIDA
MOVFW NUM
SUBLW .11
BTFSC STATUS,Z
GOTO INITCONT
GOTO APRMESMO
PEGAN
MOVFW NUM
SUBLW .10 ;TESTA SE É LETRA 'A' DE ALTERAR SENHA
BTFSC STATUS,Z
GOTO ALTERA_SENHA ;VAI PARA ALTERAR SENHA
BSF FLAGTAP ;FLAG PARA APRESENTAÇÃO DE 'F'
MOVFW PONT
ADDLW 0X20
MOVWF FSR
MOVFW NUM
MOVWF INDF
INCF PONT,F
MOVFW PONT
SUBLW .4
BTFSC STATUS,Z
GOTO RECEBE_SENHA
GOTO MAIN
ALTERA_SENHA
MOVLW .1 ;SINALIZA QUE HÁ ALTERAÇÃO DE SENHA
MOVWF PASSO
MOVLW 0X04
CALL DELAYSEG
MOVLW LETRA_o ;MOSTRA LETRA 'O' DE OLD (VELHA SENHA)
CALL MOSTRALETRA
GOTO MAIN
FALHA1 MOVLW .3 ;3 VEZES PISCA E APARECE A LETRA 'F'
MOVWF AUX
MOVLW 0X04
CALL DELAYSEG
MOVLW LETRA_F
CALL MOSTRALETRA
DECFSZ AUX,F
GOTO $-5
GOTO VFIM
MOSTRALETRA
CLRF AUX1
CALL TABELA
MOVWF SAIDA
X1
CALL MS1
CALL DELAY
CALL MS2
CALL DELAY
DECFSZ AUX1,F
GOTO X1
CLRF GPIO
RETURN
MS1
CLRF GPIO
BTFSC SAIDA,7
BSF GPIO,5
BTFSC SAIDA,6
BSF GPIO,4
BTFSC SAIDA,5
BSF GPIO,2
BTFSC SAIDA,4
BSF GPIO,1
BCF GPIO,0
RETURN
MS2
CLRF GPIO
BTFSC SAIDA,3
BSF GPIO,5
BTFSC SAIDA,2
BSF GPIO,4
BTFSC SAIDA,1
BSF GPIO,2
BTFSC SAIDA,0
BSF GPIO,1
BSF GPIO,0
RETURN
;----------------------------------------------------------------------------
--------------
DELAY
MOVLW 0XFF
MOVWF DEL5
NOP
NOP
NOP
NOP
DECFSZ DEL5,F
GOTO $-5
RETURN
DELAYT
MOVLW 0XFF
MOVWF DEL5
NOP
BTFSC SW
GOTO DBNCE
NOP
NOP
VT1 DECFSZ DEL5,F
GOTO $-5
CLRF GPIO
RETLW .0
DBNCE
CALL DELAY
BTFSS SW
GOTO VT1
CLRF GPIO
RETLW .1
;..................SUB-ROTINA DE ESCRITA NA E2PROM...................
ESCR_E2PROM
BANK1
MOVWF EEDATA
BCF INTCON,GIE
BSF EECON1,WREN
MOVLW 0X55
MOVWF EECON2
MOVLW 0XAA
MOVWF EECON2
BSF EECON1,WR
BCF EECON1,WREN
; BTFSC EECON1,WRERR ; * HOUVE ERRO?( * OPCIONAL ESTA LINHA E A
PROXIMA)
; GOTO ESCR_E2PROM ; * TENTA NOVAMENTE SEM AFETAR EEDATA
BTFSC EECON1,WR
GOTO $ - 1
BANK0
RETURN
VAIEEPROM ; ESCREVE NA E2PROM
MOVLW .0
BANK1
MOVWF EEADR
BANK0
MOVFW XW0 ;DADO DO TMR1H N.OVERFLOW
CALL ESCR_E2PROM
MOVLW .1
BANK1
MOVWF EEADR
BANK0
MOVFW XW1 ;DADO DO TMR1H
CALL ESCR_E2PROM
MOVLW .2 ;AINDA NÃO
BANK1
MOVWF EEADR
BANK0
MOVFW XW2 ;DADO DO TMR1L
CALL ESCR_E2PROM
MOVLW .3 ;AINDA NÃO
BANK1
MOVWF EEADR
BANK0
MOVFW XW3 ;DADO DO TMR1L
CALL ESCR_E2PROM
LEEEP MOVLW .0 ;VALOR PARA NUMERO 0
BANK1
MOVWF EEADR ;CARREGA ENDERECO
CALL LE_E2PROM ;SUBROTINA PARA LEITURA
MOVWF XW0 ;CARREGA PRIMEIRO NUMERO
MOVLW .1 ;VALOR PARA NUMERO 0
BANK1
MOVWF EEADR ;CARREGA ENDERECO
CALL LE_E2PROM ;SUBROTINA PARA LEITURA
MOVWF XW1 ;CARREGA PRIMEIRO NUMERO
MOVLW .2 ;VALOR PARA NUMERO 0
BANK1
MOVWF EEADR ;CARREGA ENDERECO
CALL LE_E2PROM ;SUBROTINA PARA LEITURA
MOVWF XW2 ;CARREGA PRIMEIRO NUMERO
MOVLW .3 ;VALOR PARA NUMERO 0
BANK1
MOVWF EEADR ;CARREGA ENDERECO
CALL LE_E2PROM ;SUBROTINA PARA LEITURA
MOVWF XW3 ;CARREGA PRIMEIRO NUMERO
RETURN
LE_E2PROM
BANK1 ;SUB-ROTINA DE LEITURA DE E2PROM
BSF EECON1,RD ;
MOVF EEDATA,W ;
BANK0 ;
RETURN
DELAYSEG
MOVWF C2
DECFSZ C0,F
GOTO $-1
DECFSZ C1,F
GOTO $-3
DECFSZ C2,F
GOTO $-5
RETURN
END
:020000040000FA
:020000006B286B
:0800080009008207ED346034A9
:10001000CB34E3346634A734AF34E034EF34E73420
:10002000CE348F348D34EC342B348E3410340D3484
:10003000EE34AC018A013C088207302830282128A0
:1000400031282008AD002108AE002208AF002308A7
:10005000B000043048210C30CE200330BC00792899
:100060002E212D08A006031DC5282E08A106031D5C
:10007000C5282F08A206031DC5283008A306031DA6
:10008000C52801303C0603195A2803303C060319E1
:100090006128023048211130CE208501851450306E
:1000A0004821A001A101A201A301AC018501BC016D
:1000B00038107928023048210D30CE200230BC00A3
:1000C000792816210330A400043048211230CE20B4
:1000D000A40B64285128831600308B000030850063
:1000E0008312073099008501AC012830B700B801B0
:1000F000BC0185198228B90B7928BA0B79282830D8
:10010000B7009428B901BA01B50B7928B60B792844
:10011000B70B79282830B700381C8F28C520A001DC
:10012000A101A201A3017928A7010030AB0005209D
:10013000AA00D920F820003E031DAE28E420F820B4
:10014000003E031DAE28A70B9928AB0A2B080520FB
:10015000AA002B080B3C0319942899282B080A3C69
:100160000319BE2838142C08203E84002B08800078
:10017000AC0A2C08043C0319192879280130BC006A
:10018000043048210E30CE2079280330A4000430FA
:1001900048210F30CE20A40BC7285128A7010520E5
:1001A000AA00D920EF20E420EF20A70BD128850159
:1001B00008008501AA1B85162A1B0516AA1A051513
:1001C0002A1A8514051008008501AA1985162A190E
:1001D0000516AA1805152A18851405140800FF30FD
:1001E000A6000000000000000000A60BF128080097
:1001F000FF30A60000008519032900000000A60BAF
:10020000FB2885010034EF20851DFF28850101347E
:1002100083169A008B131C1555309D00AA309D0043
:100220009C141C119C18122983120800003083169C
:100230009B0083122D080821013083169B00831236
:100240002E080821023083169B0083122F080821F4
:10025000033083169B008312300808210030831678
:100260009B004321AD00013083169B004321AE006B
:10027000023083169B004321AF00033083169B009E
:100280004321B000080083161C141A0883120800CA
:10029000B700B50B4929B60B4929B70B4929080006
:02400E00C43FAD
:084200000700030002000500A5
:00000001FF