RECEPTOR DE CONTROLE REMOTO GENERICO PARA HCS200…301 COM PIC 12F629 E 16F628A

GOSTARIA DE TER OPÇÃO DA FAMILIA PIC PARA SEU RECEPTOR DE CONTROLE REMOTO? ENTÃO ESTA RESOLVIDO !!! SEGUINDO O MESMO ESTILO DO ARTIGO “RECEPTOR DE CONTROLE REMOTO GENERICO PARA HCS200..301 COM AT89C2051” VOCE VERÁ AGORA MAIS 2 APLICAÇÕES GENÉRICAS BASEADAS NAS “ NOTE APLICATTIONS” DA MICROCHIP PUBLICADAS NA INTERNET.

PRIMEIRAMENTE, VAMOS VER UM RECEPTOR COM PIC16F628A COM 4 SAIDAS (LIGADAS A LEDS) QUE COMANDARÃO A SUA FUTURA APLICAÇÃO.
TUDO NO MESMO ESQUEMA. TEM QUE ESCOLHER A KEY (OU USAR A QUE FOI COMPILADA NO ARQUIVO HEX = ‘0123456789ABCDEF’) COMUM NO RECEPTOR E TRANSMISSOR. TEM QUE USAR DISC=SERIAL NUMBER . CONFORME O HCS USADO NO CHAVEIRINHO , TEM QUE PROGRAMAR A WORD ‘CONFIG’. VEJA SEMPRE OS DATASHETS DO COMPONENTE QUE SERÁ USADO.
NOVAMENTE, NÃO ESQUECER QUE A FREQUENCIA DO RECEPTOR TEM QUE SER IGUAL AO DO CONTROLE REMOTO (CHAVEIRINHO). LEIA OS ARTIGOS SOBRE ISTO NESTE BLOG. TUDO O ACIMA SE APLICA AOS DOIS CIRCUITOS.
A SEGUNDA APLICAÇÃO, MAIS SIMPLES, USA UM PEQUENO PIC12F629 PARA CONTROLAR 2 SAIDAS APENAS(LED1 E LED 2). MAS , GERALMENTE, É SUFICIENTE PARA A MAIORIA DAS APLICAÇÕES COMO ALARMES E CONTROLES REMOTOS DE PORTÃO. AMBOS OS ESQUEMA PERMITEM, POR DEFINIÇÃO DE PROGRAMA, MEMÓRIZAR ATÉ 15 CONTROLES (CHAVEIRINHOS).

EM RESUMO:
1) VOCE ADQUIRE UM PAR DE CONTROLE REMOTO (ESCOLHA 2 IGUAIS COM O MESMO CHIP HCS (PODE SER 200 , 201, 300 OU 301), DE QUALQUER FABRICANTE.
2) VOCE PROGRAMA UMA NOVA KEY (A SUA KEY OU A CITADA ACIMA SE FOR USAR O ARQUIVO COMPILADO) ,DEIXA AS OUTRAS WORDS TUDO ‘0000’
EXCETUANDO A WORD “CONFIG” QUE DEVE SER ‘ 0030’ PARA 200,300,301 E ‘0000’ PARA 201 . PODERÁ USAR O HCS_PROG OU HCS_PROG_TINY. NÃO PRECISA TIRAR O CHIP (GERALMENTE SMD) DA PLACA. APENAS, SOLDE PEQUENOS FIOZINHOS ( DO TIPO DE TELEFONE) E CONECTE NO PROGRAMADOR. AO FAZER ISTO , TIRE A BATERIA DE 12 VOLTS FORA DO CONTROLE. NÃO ESQUECA DE ATERRAR OS PINOS DA SAIDA S0 E S1.(VEJA DATASHEET DO HCS EM USO, NA SEÇÃO ‘PROGRAMAÇÃO’).
3) MONTE O CIRCUITO DO RECEPTOR (PROTOBOARD OU PLACA UNIVERSAL, DAQUELAS QUE VAI LIGANDO COM FIOZINHOS). PROGRAME AGORA O MICROCONTROLADOR COM O ARQUIVO HEX APROPRIADO. USE O WINPIC, IC_PROG OU QUALQUER OUTRO PROGRAMADOR COM UM HARDWARE COMO O JDM OU SIMILARES.
4) FAÇA O APRENDIZADO DE CADA CONTROLE , APERTANDO PRIMEIRO A TECLA ‘LEARN’ E DEPOIS ACIONANDO O CONTROLE REMOTO. FAÇA ISTO COM CADA CONTROLE. APÓS ISTO, EM USO, A CADA BOTÃO APERTADO NO CONTROLE REMOTO DEVERÁ ACENDER UM LED CORRESPONDENTE NO RECEPTOR.
5) AGORA , USE-O EM SEU NOVO PROJETO!!!

CHEGA DE BLÁ BLÁ BLÁ !!!

VEJA O ESQUEMA DA APLICAÇÃO 1 COM PIC 16F628A:

SEGUE ABAIXO ARQUIVO ASM PARA VERSÃO PIC16F628A:

DECPIC628A_ASM

SEGUE ABAIXO ARQUIVO HEX PARA VERSÃO PIC16F628A:

DECPIC628A_HEX

SEGUE ABAIXO, SUGESTÃO DE PLACA VERSÃO 16F628A :

placa_gen_628pdf

SEGUE ABAIXO, SUGESTÃO DE PLACA VERSÃO 16F628A COM COMPONENTES VISTO PELO LADO COBREADO E LISTA DE MATERIAIS:

placa_gen_628_montagem_pdf

VEJA O ESQUEMA DA APLICAÇÃO 2COM PIC 12F629:

SEGUE ABAIXO ARQUIVO ASM PARA VERSÃO PIC12F629:

DECPIC629_ASM

SEGUE ABAIXO ARQUIVO HEX PARA VERSÃO PIC12F629:

DECPIC629_HEX

SEGUE ABAIXO A PLACA PARA A VERSÃO 12F629:

placa_gen_629pdf

SEGUE ABAIXO A PLACA PARA A VERSÃO 12F629 COM COMPONENTES MONTADOS VISTO PELO LADO COBREADO E LISTA DE MATERIAIS:

placa_gen_629_montagem_pdf

ATÉ O PRÓXIMO ARTIGO !!!

Curiosidades:
Cuidado! Você está sendo vigiado!
O preço de se levar uma vida muito ‘corrida’
Sua cama e seu sono

Outros artigos:

Ensine valores morais aos seus filhos
Casais – Como administrar bem o dinheiro
Tenha um conceito correto sobre desastres naturais
Como sobreviver ao primeiro ano de casamento

99 comments on “RECEPTOR DE CONTROLE REMOTO GENERICO PARA HCS200…301 COM PIC 12F629 E 16F628A

      1. OLA CLAUDIO, AINDA NÃO CONSEGUI FAZER FUNCIONAR, A ALTERAÇÃO FICO ASSIM CONFORME A BAIXO!!
        *******************************************

        ;**************************************************************************
        ; RX_GEN_HT6P20B_V4.ASM ( ALTERAÇAO )
        ;
        ;
        ; RECEPTOR RF PARA CONTROLE REMOTOS (CHAVEIRINHOS) COM CI HT6P20B
        ;
        ; PARA DECODIFICAR UTILIZA UM PIC 12F629 (OPCIONALMENTE UM 12F675, DES-
        ; COMENTANDO/COMENTANDO AS LINHAS CITADAS NO TEXTO).
        ;
        ; CLAUDIO INICIO: 27-07-2012 TERMINO:28-06-2012
        ; REVISADO : 05-8-2012 (ELIMINADO ‘BUG’ QUE TRAVAVA SOB INTERFERENCIA
        ; FORTE NA ENTRADA ‘RFIN’)
        ; VERSÃO4: MANTÉM LEDS ACESOS ENQUANTO BOTÃO FICAR PRESSIONADO (NÃO PISCA)
        ;**************************************************************************
        ;
        ; GRAVAR CONTROLE: APERTE UM BOTÃO DO CONTROLE E MANTENHA APERTADO.
        ; APERTE TAMBÉM O BOTÃO ‘LEARN’ NA PLACA (PINO 4 DO PIC 12F629 A MASSA)E
        ; SOLTE-O EM MENOS DE 1 SEGUNDOS. O LED ‘LEARN'(PINO 2) PISCARÁ 1
        ; VEZ, PARA INDICAR ‘CODE APRENDIDO’. REPITA ISTO COM O OUTRO BOTÃO DO CONTROLE
        ; E COM TODOS OS CONTROLES REMOTOS QUE FOR UTILIZAR, UM POR VEZ.
        ; APAGAR TODOS OS CONTROLES DA MEMÓRIA: APERTAR BOTÃO ‘LEARN’ NA PLACA E
        ; MANTENHA PRESSIONADO POR MAIS DE 10 SEGUNDOS. O LED ‘LEARN’ (PINO 2) PISCARÁ
        ; 3 VEZES , INDICANDO O PLENO APAGAMENTO DE TODOS OS SENSORES DA MEMÓRIA.
        ; APÓS ISTO, CADA CONTROLE DEVERÁ SER ‘REAPRENDIDO’ NOVAMENTE PARA OPERAR.
        ;***************************************************************************
        ; DESCOMENTAR/COMENTAR CONFORME MODELO ESCOLHIDO
        ; LIST P=12f675 , R=DEC
        LIST P=12f629 , R=DEC
        ; INCLUDE “P12F675.INC”
        INCLUDE “P12F629.INC”
        ;————————–
        ERRORLEVEL -302
        __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _BODEN_ON & _MCLRE_OFF

        #DEFINE BANK0 BCF STATUS,RP0 ;SETA BANK0 DE MEMORIA
        #DEFINE BANK1 BSF STATUS,RP0 ;SETA BANK1
        #DEFINE FLAG FLAGS,0 ;FLAG DE SITUAÇÃO
        #DEFINE FLAG1 FLAGS,1 ;FLAG DE NOVA LEITURA
        #DEFINE FLAGGR FLAGS,2 ;FLAG DE ‘LEARN’ APRENDER
        #DEFINE SIN GPIO,0 ;PINO 7 IN RF
        #DEFINE LRN GPIO,3 ;PINO 4 IN LEARN BOTTON
        #DEFINE LED GPIO,5 ;PINO 2 SAIDA LED ‘LEARN’
        #DEFINE LED2 GPIO,2 ;PINO 5- SAIDA DO LED2
        #DEFINE LED1 GPIO,1 ;PINO 6- SAIDA DO LED1
        #DEFINE FLAG_TRAVA_LED3 FLAGS,3 ;FLAG TRAVA

        CBLOCK 0X20
        RES3,RES2,RES1,RES0,AUX,C3,C2,C1,C0,WS,TEMP,BITCOUNTER,FLAGS,TL0,TL1,TL2,Z2,Z1,Y1,Y2
        LcdDelayCounter,LcdDelayCounter1,tmpLcdRegister,tmpLcdRegister1,SITUAÇÃO
        temp,SDATA,AUX2 ,LC,HC ,CONT,RES3A,RES2A,RES1A,RES0A,X,R0,R1,R2,TMP1,TMP2,TMP3,ADDRESS,TMP
        ENDC

        WRCFG EQU B’00000000′ ; PORTB: EEPROM WRITE TRI-STATE VALUE
        YTRISA EQU B’001001′ ; PORTA: TRI-STATE VALUE
        TMAX EQU .50 ;TEMPO MAXIMO DO SINAL LOW
        QBYTE EQU .28 ;QUANTIDADE DE BYTES A SER RECEBIDO (22 ADRESS+ 2 DADO+ 4 ANTICODE)
        TGR EQU .255 ;TEMPO DE BOTÃO APERTADO PARA APAGAR GRAVAÇAO

        T_DESL_LED EQU .20 ;TEMPO MÁXIMO QUE LEDS FICAM ACESOS APÓS CESSAR TRANSMISSÃO

        ORG 0X00
        GOTO START
        ORG 0X04
        RETFIE

        START:
        MOVLW 0X07
        MOVWF CMCON ;DESLIGA COMPARADORES
        CLRF GPIO ; RESET PORT
        MOVLW YTRISA ; SETUP PORTA
        TRIS GPIO

        ;DESCOMENTAR ABAIXO PARA 12F675
        ; BANK1
        ; MOVLW .0
        ; MOVWF ANSEL ;LIBERA PORTAS DO AD (somente 12f675)
        ; BANK0
        CLRF FLAGS ;APAGA REGISTRADOR DE FLAGS
        MOVLW TGR
        MOVWF Z2
        CLRF Z1 ;LIMPA REGISTRADORES
        INICIO:

        CLRF RES3
        CLRF RES2
        CLRF RES1
        CLRF RES0
        MOVLW QBYTE ;PREPARA PARA A RECEPÇÃO COM NUMERO DE BITS A RECEBER
        MOVWF BITCOUNTER

        L0
        BCF FLAG ;LIMPA FLAG E REGISTRADORES DE RECEPÇÃO
        CLRF HC
        CLRF LC
        L1
        ;———————————

        BTFSS LRN ;TESTA BOTÃO ‘LEARN’ APERTADO
        GOTO TAPAGAMENTO ;APERTADO, COMEÇA A CONTAR TEMPO MAX. DE APAGAMENTO
        MOVLW TGR
        MOVWF Z2 ;RECARGA DO TEMPO DE APAGAMENTO
        CLRF Z1 ;LIMPA REGISTRADORES
        L1H
        GOTO SS5

        TAPAGAMENTO ;APAGAR TODOS OS CONTROLES DA MEMÓRIA
        DECFSZ Z1,F
        GOTO L1H
        DECFSZ Z2,F
        GOTO L1H
        CALL APAGAEEPROM ;ATINGIU TEMPO MAXIMO: APAGAR MEMÓRIA

        BSF LED ;ACENDE LED (UMA PISCADA)
        MOVLW .10
        CALL DELAYM
        BCF LED ;APAGA LED
        MOVLW .10
        CALL DELAYM
        BSF LED ;ACENDE LED (UMA PISCADA)
        MOVLW .10
        CALL DELAYM
        BCF LED ;APAGA LED
        MOVLW .10
        CALL DELAYM
        BSF LED ;ACENDE LED (UMA PISCADA)
        MOVLW .10
        CALL DELAYM
        BCF LED ;APAGA LED
        MOVLW .10
        CALL DELAYM

        BTFSS LRN ;AGUARDA SOLTAR BOTÃO ‘LEARN’
        GOTO $-1
        GOTO INICIO

        ;===================ROTINA DE RECEPÇÃO==========================
        SS5:
        ;A

        BTFSS FLAG ;TESTA FLAG DE HUM/ZERO RECEBIDO
        GOTO L2 ;FLAG=0
        ;——————————–
        ;B
        BTFSS SIN ;SIN ? TESTA SINAL DE ENTRADA DO RECEPTOR DE RF
        GOTO M0 ; SIN=0
        ;———————————-
        L2
        ;C
        BTFSS SIN ;SIN ?
        GOTO LA1 ;SIN=0
        ;————————————-
        ;E
        BSF FLAG ;SIN=1
        INCF HC,F
        BTFSC STATUS,Z
        DECF HC,F
        GOTO LA2 ;VAI CONTAR TEMPO DE 50 MICRO SEGUNDOS
        ;———————————————————
        LA1
        ;D
        INCF LC,F ;INCREMENTA REGISTRADOR DE LOW SIGNAL NA ENTRADA RF
        BTFSC STATUS,Z
        DECF LC,F
        LA2

        DECFSZ Y1,F ;CONTADOR DE TEMPO DE DESLIGAMENTO DE SAIDAS
        GOTO J0
        DECFSZ Y2,F ;CONTADOR DE TEMPO DE DESLIGAMENTO DE SAIDAS
        GOTO J0
        BCF LED1 ;APAGA LEDS
        BCF LED2
        BCF FLAG_TRAVA_LED3 ;ESTE FLAG CONTROLARÁ O ON/OFF DO LED 3 ;mudança aqui!!!!!!!!!!!!!
        INCF Y1,F
        INCF Y2,F

        MOVLW .11 ;.11 = 80 MICROSEG (ACERTA TEMPO ENTRE LEITURAS DA ENTRADA DE RF)
        MOVWF CONT
        DECFSZ CONT,F
        GOTO $-1
        GOTO L1

        M0
        ;———————————-
        ;F
        MOVFW LC ;TESTA SE NÃO PASSOU DO LIMITE MAXIMO DE TEMPO EM LOW NA ENTRADA DE RF
        SUBLW TMAX
        BTFSS STATUS,C
        GOTO INICIO ;C=0 (-) – LC>TMAX (REJEITAR DADO – PAUSA INICIAL)
        ;F’

        ;———————————–

        ;G
        MOVFW HC ;OBTEM O VALOR DE ‘CARRY'(HUM OU ZERO)
        SUBWF LC,W

        RRF RES3,F ;DESLOCA O BIT NOS REGISTRADORES DE RESULTADO
        RRF RES2,F
        RRF RES1,F
        RRF RES0,F
        ;————————————-
        ;H

        DECFSZ BITCOUNTER,F ;DECREMENTA O CONTADOR DE BITS A SER RECEBIDO
        GOTO L0 ;LE PROXIMO BIT

        MOVLW .4 ;DESPREZA OS BITS DE ‘ANTICODE’ 1010
        MOVWF BITCOUNTER
        ACERTA
        BCF STATUS,C
        RRF RES3,F
        RRF RES2,F
        RRF RES1,F
        RRF RES0,F ;RESULTADO FICA SOMENTE EM RES2 A RES0,DESPREZA RES3
        DECFSZ BITCOUNTER,F
        GOTO ACERTA

        BTFSC FLAG1 ;TESTA SE É A PRIMEIRA OU A SEGUNDA RECEPÇÃO
        GOTO PULA1
        MOVFW RES2 ;SALVA A PRIMEIRA LEITURA PARA COMPARAÇÃO COM UMA SEGUNDA
        MOVWF RES2A
        MOVFW RES1
        MOVWF RES1A
        MOVFW RES0
        MOVWF RES0A
        BSF FLAG1 ;SETA FLAG DE PRIMEIRA RECEPÇÃO

        GOTO INICIO
        PULA1
        BCF FLAG1 ;SEGUNDA RECEPÇÃO, COMPARA COM A PRIMEIRA
        MOVFW RES2
        XORWF RES2A,W
        BTFSS STATUS,Z
        GOTO RESETAC
        MOVFW RES1
        XORWF RES1A,W
        BTFSS STATUS,Z
        GOTO RESETAC
        MOVFW RES0
        XORWF RES0A,W
        BTFSS STATUS,Z
        GOTO RESETAC ;ERRO DE RECEPÇÁO
        GOTO AÇÃO ;OK – BOA RECEPÇÃO

        RESETAC
        CLRF RES3A ; APAGA RESULTADOS DE COMPARAÇÃO
        CLRF RES2A
        CLRF RES1A
        CLRF RES0A
        GOTO INICIO

        ;————————————-
        AÇÃO
        ;I
        BTFSS LRN ;BOTÃO ESTÁ APERTADO?
        BSF FLAGGR
        CALL PPT
        SUBLW .0
        BTFSC STATUS,Z ; É ‘0’?
        GOTO APRENDER ;NENHUM CONTROLE FOI GRAVADO
        MADDRESS
        MOVFW TMP
        MOVWF ADDRESS
        CALL EEREAD
        XORWF RES2,W ;COMPARA COM RES2
        BTFSS STATUS,Z
        GOTO PROXIMO
        DECF ADDRESS,F
        MOVFW ADDRESS
        CALL EEREAD
        XORWF RES1,W ;COMPARA COM RES1
        BTFSS STATUS,Z
        GOTO PROXIMO
        DECF ADDRESS,F
        MOVFW ADDRESS
        CALL EEREAD
        XORWF RES0,W ;COMPARA COM RES0
        BTFSC STATUS,Z
        GOTO ACIONAR ;ENCONTRADO CONTROLE NA MEMÓRIA
        PROXIMO ;VAI PARA O PROXIMO ENDEREÇO DE MEMÓRIA PROCURAR….

        MOVFW ADDRESS
        MOVWF TMP
        MOVLW .3
        SUBWF TMP,F ;ACERTA DE 3 EM 3 A POSIÇÃO DE BUSCA NA MEMÓRIA

        BTFSS STATUS,C
        GOTO APRENDER

        BTFSS STATUS,Z
        GOTO MADDRESS ;VOLTA A BUSCA

        APRENDER
        BTFSS FLAGGR ;TESTA SE BOTÃO ‘LEARN’ ESTÁ PRESSIONADO
        GOTO INICIO ;NÃO ESTÁ.
        CALL PPT ;ESTÁ, PEGA PONTEIRO
        MOVWF ADDRESS ;PEGA O ENDEREÇO APONTADO
        SUBLW 0X7E ;LIMITE MAXIMO DA EEPROM (128-1 /3= 42 BOTÕES OU 24 CONTROLES)
        BTFSS STATUS,C
        CLRF ADDRESS ;INICIA SOBREGRAVAÇÃO
        INCF ADDRESS,F ;SOMA 1
        MOVFW RES0
        MOVWF TMP ;COLOCA EM ‘TMP’
        MOVFW ADDRESS ;DA O POSIÇÃO DE MEMORIA A SER GRAVADO
        CALL EEWRITE ;ROTINA DE ESCRITA NA EEPROM
        INCF ADDRESS,F ;PROXIMA POSIÇÃO DE ESCRITA NA EEPROM
        MOVFW RES1
        MOVWF TMP
        MOVFW ADDRESS
        CALL EEWRITE
        INCF ADDRESS,F
        MOVFW RES2
        MOVWF TMP
        MOVFW ADDRESS
        CALL EEWRITE
        MOVFW ADDRESS
        MOVWF TMP
        MOVLW .0
        CALL EEWRITE ;GRAVA NOVO ENDEREÇO DE PONTEIRO
        BCF FLAGGR
        BTFSS LRN
        GOTO $-1
        MOVLW .10 ;TEMPO DE ATRASO
        CALL DELAYM

        BSF LED ;LIGA LED
        MOVLW .10 ;TEMPO DE ATRASO
        CALL DELAYM
        BCF LED ;DESLIGA

        ACIONAR

        BTFSS RES2,7 ;TESTA SE OS 2 BOTÕES JUNTOS FORAM ACIONADOS
        GOTO SEG888 ;UM NÃO FOI
        BTFSS RES2,6
        GOTO SEG888 ;OUTRO NÃO FOI
        BTFSC FLAG_TRAVA_LED3 ;TESTA A TRAVA:SE ESTIVER EM 1 NÃO FAZ NADA
        GOTO SEG999
        BSF FLAG_TRAVA_LED3 ;LIGA A TRAVA
        BTFSS LED3 ;TESTA O ESTADO ANTERIOR DO LED3
        GOTO LIGA_LED3 ;ESTAVA DESLIGADO, VAI LIGAR ENTÃO…
        BCF LED3 ;ESTAVA LIGADO, VAI DESLIGAR ENTÃO…
        GOTO SEG999 ;SAI RECARREGANDO O TEMPO
        LIGA_LED3
        BSF LED3 ;LIGA LED 3
        GOTO SEG999 ;SAI RECARREGANDO O TEMPO
        ;ROTINA DE TESTE INDIVIDUAL
        SEGUE888
        BTFSC RES2,7 ;TESTA QUAIS BOTÕES FORAM ACIONADOS NA TRANSMISSÃO
        BSF LED1 ;ATIVA LED1
        BTFSS RES2,7
        BCF LED1 ;APAGA LED1
        BTFSC RES2,6
        BSF LED2 ;ATIVA LED2
        BTFSS RES2,6
        BCF LED2 ;APAGA LED2
        SEG999
        MOVLW T_DESL_LED ;RECARGA DO TEMPORIZADOR DE DESLIGAMENTO
        MOVWF Y2
        MOVLW .255
        MOVWF Y1
        GOTO INICIO

        ;————————————————————–
        DELAYM
        MOVWF R0
        XC
        CALL AGUARDE
        DECFSZ R0,F
        GOTO XC
        RETURN

        ;****************************************************
        ;PEGA PONTEIRO NA EEPROM – ULTIMO ENDEREÇO
        PPT
        MOVLW .0
        CALL EEREAD ;LE PONTEIRO DA EEPROM
        RETURN

        AGUARDE ;ROTINA DE ATRASO ENTRE OPERAÇÕES DE EEPROM

        MOVLW .64
        MOVWF R1
        CG2
        CLRWDT
        MOVLW .255
        MOVWF R2

        DECFSZ R2,F
        GOTO $-1
        DECFSZ R1,F
        GOTO CG2
        RETURN

        EEWRITE

        ; ******* EEPROM WRITE ENABLE ******************
        ;endereço esta em ADDRESS
        ;DADOS A ESCREVER ESTA EM TMP(MSB)

        BANK1
        movwf EEADR
        BANK0
        MOVFW TMP ;PEGA PRIMEIRO DADO
        BANK1
        movwf EEDATA
        bcf EECON1, EEIF
        bsf EECON1, WREN ; enable Writepar
        movlw 0x55
        movwf EECON2
        movlw 0xAA
        movwf EECON2
        bsf EECON1, WR
        WRITE_SN_A clrwdt
        btfsc EECON1, WR ; Write complete ?par
        goto WRITE_SN_A
        bcf EECON1, WREN ; disable Writepar
        BANK0

        clrwdt

        ESPERA1 ;DELAY ENTRE APAGAMENTOS
        CALL AGUARDE
        RETURN

        EEREAD
        ;endereço esta em ADDRESS
        ;DADOS LIDOS SERÃO ESCRITOS EM TMP0

        clrwdt
        ; MOVFW ADDRESS

        BANK1
        movwf EEADR
        bsf EECON1, RD ; do a readpar
        clrwdt
        btfsc EECON1, RD ; Read done ?par
        goto $-1
        movf EEDATA,W
        BANK0
        MOVWF TMP ;RECUPERA PRIMEIRO NUMERO DA EEPROM
        clrwdt

        RETURN
        ;——————————————————————————
        APAGAEEPROM ;OK TESTADA E APROVADA
        ; ROTINA PARA APAGAR TODAS AS POSIÇOES DA EEPROM DO 16F628

        MOVLW 0X80 ;TOTAL DE 128 + 1 BYTES DE EEPROM
        MOVWF AUX
        RET6
        CLRWDT
        MOVFW AUX
        MOVLW .1 ;ACERTA ENDEREÇO TIRANDO 1
        SUBWF AUX,W
        BANK1
        movwf EEADR
        MOVLW 0XFF
        movwf EEDATA
        bcf EECON1, EEIF
        bsf EECON1, WREN ; enable Writepar
        movlw 0x55
        movwf EECON2
        movlw 0xAA
        movwf EECON2
        bsf EECON1, WR
        WRITE_SN_C clrwdt
        btfsc EECON1, WR ; Write complete ?par
        goto WRITE_SN_C
        bcf EECON1, WREN ; disable Writepar
        BANK0
        DECFSZ AUX,F
        GOTO ESPERA
        clrwdt
        RETLW 0H
        ESPERA ;DELAY ENTRE APAGAMENTOS
        MOVLW .8
        MOVWF R1
        CG1
        MOVLW .255
        MOVWF R2

        DECFSZ R2,F
        GOTO $-1
        DECFSZ R1,F
        GOTO CG1
        GOTO RET6

        ORG H’2100′
        DE .0

        end

    1. Olá Fabinhos! A frequência para este esquema é 433mhz. Mas você poderá trocar o microreceptor para a frequencia de 315mhz e usar chaveirinhos de 315 mhz. Note que a versão acima tem que usar chaveirinhos com o HCS200 a 301 dentro (roller code). Para operar corretamente, você terá que obrigatóriamente reprogramar os chaveirinhos que adquirir para uma code ‘key’ que será a mesma a ser usado no receptor (troque no código ASM). Isto exigirá fazer um dos ‘gravadores de HCS‘ postados neste blog ou um comercial. Adianto que para iniciantes é um verdadeiro desafio. Caso queira começar, indico o ‘ receptor genérico‘ com ht6p20b, que não precisa programar os ci interno do chaveirinhos (o ht6p20b já vem programado).
      Cláudio

  1. TENHO UM PROJETO DE RECEPTOR 3 SAÍDAS. HT6P20B
    COM O PIC 16F628A. TENHO QUE FAZER ALGUMAS ALTERAÇÕES MAS NÃO TENHO EXPERIENCIA.
    SE POSSÍVEL GOSTARIA DE NEGOCIAMOS. A POSSIBILIDADE DE UMA AJUDA, TENHO O ASM FUNCIONADO BLZ. MANTENDO O BOTÃO PRESSIONADO PULSA SAÍDAS.

    CASO ENTERESSE;
    GEORGELIMA2012@GMAIL.COM

    1. Olá José! Se desejar compartilhar (ou se puder) seu arquivo ASM com este blog, talvez possa ajudar. Se não puder compartilhar (segredos de ‘estado’), não executo serviços por remuneração, apenas por hobby ( não sou programador profissional, mas autodidata). O que voce deseja fazer?
      Claudio

      1. ola Claudio, boa tarde! vou ter o maior prazer em compartilha um pouco do meu conhecimento aqui com vc´s só me diz como faço para posta os arquivos. e duvidas.
        gostaria de hoje mesmo posta.

        1. Olá Ney! Agradeço a sua disposição em compartilhar também seus conhecimentos. Peço que voce me envie o material que desejar para o email claudio@picsource.com.br . Se possivel, envie o esquema e um bloco de notas com a explicação dos componentes e funcionamento, e se tiver alguma regulagem, bem como modo de usar. Não use projetos de terceiros sem a devida autorização para postagem em modo ‘free’. Estou pensando em fazer uma seção de ‘ projetos dos leitores. Quem sabe dá certo.
          Claudio

          1. ola Cláudio, estou com um desafio aqui, usa o RX GEN HT6P V4 utilizando um controle de 2 botão. E mantida as 3 saídas
            Quando mantém o botão 1 apertado, o led 1. se mantém aceso, sem piscar
            Quando mantém o botão 2 apertado, o led 2. se mantém aceso, sem piscar
            Quando apertado botão 1 e 2 , o led. 3 se mantém ligado on / quando apertado botão 1 e 2 novamente desliga off. será possível ? to tentado ainda não consegui, só iniciante em programação.

          2. Olá Ney!
            Realmente, este asm não foi previsto o uso do led 3. Mas ache as seguintes porções do código Asm e faça as substituições:

            ;=============================================================================================================================
            ;antiga
            ACIONAR

            BTFSC RES2,7 ;TESTA QUAIS BOTÕES FORAM ACIONADOS NA TRANSMISSÃO
            BSF LED1 ;ATIVA LED1
            BTFSS RES2,7
            BCF LED1 ;APAGA LED1

            BTFSC RES2,6
            BSF LED2 ;ATIVA LED2
            BTFSS RES2,6
            BCF LED2 ;APAGA LED2

            MOVLW T_DESL_LED ;RECARGA DO TEMPORIZADOR DE DESLIGAMENTO
            MOVWF Y2
            MOVLW .255
            MOVWF Y1

            GOTO INICIO
            ;============================================================================================================================

            troque este pedaço de código pelo o abaixo:

            ;============================================================================================================================

            ;nova
            ACIONAR

            ;obs. muitas mudanças!!!!

            BTFSS RES2,7 ;TESTA SE OS 2 BOTÕES JUNTOS FORAM ACIONADOS
            GOTO SEG888 ;UM NÃO FOI
            BTFSS RES2,6
            GOTO SEG888 ;OUTRO NÃO FOI
            BTFSC FLAG_TRAVA_LED3 ;TESTA A TRAVA:SE ESTIVER EM 1 NÃO FAZ NADA
            GOTO SEG999
            BSF FLAG_TRAVA_LED3 ;LIGA A TRAVA
            BTFSS LED3 ;TESTA O ESTADO ANTERIOR DO LED3
            GOTO LIGA_LED3 ;ESTAVA DESLIGADO, VAI LIGAR ENTÃO…
            BCF LED3 ;ESTAVA LIGADO, VAI DESLIGAR ENTÃO…
            GOTO SEG999 ;SAI RECARREGANDO O TEMPO
            LIGA_LED3
            BSF LED3 ;LIGA LED 3
            GOTO SEG999 ;SAI RECARREGANDO O TEMPO

            ;ROTINA DE TESTE INDIVIDUAL

            SEGUE888
            BTFSC RES2,7 ;TESTA QUAIS BOTÕES FORAM ACIONADOS NA TRANSMISSÃO
            BSF LED1 ;ATIVA LED1
            BTFSS RES2,7
            BCF LED1 ;APAGA LED1

            BTFSC RES2,6
            BSF LED2 ;ATIVA LED2
            BTFSS RES2,6
            BCF LED2 ;APAGA LED2
            SEG999

            MOVLW T_DESL_LED ;RECARGA DO TEMPORIZADOR DE DESLIGAMENTO
            MOVWF Y2
            MOVLW .255
            MOVWF Y1

            GOTO INICIO
            ;========================================================================================================================

            AGORA, IDENTIFIQUE ESTA SEÇÃO TAMBÉM:
            ;======================================================================================================================
            LA2

            DECFSZ Y1,F ;CONTADOR DE TEMPO DE DESLIGAMENTO DE SAIDAS
            GOTO J0
            DECFSZ Y2,F ;CONTADOR DE TEMPO DE DESLIGAMENTO DE SAIDAS
            GOTO J0
            BCF LED1 ;APAGA LEDS
            BCF LED2
            INCF Y1,F
            INCF Y2,F
            J0
            ;=======================================================================================================================

            TROQUE POR ESTA:
            ;=======================================================================================================================
            LA2

            DECFSZ Y1,F ;CONTADOR DE TEMPO DE DESLIGAMENTO DE SAIDAS
            GOTO J0
            DECFSZ Y2,F ;CONTADOR DE TEMPO DE DESLIGAMENTO DE SAIDAS
            GOTO J0
            BCF LED1 ;APAGA LEDS
            BCF LED2
            BCF FLAG_TRAVA_LED3 ;ESTE FLAG CONTROLARÁ O ON/OFF DO LED 3 ;mudança aqui!!!!!!!!!!!!!
            INCF Y1,F
            INCF Y2,F
            ;========================================================================================================================

            tAMBÉM, ACRESCENTE ESTA DEFINIÇÃO NO COMEÇO DO ARQUIVO ASM:

            ;======================================================================================================================
            ERRORLEVEL -302
            __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _BODEN_ON & _MCLRE_OFF

            #DEFINE BANK0 BCF STATUS,RP0 ;SETA BANK0 DE MEMORIA
            #DEFINE BANK1 BSF STATUS,RP0 ;SETA BANK1
            #DEFINE FLAG FLAGS,0 ;FLAG DE SITUAÇÃO
            #DEFINE FLAG1 FLAGS,1 ;FLAG DE NOVA LEITURA
            #DEFINE FLAGGR FLAGS,2 ;FLAG DE ‘LEARN’ APRENDER
            #DEFINE SIN GPIO,0 ;PINO 7 IN RF
            #DEFINE LRN GPIO,3 ;PINO 4 IN LEARN BOTTON
            #DEFINE LED GPIO,5 ;PINO 2 SAIDA LED ‘LEARN’
            #DEFINE LED2 GPIO,2 ;PINO 5- SAIDA DO LED2
            #DEFINE LED1 GPIO,1 ;PINO 6- SAIDA DO LED1
            ;====================================================================================================================

            E TROQUE POR ESTA:

            ;===============================================================================================================

            ERRORLEVEL -302
            __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _BODEN_ON & _MCLRE_OFF

            #DEFINE BANK0 BCF STATUS,RP0 ;SETA BANK0 DE MEMORIA
            #DEFINE BANK1 BSF STATUS,RP0 ;SETA BANK1
            #DEFINE FLAG FLAGS,0 ;FLAG DE SITUAÇÃO
            #DEFINE FLAG1 FLAGS,1 ;FLAG DE NOVA LEITURA
            #DEFINE FLAGGR FLAGS,2 ;FLAG DE ‘LEARN’ APRENDER
            #DEFINE SIN GPIO,0 ;PINO 7 IN RF
            #DEFINE LRN GPIO,3 ;PINO 4 IN LEARN BOTTON
            #DEFINE LED GPIO,5 ;PINO 2 SAIDA LED ‘LEARN’
            #DEFINE LED2 GPIO,2 ;PINO 5- SAIDA DO LED2
            #DEFINE LED1 GPIO,1 ;PINO 6- SAIDA DO LED1
            #DEFINE FLAG_TRAVA_LED3 FLAGS,3 ;FLAG TRAVA ;MUDANÇA AQUI!!!!

            ;==================================================================================================================

            Eu não tive tempo de testar na prática. Pode ser até que não funcione (lei de Murphy). Mas pediria o favor de voce me testar e

            retornar, por favor.
            Claudio

  2. Caro Claudio, bom dia.
    Ao usar a expressão “abriu de lona”, quiz dizer que o autor do projeto não acrescentou nada à consulta que fiz; não demonstrou o mínimo interesse pelo assunto enfocado. Esta expressão é um dito popular, rs rs rs. Mas vamos em frente, pois o mundo é assim mesmo.
    Estava pensando aqui na rotina para salvar as informações na EEprom do PIC. Não seria, talvez, somente um acréscimo ao que já existe no programa? Ou talvez, mudar o caminho, ao invéz das informaçoes serem salvas na RAM seriam salvas na EEprom. Se fosse possível isso na versão 16F628A, mesmo sem voce conhecer o “CW”…seria uma “mão na roda” (outro dito popular), ou seja um grande avanço. Mas enquanto não acertamos esse detalhe estou com uma alternativa que, acredito, irá resolver o problema.
    Outro dito popular…”quem não tem cão caça com gato, hi hi hi.
    Ao alimentar o PIC externamente via regulador 7805, passando por um diodo 1n4007, farei uma derivação através de um resistor de 10R em série com outro diodo 1n4007 para o positivo de uma bateria CR2032 (aquelas de computador); O positivo da CR2032 através de outro 1n4007, vai ao pino 1 do PIC (no caso dos 12C509 e 12F629) O 12F629 ainda tem aquele resistor pull up. Conclusão: Enquanto estiver usando alimentação externa para operar o oscilador a CR2032 estará recebendo carga via resistor de 10R. Ao desligar o oscilador e a fonte externa (aí vem o pulo do gato), a memória RAM do PIC vai continuar alimentada pela CR2032, desta forma, preservando as informações. Dois diodos evitam que a bateria se descarregue pela fonte, quando esta estiver desligada e o outro diodo evita que a fonte, quando ligada, alimente a bateria com 5 volts direto, sem passar pelo resistor de 10R.
    Vou continuar nos testes e volto a fazer contato. Fique na Paz de Deus e vamos em frente. Um bom feriado prolongado, saúde e paz junto aos familiares.
    Atenciosamente,
    João

    1. Olá João! Excelente idéia! As vezes caçamos até com ‘rato’, para entrar na onda dos ditados. Obrigado pela explicação dos ‘termos poucos conhecidos’.
      Bons ‘cw’ para você e os seus.
      Claudio

    2. Olá João! Peço a sua atenção no seguinte: Na ocasião que você montou a versão com pic 12f629 do manipulador ‘k8’ (blog ‘larios.tecnologia.ws’), você fez uso do ‘beacon’? Se fez, em que pinos foi colocado? Eu não lembro se ficou ativo esta função ou foi desativada na ocasião. Se for possível, me retorna.
      Cláudio

  3. Caro Claudio, boa noite.
    Entendo sua dificuldade, apesar da boa vontade, pelo fato de não conhecer o “CW”. Mas já foi um grande avanço conseguir a versão 12F629 e estou muito satisfeito pelo seu serviço gratuíto em prol do Radioamadorismo. Por ser leigo no assunto “Assembly”, estava pensando que esta rotina fosse uma coisa simples, mas não é. Vamos deixar como está que prá mim já está atendendo muito bem; os detalhes vamos driblando.
    Com relação ao autor, já fiz contato, ele abriu de lona. A versão disponibilizada na internet por ser gratuíta tem estas pendengas, é assim mesmo que a coisa funciona.
    Valeu sua ajuda e muito obrigado.
    Deus te abençoe e ilumine sempre.
    Atenciosamente,
    João.

    1. Olá João! O que significa a expressão ‘abrir de lona’????? Vou ler algumas materias, por curiosidade, sobre CW. Quem sabe eu ache um jeito de ‘entender’ os ‘di-dah-dah’ e possa prosseguir com o aperfeiçoamento! Mas, também agradeço por suas ‘aulas’ interessantes de CW. Espero que outros colegas seus possam fazer uso da nova versão com 12f629.
      Cláudio

Comments are closed.

Back To Top