Você está na página 1de 3

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

;* EX6 – CONTROLE DE NÍVEL DE UMA CAIXA D’ÁGUA E CISTENA


*
;* DESBRAVANDO O PIC *
;* *
;* PROF. PAULO SILVEIRA DATA: 02/09/2020 *
;* DISCIPLINA: SISTEMAS A MICROCONTROLADORES *
;* *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* DESCRIÇÃO DO ARQUIVO *
;*-------------------------------------------------------------------------------------------------------------------------------------------------*
;* *
;* *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* ARQUIVOS DE DEFINIÇÕES *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

#INCLUDE <P16F628A.INC> ;ARQUIVO PADRÃO MICROCHIP PARA 16F628A


__CONFIG _BOREN_ON & _CP_OFF & _PWRTE_ON & _WDT_ON & _LVP_OFF & _MCLRE_ON & _XT_OSC

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* PAGINAÇÃO DE MEMÓRIA *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

;DEFINIÇÃO DE COMANDOS DE USUÁRIO 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 MAMÓRIA

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* VARIÁVEIS *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

; DEFINIÇÃO DOS NOMES E ENDEREÇOS DE TODAS AS VARIÁVEIS UTILIZADAS


; PELO SISTEMA

CBLOCK 0x20 ;ENDEREÇO INICIAL DA MEMÓRIA DE


;USUÁRIO

W_TEMP ;REGISTRADORES TEMPORÁRIOS PARA


STATUS_TEMP ;INTERRUPÇÕES
;ESTAS VARIÁVEIS NEM SERÃO UTI-
;LIZADAS
ENDC ;FIM DO BLOCO DE MEMÓRIA

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* FLAGS INTERNOS *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; DEFINIÇÃO DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* CONSTANTES *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; DEFINIÇÃO DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* ENTRADAS *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

; DEFINIÇÃO DE TODOS OS PINOS QUE SERÃO UTILIZADOS COMO ENTRADA


; RECOMENDAMOS TAMBÉM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1)

#DEFINE CX_HI PORTA,1 ;PORTA DA BOIA ALTA DA CAIXA

#DEFINE CX_LO PORTA,2 ;PORTA DA BOIA BAIXA DA CAIXA

#DEFINE CS_HI PORTA,3 ;PORTA DA BOIA ALTA DA CISTERNA

#DEFINE CS_LO PORTA,3 ;PORTA DA BOIA BAIXA DA CISTERNA


;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* SAÍDAS *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

; DEFINIÇÃO DE TODOS OS PINOS QUE SERÃO UTILIZADOS COMO SAÍDA


; RECOMENDAMOS TAMBÉM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1)

#DEFINE MT_BB PORTB,3 ;PORTA DA BOMBA

#DEFINE CS_VV PORTB,4 ;PORTA DA VÁLVULA

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* VETOR DE RESET *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

ORG 0x00 ;ENDEREÇO INICIAL DE PROCESSAMENTO


GOTO INICIO

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* INÍCIO DA INTERRUPÇÃO *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

; AS INTERRUPÇÕES NÃO SERÃO UTILIZADAS, POR ISSO PODEMOS SUBSTITUIR


; TODO O SISTEMA EXISTENTE NO ARQUIVO MODELO PELO APRESENTADO ABAIXO
; ESTE SISTEMA NÃO É OBRIGATÓRIO, MAS PODE EVITAR PROBLEMAS FUTUROS

ORG 0x04 ;ENDEREÇO INICIAL DA INTERRUPÇÃO


RETFIE ;RETORNA DA INTERRUPÇÃO

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* INICIO DO PROGRAMA *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

INICIO
BANK0 ;ALTERA PARA O BANCO 0
MOVLW B'00000111'
MOVWF CMCON ;DEFINE O MODO DE OPERAÇÃO DO COMPARADOR ANALÓGICO

CLRF PORTA ;LIMPA O PORTA


CLRF PORTB ;LIMPA O PORTB

BANK1 ;ALTERA PARA O BANCO 1


MOVLW B'00011110'
MOVWF TRISA ;DEFINE RA1, RA2, RA3 E RA4 COMO ENTRADAS E DEMAIS
;COMO SAÍDAS
MOVLW B'00000000'
MOVWF TRISB ;DEFINE TODO O PORTB COMO SAÍDA
MOVLW B'10000000'
MOVWF OPTION_REG ;PRESCALER 1:2 NO TMR0
;PULL-UPS DESABILITADOS
;AS DEMAIS CONFG. SÃO IRRELEVANTES
MOVLW B'00000000'
MOVWF INTCON ;TODAS AS INTERRUPÇÕES DESLIGADAS
BANK0 ;RETORNA PARA O BANCO 0

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* INICIALIZAÇÃO DAS VARIÁVEIS *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* ROTINA PRINCIPAL *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
MAIN

DISPONIVEL_BOMBA
BTFSC CS_LO
GOTO SCAN_BOMBA
BCF MT_BB
GOTO SENSOR_CISTERNA_BAIXO

SCAN_BOMBA
BTFSS CX_LO
GOTO LIGAR_BOMBA
BTFSS CX_HI
GOTO MAIN
GOTO DESLIGAR_BOMBA

LIGAR_BOMBA
BSF MT_BB
GOTO MAIN

DESLIGAR_BOMBA
BCF MT_BB
GOTO MAIN

SENSOR_CISTERNA_BAIXO
BTFSC CS_LO
GOTO DESLIGAR_VALVULA
GOTO LIGAR_VALVULA

LIGAR_VALVULA
BSF CS_VV
GOTO SENSOR_CISTERNA_BAIXO

DESLIGAR_VALVULA
BTFSS CS_HI
GOTO SENSOR_CISTERNA_BAIXO
BCF CS_VV
BTFSS CX_LO
GOTO MAIN
GOTO SENSOR_CISTERNA_BAIXO

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* FIM DO PROGRAMA *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

END ;OBRIGATÓRIO

Você também pode gostar