;********************************************************************* ; ; TX_PRESENÇA_HT6P20B ; ; 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. ; ; AUTOR: CLAUDIO LÁRIOS DATA:26-01-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 .60 ;NÚMERO DE VEZES QUE SERÁ TRANSMITIDO SUCESSIVAMENTE EM UM PERIODO ; ;(EM TORNO DE 20 TRANSMISSÕES POR SEGUNDO PARA O PULSO BASE DE .164) ;====================================================================================================== ; ESCOLHA AQUI O TEMPO DO INTERVALO SEM TRANSMISSÕES (EM SEGUNDOS MIN=1 MAX= 255 SEG OU 4,25 MIN) TEMPO_DELAY_SEG EQU .40 ;NÚMERO DE SEGUNDOS DO INTERVALO ENTRE CICLO DE TRANSMISSÕES ;====================================================================================================== ;====================================================================================================== ;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 ; ARQUIVO PADRAO ENDIF IFDEF PIC675 #INCLUDE ; ARQUIVO PADRAO ENDIF __CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _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 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 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 0XFF MOVWF WPU CLRF OPTION_REG IFDEF PIC675 MOVLW .0 MOVWF ANSEL ;LIBERA PORTAS DO AD ENDIF BANK0 MOVLW .7 ;DESLIGA O COMPARADOR MOVWF CMCON ;IDEM CLRF GPIO MAIN 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 DECFSZ NT,F GOTO TX_NOVAMENTE ;VOLTA PARA TRANSMITIR DE NOVO ;================================================================== ;INTERVALO SEM TRANSMISSÃO MOVLW TEMPO_DELAY_SEG MOVWF R4 CALL DELAY_1SEG DECFSZ R4,F GOTO $-2 GOTO INICIO ;------------------------------------------------- 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