w EQU 0h
f EQU 1h
LIST P=16F1503
INCLUDE <P16f1503.INC>
;;;;; 4 Mhz
CONT EQU 20H
CONTMAX EQU 72H
CONTMIN EQU 73H
RET1 EQU 77H
RET2 EQU 78H
RET3 EQU 79H
RET1I EQU 74H
RET2I EQU 75H
RET3I EQU 76H
INDI EQU 2FH
INDII EQU 30H
CONTI EQU 31H
CONTMAXI EQU 7AH
CONTMINI EQU 7BH
HDATA_ADDR EQU 74H
ORG 00H
GOTO INICIALIZACION
ORG 04H
GOTO ISR
;;;;;;; INICIALIZACION
INICIALIZACION NOP
BANKSEL CONTMIN
MOVLW 3H
MOVWF CONTMIN
MOVLW 0H
MOVWF HDATA_ADDR
BANKSEL OSCCON ;; RELOJ A 4MHZ
MOVLW 6AH
MOVWF OSCCON
BANKSEL PORTA
CLRF HDATA_ADDR
CLRF PORTA
BANKSEL LATA
CLRF LATA
BANKSEL ANSELA ; Puerto A
CLRF ANSELA
BANKSEL TRISA
MOVLW 0Ch
MOVWF TRISA
BANKSEL PORTC
CLRF PORTC
BANKSEL LATC
CLRF LATC
BANKSEL ANSELC ; Puerto C SIN RES. POL.
CLRF ANSELC
BANKSEL TRISC
CLRF TRISC
banksel OPTION_REG
CLRF OPTION_REG
movlw 0x07
movwf OPTION_REG
BANKSEL WPUA
MOVLW 0Ch
MOVWF WPUA ;ACTIVADA, BIT 2, 3
BANKSEL PORTA
BANKSEL INTCON ; Rut. servicio interrupciones
CLRF INTCON
MOVLW 0X88
MOVWF INTCON ;PONER A 1 GIE e IOCIE
BANKSEL IOCAN
CLRF IOCAN
BSF IOCAN,2 ; a 1 IOCAN2
BANKSEL PORTA
GOTO INIC
;;;;;;;; SUBRUTINAS
DEMORAI MOVLW 0Dh ; CARGA VARIABLES DEMORA
MOVWF RET1I
MOVLW 00h
MOVWF RET2I
DEC1I DECFSZ RET2I ; RETARDO DE 10ms
GOTO DEC1I ; valores 0Dh y 0h
DECFSZ RET1I ; 2 BUCLES
GOTO DEC1I
RETURN
DEMORA100msI MOVLW 83h ; CARGA VARIABLES DEMORA
MOVWF RET1I
MOVLW 0h
MOVWF RET2I
DEC3I DECFSZ RET2I ; RETARDO DE 100ms
GOTO DEC3I ; valores 0Dh y 40h
DECFSZ RET1I ; 2 BUCLES
GOTO DEC3I
RETURN
DEMORA500msI CALL DEMORA100msI
CALL DEMORA100msI
CALL DEMORA100msI
CALL DEMORA100msI
CALL DEMORA100msI
RETURN
DEMORA100ms MOVLW 83h ; CARGA VARIABLES DEMORA
MOVWF RET1
MOVLW 0h
MOVWF RET2
DEC3 DECFSZ RET2 ; RETARDO DE 100ms
GOTO DEC3 ; valores 0Dh y 40h
DECFSZ RET1 ; 2 BUCLES
GOTO DEC3
RETURN
DEMORA500ms CALL DEMORA100ms
CALL DEMORA100ms
CALL DEMORA100ms
CALL DEMORA100ms
CALL DEMORA100ms
RETURN
INIC BSF PORTA,1
BSF PORTA,0
CALL DEMORA500msI
CALL DEMORA500msI
CALL WRFLASH
BANKSEL LATA
BCF LATA,1
BCF LATA,0
CALL DEMORA500msI
CALL DEMORA500msI
BSF LATA,1
BSF PORTA,0
CALL DEMORA500ms
CALL DEMORA500ms
BCF LATA,1
BCF LATA,0
CALL DEMORA500ms
CALL DEMORA500ms
CALL RDFLASH
BANKSEL LATA
; MOVLW 3H
; MOVWF CONTMIN
; CLRF W
MOVF CONTMIN,0
MOVWF LATA
INIC1 NOP
GOTO INIC1
ISR NOP
BTFSC PORTA,2
GOTO RETISR
CALL DEMORA500msI
CALL DEMORA500msI
BTFSC PORTA,2
GOTO RETISR
ISR1 BTFSS PORTA,2
GOTO ISR1
CALL DEMORAI
BTFSS PORTA,2
GOTO ISR1
; CALL RDFLASH
CALL DEMORA500msI
CALL DEMORA500msI
MOVLW CONTMAX
MOVWF PORTA
CALL DEMORA500msI
CALL DEMORA500msI
CALL DEMORA500msI
CALL DEMORA500msI
CALL DEMORA500msI
CALL DEMORA500msI
RETISR NOP
BANKSEL IOCAF
BCF IOCAF,2
RETFIE
RDFLASH NOP
BANKSEL PMADRH
MOVLW 07H
MOVWF PMADRH
MOVLW 0XF0
MOVWF PMADRL
BCF PMCON1,CFGS
BSF PMCON1,RD
NOP
NOP
MOVF PMDATL,0
BANKSEL CONTMIN
MOVWF CONTMIN
BANKSEL PMDATH
MOVF PMDATH,0
MOVWF HDATA_ADDR
RETURN
WRFLASH BCF INTCON,GIE
BANKSEL PMADRH
MOVLW 07H
MOVWF PMADRH
MOVLW 0XF0
MOVWF PMADRL
MOVLW CONTMIN
MOVWF FSR0L
MOVLW HDATA_ADDR
MOVWF FSR0H
BCF PMCON1,CFGS
BCF PMCON1,FREE
BSF PMCON1,WREN
BSF PMCON1,LWLO
MOVIW FSR0++
MOVWF PMDATL
MOVIW FSR0++
MOVWF PMDATH
MOVLW 55H
MOVWF PMCON2
MOVLW 0AAH
MOVWF PMCON2
BSF PMCON1,WR
NOP
NOP
BCF PMCON1,LWLO
MOVLW 55H
MOVWF PMCON2
MOVLW 0AAH
MOVWF PMCON2
BSF PMCON1,WR
NOP
NOP
BSF INTCON,GIE
RETURN
FIN NOP
END