;************************************************************ ; ; ; ; LUZ DE CORTESIA COM TEMPORIZAÇÃO DE PORTA ABERTA ; ; OBJETIVOS: ; 1) AO ABRIR PORTA E FECHAR MANTEM ACESA POR 30 SEG. ; 2) SE PORTA FICAR ABERTA OU INTERRUPTOR DO PAINEL ; FICAR LIGADO DIRETO, DESLIGAR A LUZ APÓS 3 MIN. ; PARA EVITAR DESCARREGAR A BATERIA DO VEICULO DE ; UM DIA PARA O OUTRO. ; ; BY CLÁUDIO LÁRIOS DATA DO PROJETO: 03-11-2011 ;************************************************************** #INCLUDE ; ARQUIVO PADRAO __CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _MCLRE_ON & _INTRC_OSC_NOCLKOUT ;(ATENÇÃO DESLIGADO. FEITO NO CONFIGURE!!!!) ; 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 DEL1 ;DELAY DEL2 ;IDEM DEL3 ;IDEM DEL4 ;DELAY PARA TRANSMISSAO E AMOSTRAGEM DOS DISPLAYS DEL5 ;IDEM CONT1 ;CONTADOR AUXILIAR PARA RESULTADO PARTE BAIXA DA CONVERSÃO CONT2 ;CONTADOR AUXILIAR PARA RESULTADO PARTE ALTA DA CONVERSÃO CTMAX ;CONTADOR DE TEMPO MAXIMO 3 MIN W_SALVO ENDC ;======================DEFINICAO DE BITS E FLAGS============================================== #DEFINE CH GPIO,4 ;ENTRADA - DO INTERRUPTOR DAS PORTAS- ACIONA COM NEG. PINO 3 #DEFINE LAMP GPIO,5 ;SAIDA - LIGA LAMPADA DE CORTESIA VIA TRANSISTOR MOS- PINO 2 VDEL1 EQU 0XFF VDEL2 EQU 0XFF VDEL3 EQU .17 ;.100 PARA 17 SEG .30 para 5 segundos (ESCOLHA AQUI O TEMPO DESEJADO DE TEMPORIZAÇÃO) TMAX EQU .40 ;PARA 3 MIN (TEMPO MAXIMO NO CASO DE ESQUECER INTERRUPTOR LIGADO OU PORTA ABERTA) ORG 0X00 GOTO INICIO ORG 0X04 MOVWF W_SALVO MOVFW GPIO MOVFW W_SALVO BCF INTCON,GPIF RETFIE INICIO BANK1 ;BANCO 1 MOVLW B'11001000' MOVWF INTCON ;LIGA TODAS INTERRUPCOES MOVLW B'011111' ;DEFINE ENTRADAS (1) E SAIDAS (0) NA PIO MOVWF TRISIO ; MOVLW .0 ;HABILITA PULL-UP DA PIO MOVWF OPTION_REG ;IDEM MOVLW B'010000' MOVWF IOC ;HABILITA INTERUPÇÃO POR MUDANÇA DE ESTADO DA PORTA BANK0 MOVLW .7 ;DESLIGA O COMPARADOR MOVWF CMCON ;IDEM CLRF GPIO ;LIMPA PORTA TESTA MOVLW TMAX MOVWF CTMAX ;CARGA DO TEMPO MAXIMO XX BTFSC CH GOTO XX CALL DELAYCH BTFSC CH GOTO XX PROSSEGUE BSF LAMP CALL DELAY30S BTFSS CH GOTO JJ BCF LAMP SLEEP NOP ; GOTO TESTA GOTO INICIO JJ DECFSZ CTMAX GOTO PROSSEGUE BCF LAMP ;DESLIGA SLEEP NOP BTFSS CH GOTO $-1 ;GOTO TESTA ;AGUARDA INTERRUPTOR SER DESLIGADO GOTO INICIO GOTO $ DELAYCH MOVLW 0XFF MOVWF DEL1 MOVLW .4 MOVWF DEL2 LOOP1 DECFSZ DEL1,F GOTO LOOP1 DECFSZ DEL2,F GOTO LOOP1 RETURN DELAY30S MOVLW VDEL1 MOVWF DEL1 MOVLW VDEL2 MOVWF DEL2 MOVLW VDEL3 MOVWF DEL3 LOOP1C DECFSZ DEL1,F GOTO LOOP1C DECFSZ DEL2,F GOTO LOOP1C DECFSZ DEL3,F GOTO LOOP1C RETURN END