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:
SEGUE ABAIXO ARQUIVO HEX PARA VERSÃO PIC16F628A:
SEGUE ABAIXO, SUGESTÃO DE PLACA VERSÃO 16F628A :
SEGUE ABAIXO, SUGESTÃO DE PLACA VERSÃO 16F628A COM COMPONENTES VISTO PELO LADO COBREADO E LISTA DE MATERIAIS:
VEJA O ESQUEMA DA APLICAÇÃO 2COM PIC 12F629:
SEGUE ABAIXO ARQUIVO ASM PARA VERSÃO PIC12F629:
SEGUE ABAIXO ARQUIVO HEX PARA VERSÃO PIC12F629:
SEGUE ABAIXO A PLACA PARA A VERSÃO 12F629:
SEGUE ABAIXO A PLACA PARA A VERSÃO 12F629 COM COMPONENTES MONTADOS VISTO PELO LADO COBREADO E LISTA DE MATERIAIS:
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
ola Cláudio, o código ainda não funcionou mas to tentando. obrigado!!!
Olá Ney! Assim que tiver um tempinho vou montar o circuito no protoboard para testar.
Claudio
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
Olá Ney! Desculpe ! Postei arquivos errados de novo! Veja a versão 10 ok e o esquema com o pull up colocado aqui.
Claudio
claudio bom dia
pekena duvida esse rece ptor funciona com controle de 315 mhz?
obrigado
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
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
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
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.
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
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.
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
Olá Ney! Veja a Versão 10 se é o que você deseja. Não esqueça do bendito pull up no pino 3 para funcionar. Testei e funcionou.
Claudio
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
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
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
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.
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