Está en la página 1de 5

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

;
; TX_PRESEN�A_HT6P20B_SLEEP
;
; GERAR CODIFICA��O SIMILAR AO CI HTP620B COM PIC 12f629
; TRANSMITIR POR UM PERIODO DE 3 SEGUNDOS, ESPERAR 40 SEGUNDOS
; E REINICIAR A TRANSMISS�O ACIMA EM LOOP.
; ESTA VERS�O USA O WDT PARA ACORDAR O CHIP DA FUN��O 'SLEEP' A CADA 2,03
SEGUNDOS ,
; DECREMENTANDO UM CONTADOR .
; FOI OBTIDO UM MENOR CONSUMO DE BATERIA, REDUZINDO DE 12 MA, PARA ALGUNS
; DECIMOS DE MILIAMPERES.
;
; AUTOR: CLAUDIO L�RIOS DATA:24-04-2012
;
; BLOG 'LARIOS.TECNOLOGIA.WS'
; PROCESSADOR: PIC 12F629/675
; OBJETIVO: GERAR POR SOFTWARE, O PROTOCOLO PRODUZIDO PELO INTEGRADO HT6P20B
; TRANSMITINDO DE TEMPOS EM TEMPOS, VISANDO APLICA��O DE 'CHAVEIRO DE PRESEN�A'
; ONDE O RECEPTOR, ENQUANTO ESTIVER RECEBENDO SINAL, N�O BLOQUEIA/DISPARA ALARME
; OBS. MATERIAL �NICAMENTE DE CARATER DID�TICO E SUJEITO A BUGS AINDA N�O
OBSERVADOS .

; PINAGENS PARA O PIC12F629 (675):

; PINO 1- +VCC
; PINO 3- NC
; PINO 2- NC
; PINO 4- PULLUP 10K AO VCC
; PINO 5- N�O USADO
; PINO 6- N�O USADO
; PINO 7- SA�DA DE RF (SA�DA PARA O TX DE RF)
; PINO 8- GND
;----------------------------------------------------------------------------------
-----------------
;DEFINI��ES DO USU�RIO:
;----------------------------------------------------------------------------------
-----------------
;ESCOLHA AQUI O MODELO DO MICROCONTROLADOR A SER USADO:
#DEFINE PIC629
;#DEFINE PIC675
;----------------------------------------------------------------------------------
------------------
;ESCOLHA AQUI O N�MERO DO 'SERIAL NUMBER' A SER TRANSMITIDO:
SER0 EQU 0X01
SER1 EQU 0X23
SER2 EQU 0X0F
;OBS. (OS BITS 6 E 7 DE SER2 CORRESPONDEM AOS BOT�ES )
;----------------------------------------------------------------------------------
------------------
;ESCOLHA AQUI O PERIDO DO PULSO BASE
T_PULSO EQU .164 ;164D PARA 500 MICROSEG. (LAMBDA: J� ACERTADO PARA C.REMOTOS
COMERCIAIS =+- 500 US)
;----------------------------------------------------------------------------------
------------------
;
===================================================================================
===================
; ESCOLHA AQUI A QUANTIDADE DE TRANSMISS�ES QUE SER�O FEITAS SUCESSIVAMENTE NO
CICLO 'TRANSMITIR'
N_TRANSMISS�ES EQU .30 ;N�MERO DE VEZES QUE SER� TRANSMITIDO
SUCESSIVAMENTE EM UM PERIODO
; ;(EM TORNO DE 10 TRANSMISS�ES POR SEGUNDO PARA O
PULSO BASE DE .164)
;
===================================================================================
===================
; ESCOLHA AQUI O TEMPO DO INTERVALO SEM TRANSMISS�ES
TEMPO_DELAY_SEG EQU .17 ; --> VALOR x 2,5 SEGUNDOS -->17 X 2,5= 42,5
SEGUNDOS

;
===================================================================================
===================
;
===================================================================================
===================
;ESCOLHA AQUI QUAIS BOT�ES SER�O ENVIADOS COMO 'ACIONADOS'
;#DEFINE ACIONADO_BOT�O_ESQ
;#DEFINE ACIONADO_BOT�O_DIR
#DEFINE ACIONADO_BOT�O_AMBOS
;
===================================================================================
===================

IFDEF PIC629
#INCLUDE<P12F629.INC> ; ARQUIVO PADRAO
ENDIF

IFDEF PIC675
#INCLUDE<P12F675.INC> ; ARQUIVO PADRAO
ENDIF

__CONFIG _BODEN_OFF & _CP_OFF & _PWRTE_OFF & _WDT_ON & _MCLRE_ON &
_INTRC_OSC_NOCLKOUT

; PAGINACAO DE MEMORIA;
#DEFINE BANK0 BCF STATUS,RP0 ;SETA BANK0 DE MEMORIA
#DEFINE BANK1 BSF STATUS,RP0 ;SETA BANK1
; VARIAVEIS
CBLOCK 0X20 ;ENDERECO INICIAL DE MEMORIA
V3,V2,V1,R1,R2,R3,R4,R5,R6,R7, NT,FLAGS,TEMPO
ENDC
;======================DEFINICAO DE BITS E
FLAGS==============================================

#DEFINE SAIDA GPIO,0 ; SAIDA PARA DADO PINO 7


#DEFINE IN0 GPIO,4 ;ENTRADA BOT�O 0 PINO 3
#DEFINE IN1 GPIO,5 ;ENTRADA BOT�O 1 PINO 2
#DEFINE FLAG_W FLAGS,0 ;FLAG DE CARGA INICIAL
ERRORLEVEL -302 ;ELIMINA MENSAGEM DE ERRO

;
===================================================================================
===========
;VETOR DE RESET
ORG 0X00
GOTO INICIO
;..................................................................................
..............
;VETOR DE INTERRUPCAO
ORG 0X04
RETFIE
;..................................................................................
..............
;
;
INICIO
BANK1 ;BANCO 1
MOVLW .0
MOVWF INTCON ;DESLIGA TODAS INTERRUPCOES
MOVLW B'111110' ;SAIDA EM GP0
MOVWF TRISIO ;
MOVLW b'10001111' ;PRESCALLER PARA WDT /64
MOVWF OPTION_REG

IFDEF PIC675
MOVLW .0
MOVWF ANSEL ;LIBERA PORTAS DO AD
ENDIF

BANK0
MOVLW .7 ;DESLIGA O COMPARADOR
MOVWF CMCON ;IDEM
CLRF GPIO
CLRF FLAGS
MOVLW .1
MOVWF TEMPO

MAIN
DECFSZ TEMPO,F
GOTO AINDA_N�O_TRANSMITE
MOVLW TEMPO_DELAY_SEG
MOVWF TEMPO
CLRWDT
MOVLW N_TRANSMISS�ES
MOVWF NT

TX_NOVAMENTE
MOVLW SER2
MOVWF V3
MOVLW SER1
MOVWF V2
MOVLW SER0
MOVWF V1

BCF V3,7
BCF V3,6
IFDEF ACIONADO_BOT�O_ESQ
BSF V3,7
ENDIF
IFDEF ACIONADO_BOT�O_DIR
BSF V3,6
ENDIF
IFDEF ACIONADO_BOT�O_AMBOS
BSF V3,7
BSF V3,7
ENDIF
;===============================================================

ENVIAR:

CALL STARTBIT
MOVLW .24 ;QUANTIDADE DE BITS A TRANSMITIR
MOVWF R5
VOLT10:
BCF STATUS,C
RRF V3,F
RRF V2,F
RRF V1,F
BTFSC STATUS,C
GOTO EB1
CALL BIT0
VV13:
DECFSZ R5,F
GOTO VOLT10
;-------------------------------------------------
ANTICODE:
CALL BIT0 ;GERA O 'ANTICODE'
CALL BIT1
CALL BIT0
CALL BIT1

;-----------------------------------------------------
PAUSA:
MOVLW .23 ;23 CLOCKS DE PAUSA FINAL
MOVWF R6
RTY:
CALL DELAY1CK
DECFSZ R6,F
GOTO RTY

CLRWDT
DECFSZ NT,F
GOTO TX_NOVAMENTE ;VOLTA PARA TRANSMITIR DE NOVO

;==================================================================
;INTERVALO SEM TRANSMISS�O
AINDA_N�O_TRANSMITE
CLRWDT
SLEEP
NOP
GOTO MAIN

;-------------------------------------------------
EB1:
CALL BIT1
GOTO VV13
;=================================================
; SUB-ROTINAS

;=================================================
;DELAY DE 1 SEGUNDO
DELAY_1SEG
MOVLW .4
MOVWF R3
PF2
MOVLW .250
MOVWF R2
PF1
MOVLW .250
MOVWF R1
NOP
DECFSZ R1,F
GOTO $-2
DECFSZ R2,F
GOTO PF1
DECFSZ R3,F
GOTO PF2
RETURN
;==================================================

DELAY1CK:
MOVLW T_PULSO ;GERA ATRASO DE TEMPO
MOVWF R7
DECFSZ R7,F
GOTO $-1
RETURN
BIT0:
BCF SAIDA ;GERA BIT '0' NA SA�DA
CALL DELAY1CK
BSF SAIDA
CALL DELAY1CK
CALL DELAY1CK
BCF SAIDA
RETURN
BIT1:
BCF SAIDA ;GERA BIT '1' NA SA�DA
CALL DELAY1CK
CALL DELAY1CK
BSF SAIDA
CALL DELAY1CK
BCF SAIDA
RETURN
STARTBIT:
BSF SAIDA ;GERA STARTBIT '1' NA SA�DA
CALL DELAY1CK
BCF SAIDA
RETURN

END