Vous êtes sur la page 1sur 4

1/14/2020 larios.tecnologia.ws/iBlog/wp-content/photos/2013/08/ALARME_GAS_ASM.

txt

;****************************************************************************************
***************
; 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
http://larios.tecnologia.ws/iBlog/wp-content/photos/2013/08/ALARME_GAS_ASM.txt 1/4
1/14/2020 larios.tecnologia.ws/iBlog/wp-content/photos/2013/08/ALARME_GAS_ASM.txt

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

http://larios.tecnologia.ws/iBlog/wp-content/photos/2013/08/ALARME_GAS_ASM.txt 2/4
1/14/2020 larios.tecnologia.ws/iBlog/wp-content/photos/2013/08/ALARME_GAS_ASM.txt
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

http://larios.tecnologia.ws/iBlog/wp-content/photos/2013/08/ALARME_GAS_ASM.txt 3/4
1/14/2020 larios.tecnologia.ws/iBlog/wp-content/photos/2013/08/ALARME_GAS_ASM.txt

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

http://larios.tecnologia.ws/iBlog/wp-content/photos/2013/08/ALARME_GAS_ASM.txt 4/4

Vous aimerez peut-être aussi