;******************************************************************************************************* ; ALARM_GAS_GLP.ASM ; ; PROJETO ALARME INDICADOR DE VAZAMENTO DE GAS GLP EM AMBIENTES INTERNOS RESIDENCIAIS ; OBJETIVO: DETECTAR VAZAMENTOS DE GAS GLP E AVISAR OCUPANTES DO AMBIENTE DO PERIGO DE EXPLOSÃO ; UTILIZA SENSOR 'MQ_2' PARA GAS GLP. ; AUTOR: CLAUDIO LARIOS INICIO:26-08-13 TERMINO: 28-08-13 ; OBS. PROJETO PARA FINS DIDÁTICOS APENAS. ;___________________________________________________________________________________________________ ; LIST P=12f675 , R=DEC INCLUDE "P12F675.INC" ;-------------------------- ERRORLEVEL -302 __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _BODEN_OFF & _MCLRE_ON ;---------------------------------------------------- ; #DEFINE BANK0 BCF STATUS,RP0 ;SETA BANK0 DE MEMORIA #DEFINE BANK1 BSF STATUS,RP0 ;SETA BANK1 ; VARIAVEIS CBLOCK 0X20 ;ENDERECO INICIAL DE MEMORIA TEMP,TEMP1,TEMP2,W_TEMP,STATUS_TEMP,CT0,CT1,CT2,FLAGS,CT0A,CT1A,CT0B,CT1B,CT2B ENDC #DEFINE LED GPIO,4 ; SAIDA LED #DEFINE SOM GPIO,5 ;SAIDA DE SOM #DEFINE TRIS_SOM TRISIO,5 ;SENTIDO DA SAIDA DE SOM IN/OUT #DEFINE SW GPIO,2 ;ENTRADA DO INTERRUPTOR (MUTE) #DEFINE FLAG_LED FLAGS,0 #DEFINE FLAG_SOM FLAGS,1 ;================================================================================================= ; VETOR DE RESET ;================================================================================================= ORG 0X00 GOTO INICIO ;================================================================================================= ; VETOR DE INTERRUPÇÃO ;================================================================================================= ORG 0X04 INT_TMR0 MOVWF W_TEMP ;SALVA 'W' (MODO COMPILER) MOVF STATUS,W ;SALVA 'STATUS' MOVWF STATUS_TEMP BANK0 MOVLW .8 MOVWF TMR0 BCF INTCON,T0IF ;APAGA FLAG DO TMR0 INCFSZ CT0,F GOTO INC_RA INCFSZ CT1,F GOTO INC_RA INCF CT2,F INC_RA INCFSZ CT0A,F GOTO INC_RB INCF CT1A,F INC_RB INCFSZ CT0B,F GOTO SAI_INT INCFSZ CT1B,F GOTO SAI_INT INCF CT2B,F SAI_INT MOVF STATUS_TEMP,W ;RECUPERA 'STATUS' (MODO COMPILER) MOVWF STATUS SWAPF W_TEMP,F ;RECUPERA 'W' SWAPF W_TEMP,W RETFIE ;................................................................................................ ; ; ;================================================================================================= ; INICIALIZAÇÃO DE PORTAS E REGISTRADORES ;================================================================================================= INICIO BANK1 ;BANCO 1 CALL 0X3FF ;OBTEM O VALOR DA CALIBRAÇÃO MOVWF OSCCAL ;CALIBRA MOVLW B'10100000' ;LIGA INTERRUPÇÃO TIMER 0 MOVWF INTCON ;DESLIGA TODAS INTERRUPCOES MOVLW B'001111' ;DEFINE ENTRADAS MOVWF TRISIO ; MOVLW B'00000000' ;HABILITA PULL-UP DA PIO / TMR0 :2 MOVWF OPTION_REG ;IDEM CLRF ANSEL BSF WPU,2 ;LIGA PULLUP BANK0 MOVLW .2 ;LIGA O COMPARADOR MOVWF CMCON ;IDEM CLRF GPIO ;LIMPA PORTAS CLRF CT0 CLRF CT1 CLRF CT2 ;================================================================================================= ; LOOP PRINCIPAL ;================================================================================================= MAIN BTFSC CMCON,COUT ;TESTA COMPARADOR GOTO ACIONAR ;ENTRADA INVERSORA MAIOR QUE NÃO INVERSORA, ENTÃO ACIONAR CALL PISCA_NORMAL GOTO MAIN ACIONAR CLRF CT0B CLRF CT1B CLRF CT2B BANK1 BCF TRIS_SOM ;VIRA SAIDA PARA PARAR O SOM BANK0 LOOP_ON BTFSS SW GOTO MUTE RET_MUTE CALL GERA_SOM BTFSS CT2B,2 ;2 MINUTOS GOTO LOOP_ON GOTO MAIN MUTE BANK1 BSF TRIS_SOM ;VIRA ENTRADA PARA PARAR O SOM BANK0 GOTO RET_MUTE ;============================================================= ; PISCA LED EM MODO NORMAL (INDICA LIGADO) ;============================================================= PISCA_NORMAL BTFSC FLAG_LED GOTO FLAG_EH1 BSF LED BTFSS CT0A,3 GOTO SEG1 BSF FLAG_LED GOTO SEG1 FLAG_EH1 BCF LED BTFSS CT1A,4 GOTO SEG1 BCF FLAG_LED CLRF CT0A CLRF CT1A SEG1 RETURN ;============================================================= ; PISCA LED EM MODO DE DETEÇÃO DE GAS ;============================================================= PISCA_RAPIDO BTFSC FLAG_LED GOTO FLAG_EH2 BSF LED BTFSS CT0A,3 GOTO SEG2 BSF FLAG_LED GOTO SEG2 FLAG_EH2 BCF LED BTFSS CT1A,0 GOTO SEG2 BCF FLAG_LED CLRF CT0A CLRF CT1A SEG2 RETURN ;================================================================ GERA_SOM BTFSC FLAG_SOM GOTO FLAGS_E1 BSF SOM CALL PISCA_RAPIDO BTFSS CT0,0 GOTO $-2 BCF SOM BTFSC CT0,0 GOTO $-1 BTFSS CT1,1 GOTO SEG3 BSF FLAG_SOM CLRF CT0 CLRF CT1 GOTO SEG3 FLAGS_E1 BSF SOM CALL PISCA_RAPIDO BTFSS CT0,1 GOTO $-2 BCF SOM BTFSC CT0,1 GOTO $-1 BTFSS CT1,1 GOTO SEG3 BCF FLAG_SOM CLRF CT0 CLRF CT1 SEG3 RETURN END