Você está na página 1de 3

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

;
NOME DO PROJETO: INTERRUPTOR LIGA/DESLIGA COM 12F629
;
CLIENTE: EDSON
;
DESENVOLVIDO POR: ROBERTO TAKESHI MATINO
;
VERSAO: 1.0
DATA: 17/08/10
;******************************************************************************
;
DESCRICAO DO ARQUIVO:
;
;INTERRUPTOR LIGA/DESLIGA COM LED DE STAND BY.
;
;
;******************************************************************************
;
ARQUIVOS DE DEFINICOES
#include <p16f628a.inc>
__CONFIG _BOREN_ON & _CP_ON & _DATA_CP_OFF & _PWRTE_ON & _WDT_ON & _LVP_OFF &
_MCLRE_OFF & _INTOSC_OSC_NOCLKOUT
;*******************************************************************************
;
PAGINACAO DE MEMORIA
;DEFINICAO DE COMANDOS DE USUARIO PARA ALTERACAO DA PAGINA DE MEMORIA
#DEFINE
#DEFINE

BANK0 BCF STATUS,RP0 ;SETA BANK 0 DE MEMORIA


BANK1 BSF STATUS,RP0 ;SETA BANK 1 DE MEMORIA

;******************************************************************************
;
VARIAVEIS
;DEFINICAO DOS NOMES E ENDERECOS DE TODAS AS VARIAVEIS UTILIZADAS PELO SISTEMA
CBLOCK 0X20

;ENDEREO INICIAL DA MEMORIA DO USUARIO

FILTRO_BOTOES

;FILTRO PARA RUIDOS

ENDC

;FIM DO BLOCO DE MEMORIA

;******************************************************************************
;
FLAGS INTERNOS
;DEFINIAO DOS FLAGS UTILIZADOS PELO SISTEMA
;******************************************************************************
;
CONSTANTES
;DEFINIAO DAS CONSTANTES UTILIZADAS PELO SISTEMA
FILTRO_TECLA

EQU

.250

;FILTRO PARA BOTOES

;******************************************************************************
;
ENTRADAS
;DEFINIAO DOS PINOS QUE SERAO UTILIZADOS COMO ENTRADA
;COMENTAR O SIGNIFICADO DOS ESTADOS (0 E 1)
#DEFINE

BOTAO1 PORTA,2

;PORTA DO BOTAO
;0 -> PRESSIONADO
;1 -> LIBERADO

;******************************************************************************
;
SAIDAS
;DEFINICAO DOS PINOS QUE SERAO UTILIZADOS COMO SAIDA
;COMENTAR O SIGNIFICADO DOS PINOS (0 E 1)
#DEFINE
#DEFINE
#DEFINE

LED_EQUIP
LED_STANDBY
SAIDA_EQUIP

PORTB,0
PORTB,1
PORTB,3

;LED INDICADOR DE EQUIPAMENTO LIGADO


;LED INDICADOR DE STANDBY
;SAIDA PARA O EQUIPAMENTO

;******************************************************************************
;
INICIALIZAAO DA EEPROM

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

0X000

GOTO

;ENDERECO INICIAL DE PROCESSAMENTO

INICIO

;******************************************************************************
;
INICIO DAS INTERRUPCOES
ORG

0X0004

RETFIE

;ENDEREO INICIAL DA INTERRUPCAO


;RETORNA DA INTERRUPO (HABILITA GIE)

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

PORTA
PORTB

;LIMPA O PORTA
;LIMPA O PORTB

BANK1
MOVLW B'00000100'
MOVWF TRISA

;ALTERA PARA O BANCO 1


;DEFINE RA2 COMO ENTRADA E
;DEMAIS COMO SAIDA

MOVLW B'00000000'
MOVWF TRISB

;DEFINE O PORTB COMO SAIDA

MOVLW B'10001010'
MOVWF OPTION_REG

;PRESCALER 1:2 PARA WDT


;PULL-UPS DESABILITADOS
;AS DEMAIS CONFIGURACOES SAO IRRELEVANTES
;TODAS AS INTERRUPCOES DESLIGADAS

MOVLW B'00000000'
MOVWF INTCON
BANK0
MOVLW B'00000111'
MOVWF CMCON

;RETORNA AO BANCO 0
;DEFINE O MODO DE OPERACAO DO COMP. ANALOGICO

;******************************************************************************
; AS INTRUES A SEGUIR FAZEM COM QUE O PROGRAMA TRAVE QUANDO HOUVER UM
; RESET OU POWER-UP, MAS PASSE DIRETO SE O RESET FOR POR WDT. DESTA FORMA,
; SEMPRE QUE O PIC LIGADO, O PROGRAMA TRAVA, AGUARDA UM ESTOURO DE WDT
; E COMEA NOVAMENTE. ISTO EVITA PROBLEMAS NO START-UP DO PIC.
BTFSC STATUS,NOT_TO
GOTO $

; RESET POR ESTOURO DE WATCHDOG TIMER ?


; NO - AGUARDA ESTOURO DO WDT
; SIM

;******************************************************************************
;
INICIALIZACAO DAS VARIAVEIS
BSF

LED_STANDBY

;ACENDE LED_STANDBY

;******************************************************************************
;
ROTINA PRINCIPAL
MAIN
VARRE
CLRWDT
BTFSS BOTAO1
GOTO TRATA_BOTAO_INTERR
MOVLW FILTRO_TECLA

;LIMPA WATCHDOG TIMER


;O BOTO 1 EST PRESSIONADO?
;SIM - PULA PARA TRATA_BOTAO_PROG
;NAO
;CARREGA NO W O VALOR DO FILTRO_TECLA

MOVWF FILTRO_BOTOES

;SALVA EM FILTRO_BOTOES

GOTO VARRE
TRATA_BOTAO_INTERR
MOVF FILTRO_BOTOES,F
BTFSC STATUS,Z
GOTO VARRE
DECFSZ FILTRO_BOTOES,F
GOTO VARRE
BTFSS LED_EQUIP
GOTO ENTRA_ACIONA_EQUIP

;FILTRO J IGUAL A ZERO?


;SIM - VOLTA PARA A VARREDURA
;NO - FIM DO FILTRO?
;NO - VOLTA PARA A VARREDURA
;SIM - BOTO PRESSIONADO
;LED DO EQUIPAMENTO ESTA LIGADO?
;NAO - ENTRA DADOS DA PROGRAMAAO
;SIM

SAI_ACIONA_EQUIP
BCF
BSF
BCF
GOTO

LED_EQUIP
LED_STANDBY
SAIDA_EQUIP

;APAGA LED_EQUIP
;ACENDE LED_STANDBY
;DESLIGA EQUIPAMENTO

VARRE

ENTRA_ACIONA_EQUIP
BCF
BSF
BSF

LED_STANDBY
LED_EQUIP
SAIDA_EQUIP

;APAGA LED_STANDBY
;ACENDE LED_EQUIP
;LIGA EQUIPAMENTO

GOTO VARRE
;******************************************************************************
;
FIM DO PROGRAMA
END

Você também pode gostar