Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* TITULO: PARTE 2 DO PROJETO CORREDOR: ACIONAMENTO DE LÂMPADAS E *
- ;* ALARME DE INCÊNDIO(COM INTERRUPÇÃO)*
- ;* *
- ;* DESENVOLVIDO PELO GRUPO: *
- ;* => JONATAS VICENTE *
- ;* => GABRIEL DE BENEVIDES *
- ;* *
- ;* VERSÃO: 1.0 DATA: 24/10/2018 *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* DESCRIÇÃO DO ARQUIVO *
- ;*------------------------------------------------------------------------------------------*
- ;* COMENTÁRIOS E DESCRIÇÃO DO PROBLEMA PROPOSTO: *
- ;* PROJETO DA DISCIPLINA DE MICROCOMPUTADORES. PROJETAR UM SISTEMA DE CONTROLE *
- ;* UTILIZANDO O PIC16F628A PARA ACIONAMENTO DE LÂMPADAS E ALARME DE INCÊNDIO *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* ARQUIVOS DE DEFINIÇÕES *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- #INCLUDE <P16F628A.INC> ;ARQUIVO PADRÃO MICROCHIP
- __CONFIG _BOREN_OFF & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* PAGINAÇÃO DE MEMÓRIA *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;DEFINIÇÃO DE COMANDOS PARA ALTERAÇÃO DA PÁGINA DE MEMÓRIA
- #DEFINE BANK0 BCF STATUS,RP0 ;SETA BANK 0 DE MEMÓRIA
- #DEFINE BANK1 BSF STATUS,RP0 ;SETA BANK 1 DE MEMÓRIA
- ;*************************************************************************
- ;* DEFINIÇÕES GERAIS *
- ;*************************************************************************
- ;DEFINIÇÃO DE MNEMÔNICOS PARA ACESSO A BITS DE REGISTRADORES ESPECIAIS
- #DEFINE TMHAB INTCON, TOIE ;HABILITA A INTERRUPÇÃO DO TIMER
- #DEFINE TFLAG INTCON, T0IF ;FLAG SINALIZADOR DE ESTOURO DO TIMER
- #DEFINE PFLAG INTCON, INTF ;FLAG SINALIZADOR DE INTERRUPÇÃO EM RB0
- #DEFINE CHFLAG INTCON, RBIF ;FLAG SINALIZADOR DE INT DE RB4_RB7
- #DEFINE HGINT INTCON, GIE ;HABILITACAO GERAL
- #DEFINE HINTE INTCON, INTE ;HABILITACAO DA INT EXTERNA
- ;************************************************************************
- ;* VARIÁVEIS *
- ;************************************************************************
- ;DEFINIÇÃO DO BLOCO DE VARIÁVEIS
- CBLOCK 0X20 ;ENDEREÇO INICIAL DA MÉMORIA DO USUÁRIO
- W_TEMP ;REGISTROS TEMPORARIOS PARA USO JUNTO AS
- STATUS_TEMP ;INTERRUPÇÕES
- ;VARIÁVEIS ESPECIFICAS DO PROJETO
- AUXILIAR ;GUARDA O VALOR DO SENSOR
- TEMPO_1
- TEMPO_2
- TEMPO_3
- TEMPO_F
- ENDC ;FIM DE BLOCO DE VARIÁVEIS
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* FLAGS *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ; DEFINIÇÃO DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA
- #DEFINE ZERO STATUS,Z ;FLAG Z DO REGISTRADOR STATUS
- ;PARA IDENFICAR SE O RESULTADO DA
- ;ULTIMA OPERAÇÃO FOI ZERO
- ;(NÃO => Z=0, SIM => Z=1 )
- #DEFINE AUX AUXILIAR,7 ;BIT QUE IRÁ CORRESPONDERAO RB7
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* CONSTANTES *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;DEFINIÇÃO DAS CONSTANTES UTILIZADAS NO PROGRAMA
- ;BASE DE TEMPO DE 10HZ. O DELAY É CALCULADO USANDO
- ; A EXPRESSÃO: D=((CONTMAX - N)*PRESCALER)/F;
- ;ONDE D= DELAY DESEJADO, N= CONSTANTE A SER COLOCADO NO TIMER
- ; F= FREQUENCIA DO OSCILADOR EXERNO EM HERTZ , CONTMAX = 256 PARA TMR0
- DELAY_1S EQU .255 ;DELAY DE 1 SEGUNDO COM F=1HZ
- DELAY_10S EQU .246 ;DELAY DE 10 SEGUNDOS COM F=1HZ
- ;************************************************************************
- ;PARA ESCREVER EM HEXA: 0X1F
- ;PARA ESCREVER EM DECIMAL: .132
- ;PARA ESCREVER EM BINÁRIO: B'10010000'
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* ENTRADAS *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ; DEFINIÇÃO DOS OS PINOS QUE SERÃO UTILIZADOS COMO ENTRADA
- ;#DEFINE INT_E PORTB,0 ;BOTÃO DE INTERRUPÇÃO EXTERNA
- #DEFINE FUMACA PORTB,RB0 ;CHAVE 4 (INT POR RB0)
- #DEFINE PRESENCA_1 PORTB,RB7 ;CHAVE 3 (INT POR RB6)
- #DEFINE PRESENCA_2 PORTB,RB5 ;CHAVE 2 (INT POR RB5)
- #DEFINE PRESENCA_3 PORTB,RB4 ;CHAVE 1 (INT POR RB4)
- #DEFINE LUMINOS PORTB,RB1 ;SENSOR DE LUMINOSIDADE 1(RB1)
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* SAÍDAS *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ; DEFINIÇÃO DE TODOS OS PINOS QUE SERÃO UTILIZADOS COMO SAÍDA
- ; RECOMENDAMOS COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1)
- #DEFINE LED_STR PORTB,RB3 ;LED INTERUP.
- #DEFINE LED_BUZZ PORTB,RB2 ;LED TIMER
- #DEFINE LUZ1 PORTA,RA0 ;LED 1
- #DEFINE LUZ2 PORTA,RA1 ;LED 2
- #DEFINE LUZ3 PORTA,RA2 ;LED 3
- #DEFINE BUZZ PORTA,RA3 ;LED 4
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* VETOR DE RESET *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ORG 0X00 ;ENDEREÇO INICIAL DE PROCESSAMENTO
- GOTO INICIO
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* INICIO DA INTERRUPÇÃO *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ORG 0X04 ;ENDEREÇO INICIAL DA INTERRUPÇÃO
- MOVWF W_TEMP ;COPIA W PARA W_TEMP
- SWAPF STATUS,W
- MOVWF STATUS_TEMP ;COPIA STATUS PARA STATUS_TEMP
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* ROTINA DE ATENDIMENTO DA INTERRUPÇÃO *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- BCF HGINT ;DESABILITA INTERRUP.
- BTFSC PFLAG ;OCORREU FOGO?
- GOTO FOGO ;SIM, VA PARA ROTINA DE RB0
- BTFSC CHFLAG ;NAO, OCORREU UMA INTERRUPCAO EM RB4-7?
- GOTO TRATA_CHAVE ;SIM, VA PARA ROTINA DE RB4-7
- BTFSC TFLAG ;NAO, OCORREU UMA INTERRUPCAO DO TIMER?
- GOTO TRATA_TIMER ;SIM, VA PARA ROTINA DE ESTOURO DO TIMER
- GOTO SAI_INT ;NAO, SAI DA INTERRUPCAO
- TRATA_CHAVE
- BCF CHFLAG ;LIMPA FLAG
- BTFSC LUMINOS
- GOTO SAI_INT
- BTFSC PRESENCA_1
- GOTO LUZ_1
- BTFSC PRESENCA_2
- GOTO LUZ_2
- BTFSC PRESENCA_3
- GOTO LUZ_3
- GOTO SAI_INT
- FOGO
- BCF PFLAG ;LIMPA PFLAG
- MOVLW D'10'
- MOVWF TEMPO_F
- GOTO SAI_INT
- LUZ_1
- BSF LUZ1
- MOVLW D'60'
- MOVWF TEMPO_1
- GOTO SAI_INT
- LUZ_2
- BSF LUZ2
- MOVLW D'60'
- MOVWF TEMPO_2
- GOTO SAI_INT
- LUZ_3
- BSF LUZ3
- MOVLW D'60'
- MOVWF TEMPO_3
- GOTO SAI_INT
- TRATA_TIMER
- BCF TFLAG ;LIMPA TFLA
- BSF AUX
- BTFSC FUMACA
- CALL CORRE
- BTFSC LUZ1
- CALL DEC_1
- BTFSC LUZ2
- CALL DEC_2
- BTFSC LUZ3
- CALL DEC_3
- GOTO SAI_INT ;SAI DA INTERRUPCAO
- CORRE
- DECFSZ TEMPO_F
- RETURN
- CALL PISCA
- RETURN
- DEC_1
- DECFSZ TEMPO_1
- RETURN
- BCF LUZ1
- RETURN
- DEC_2
- DECFSZ TEMPO_2
- RETURN
- BCF LUZ2
- RETURN
- DEC_3
- DECFSZ TEMPO_3
- RETURN
- BCF LUZ3
- RETURN
- PISCA
- BSF BUZZ
- BSF LED_BUZZ
- RETURN
- ;*************************************************************************
- ;* SAÍDA DA INTERRUPÇÃO *
- ;*************************************************************************
- SAI_INT
- SWAPF STATUS_TEMP,W
- MOVWF STATUS ;MOVE STATUS_TEMP PARA STATUS
- SWAPF W_TEMP,W ;MOVE W_TEMP PARA W
- BSF HGINT
- RETFIE
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* DEFINIÇÃO DE ROTINAS E SUB-ROTINAS: *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- LIMPA_TUDO ;CONDIÇÕES INICIAIS
- BCF AUX ;ZERAR VARIAVEL
- CLRF PORTA ;ZERAR PORTA A
- CLRF PORTB ;ZERAR PORTA B
- RETURN
- DELAY
- CLRF TMR0
- MOVLW DELAY_1S
- MOVWF TMR0
- RETURN
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* INICIO DO PROGRAMA *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- INICIO
- BANK1 ;ALTERA PARA O BANCO 1
- MOVLW B'00110000' ;OUT: RA0,RA1,RA2 E RA3; IN: AS DEMAIS
- MOVWF TRISA ;CONFIGURA ENTRADAS E SAÍDAS DA PORTA A
- MOVLW B'11110011' ;IN:RB0, RB4,RB5,RB6, RB7; OUT: RB1,RB2,RB3,
- MOVWF TRISB ;CONFIGURA ENTRADAS E SAÍDAS DA PORTA B
- MOVLW B'11111000'
- MOVWF OPTION_REG ;DEFINE OPÇÕES DE OPERAÇÃO
- MOVLW B'10111000'
- MOVWF INTCON ;DEFINE OPÇÕES DE INTERRUPÇÃO
- ;RB0, TMR0 E RB4 A RB7
- MOVLW B'00010000' ;UTILIZAR CRISTAL INTERNO DE 4 MHZ
- MOVWF PCON
- BANK0 ;ALTERA PARA O BANCO 0
- MOVLW B'00000111' ;ENTRADAS ANALOGICAS DESATIVAS
- MOVWF CMCON
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* INICIALIZAÇÃO DAS VARIÁVEIS *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- CALL LIMPA_TUDO ;CONDIÇÕES INICIAIS E
- BSF LED_STR
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* ROTINA PRINCIPAL *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- MAIN
- CALL DELAY
- GOTO MAIN
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* FIM DO PROGRAMA *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement