Boa Dia Claudio Lario
Não funcionou veja o link abaixo o circuito que estou utilizando
http://larios.tecnologia.ws/iBlog/wp-content/photos/2012/05/placa_gen_629pdf.pdf
http://larios.tecnologia.ws/iBlog/wp-content/photos/2012/05/placa_gen_629_montagem_pdf.pdf
Olá brgames!
Eu montei o circuito no breadboard e usei o arquivo do link http://blog.larios.tecnologia.ws/iBlog/wp-content/photos/2012/06/RX_GEN_HT6P20_V7_RET_.zip . Descompacte a pasta e use o arquivo hex contido nela. Fiz um vídeo caseiro e postei junto ao artigo original que confirma o funcionamento. Testei com controles PPA e Garen. Por favor, veja este vídeo. Usei o esquema próprio para uso com placa :
http://larios.tecnologia.ws/iBlog/wp-content/photos/2012/05/placa_gen_629pdf.pdf
http://larios.tecnologia.ws/iBlog/wp-content/photos/2012/05/placa_gen_629_montagem_pdf.pdf
Quando subi a pasta nova no site, eu acrescentei um '_' na terminação para diferenciar e evitar problemas de cache. Então use a RX_GEN_HT6P20_V7_RET_.zip ao invés da antiga RX_GEN_HT6P20_V7_RET.zip (sem o '_' no final) que ainda poderá estar nos seus documentos baixados. Em lugares com muita interferência recomendo usar um resistor de 2m2 no pino out_analógico do receptor, conforme mostra no vídeo.
Espero que consiga finalizar sua montagem.
boa noite claudio este projeto do comtador up dow com o pic16f628 teria como colocar uma porta do pic16f628 para desligar ou ligar quando estiver tudo no 0000 para desligar o motor da bobinadeira grato wesley
tem como colocar um rele pra quando crescer liga e decrescer desliga?, e alterar pra contar sem contar pra tras,,, quero fazer uma adaptacao , tipo aperta botao, conta e liga rele, aperta outro botao, deconta,e desliga rele, cada aperto no up conta 1, cada aperto no down deconta 1, chegou no zero desliga rele,,, sem contar pra tras, da pra alterar neste contador de voltas?!!, ou tem um projeto deste tipo com salvamento na eeprom do pic 16f628,,,, tenho um com 2 digitos mas de 3 digitos , da pra me ajuda?!!!
Olá Wesley!
Eu ainda não entendi bem o que você quer fazer. Como contar sem "contar para trás"? Somente incrementa? Mas aí você escreve: " aperta botão, conta e liga rele, aperta outro botão, desconta,e desliga rele,.." Porque tem o botão para contar e outro para "descontar"?
Poderia descrever melhor o processo? Se puder, fale no que vai usar isto. Será para enrolar fios, tendo os sensores que contam cada volta? Ou é outra coisa?
oi, sou o Raimundo, vou adaptar o contador eeprom, no lugar dos sensores vou colocar botoes, so preciso saber se tem como alterar programa colocando um rele que e acionado quando aperta pra contar, um aperto por vez um pulso por vez, e quando apertar pra decontar, um aperto por vez um pulso por vez, chegou no zero trava e desarma o rele, sem entrar nos 9999-9998-9997, eu nao sei mexer com programas, so tenho um programador willem, coloco o pic la, carrego o hex e pronto, preciso do diagrama alterado e hex, se puder me ajudar, ja montei alguns projetos seus e sei que funciona !
oi, sou o Raimundo, vou adaptar o contador eeprom, no lugar dos sensores vou colocar botoes, so preciso saber se tem como alterar programa colocando um rele que e acionado quando aperta pra contar, um aperto por vez um pulso por vez, e quando apertar pra decontar, um aperto por vez um pulso por vez, chegou no zero trava e desarma o rele, sem entrar nos 9999-9998-9997, eu nao sei mexer com programas, so tenho um programador willem, coloco o pic la, carrego o hex e pronto, preciso do diagrama alterado e hex, se puder me ajudar, ja montei alguns projetos seus e sei que funciona !
Raimundo de novo, um contador de 3 digitos resolve meu problema desde que tenha estas caracteristicas, up down, eeprom do pic 16f628 pra nao perder contagem na falta e ou desligar a energia ,com ativamento de rele ,,, apertando o botao up conta um e arma o rele ,, aperto o down desce um ,e quando zera desarma o rele, sem decrementar 999-998-998-997, tipo assim: aperto contar sobe um, aperta de novo dois, e quando apertar decontar, desce 2,1,0,,, parando no zero e desarmando o rele, se puder me ajudar ,ou criar, ou alterar no esquema do contador de voltas, ajuda nois!!!
!!!!!!!!!!??????????
estes arquivos sao de contador de 2 digitos com rele, preciso de mais um digito sera que tem como acrescentar nisso ai?, eu nao sei mexer nisto, pode me ajudar!??
estes arquivos sao de contador de 2 digitos com rele, preciso de mais um digito sera que tem como acrescentar nisso ai?, eu nao sei mexer nisto, pode me ajudar!??
;****************************************************************
;* Started 18/6/2009
;2 Digit UP / Down Counter with FastCount after 2secs
;No buttons pressed - goes to Up/Down Counter
;Buttons "Up" and "Down" recognised when project turned on.
;Button A goes to DICE
;Button B goes to Random Number 00 to 99
;Port B drives 7 segment display
;Up sw on RA2 Down on RA3
;Units drive on RA0 Tens drive on RA1
;* * Alarm when "00" added 9-8-2011 *
;*************************************************************list P = 16F628 ;microcontroller
include <P16F628.inc> ;registers for F628
__Config _cp_off & _lvp_off & _pwrte_on & _wdt_off & _intRC_osc_noclkout & _mclre_off
;code protection - off
;low-voltage programming - off
;power-up timer - on
;watchdog timer - off
;use internal RC for 4MHz - all pins for in-out
;**********************************************************
; variables - names and files
;**********************************************************
;Files for F628 start at 20h
temp1 equ 20h ;for delay
temp2 equ 21h ;for delay
temp3 equ 22h ;for delay
SwUp equ 23h ;
SwDwn equ 24h ;
units equ 25h ;
tens equ 26h ;
Sw_Flag equ 27h ;
FastCount equ 28h ;
Count equ 29h ; counting 00 to 99;**********************************************************
;Equates
;**********************************************************
status equ 0x03
cmcon equ 0x1F
rp1 equ 0x06
rp0 equ 0x05
portA equ 0x05
portB equ 0x06
;**********************************************************
;Beginning of program
;**********************************************************
reset org 00 ;reset vector address
goto SetUp ;goto SetUptable addwf PCL,F ;02h,1 add W to program counter
retlw b'00111111' ; "0" -|F|E|D|C|B|A
retlw b'00000110' ; "1" -|-|-|-|C|B|-
retlw b'01011011' ; "2" G|-|E|D|-|B|A
retlw b'01001111' ; "3" G|-|-|D|C|B|A
retlw b'01100110' ; "4" G|F|-|-|C|B|-
retlw b'01101101' ; "5" G|F|-|D|C|-|A
retlw b'01111101' ; "6" G|F|E|D|C|-|A
retlw b'00000111' ; "7" -|-|-|-|C|B|A
retlw b'01111111' ; "8" G|F|E|D|C|B|A
retlw b'01101111' ; "9" G|F|-|D|C|B|A
;*************************************************************
;* port A and B initialisation
;Button Up and Button Down recognised when project turned on.
;*************************************************************SetUp bsf status,rp0
movlw b'00001100' ;Make RA0,1 out RA2 in(Up),RA3 in(Down)
movwf 05h ;trisA
clrf 06h ;trisB Make all RB output
bcf status,rp0 ;select programming area - bank0
movlw b'10000000' ;Turn off T0CKI, prescale for TMR0 = 1:
movwf option_reg
clrf portB ;Clear Port B of junk
clrf units ;zero the units file
clrf tens ;zero the tens file
clrf Sw_Flag
movlw 07h ;turn comparators off and enable
movwf cmcon ; pins for I/O functions
btfss portA,2
goto AAA ;Button A detected (detects LOW)
btfsc portA,3
goto Main
clrf Count
goto Random ;Button B detectedAAA incf tens,1 ;remove beep
call D_250mS
btfsc portA,2
goto Dice
bsf portA,1 ;Make RA1 HIGH for left display
bcf portA,0
movlw b'01011110' ; "d" G|-|E|D|C|B|-
movwf portB
call D_250mS
movlw b'00000110' ; "I" -|-|-|-|C|B|-
movwf portB
call D_250mS
movlw b'00111001' ; "C" -|F|E|D|-|-|A
movwf portB
call D_250mS
movlw b'01111001' ; "E" G|F|E|D|-|-|A
movwf portB
call D_250mS
clrf portB
bcf portA,1
goto AAA+1
;*************************************************************
;* Delay 10mS 10 x 1,000uS *
;*************************************************************D_2mS movlw 02h
movwf temp2
D_e nop
decfsz temp1,1
goto D_e
decfsz temp2,1
goto D_e
retlw 00D_10mS movlw 0Ah
movwf temp2
D_a nop
decfsz temp1,1
goto D_a
decfsz temp2,1
goto D_a
retlw 00D_100mS movlw d'100'
movwf temp2
D_b nop
decfsz temp1,1
goto D_b
decfsz temp2,1
goto D_b
retlw 00D_250mS movlw d'250'
movwf temp2
D_c nop
decfsz temp1,1
goto D_c
decfsz temp2,1
goto D_c
retlw 00D_3Sec movlw d'15'
movwf temp3
D_d nop
decfsz temp1,1
goto D_d
decfsz temp2,1
goto D_d
decfsz temp3,1
goto D_d
retlw 00FastUp btfss Sw_Flag,2 ;First time through loop?
goto FU_2 ;yes
btfsc Sw_Flag,7 ;Has 5Hz bit been set?
goto FU_3
FU_1 incfsz FastCount,1 ;Increment FastCount
movlw d'100'
xorwf FastCount,0
btfss status,2 ;reached 100 loops?
retlw 00
clrf FastCount
bsf Sw_Flag,7 ;set bit for 5Hz incrementingFU_2 bsf Sw_Flag,2 ;Up button has been pressed
incf units,1
movlw 0Ah ;put 10 into w
xorwf units,0 ;compare units file with 10
btfss status,2 ;zero flag in status file. Will be set if units is 10
retlw 00
clrf units
incf tens,1
movlw 0Ah ;put 10 into w
xorwf tens,0 ;compare units file with 10
btfsc status,2 ;zero flag in status file. Will be set if tens is 10
clrf tens
retlw 00 ;display passes 99 but not below 0FU_3 incfsz FastCount,1 ;Increment FastCount
movlw d'5'
xorwf FastCount,0
btfss status,2 ;reached 5 loops?
retlw 00
clrf FastCount
goto FU_2Dwn btfsc Sw_Flag,3
retlw 00
bsf Sw_Flag,3
decf units,1
movlw 0FFh ;put FFh into w
xorwf units,0 ;compare units file with FFh
btfss status,2 ;zero flag in status file. Will be set if units is 10
retlw 00
movlw 09
movwf units ;put 9 into units file
decf tens,1
movlw 0FFh ;put 0FFh into w
xorwf tens,0 ;compare tens file with 0FFh
btfsc status,2 ;zero flag in status file. Will be set if tens is 0FFh
goto $+2 ;tens file is 0FFh
retlw 00
clrf tens
clrf units
retlw 00 ;display not below 0;*************************************************************
;* Dice Produces a random number from 1 to 6 on display
; The display flashes before settling on a number - called attract mode.
;Program detects timing of button-push to generate number *
;*************************************************************Dice incf units,f
btfss portA,2 ;look for button-push
goto Start ;button A pushed
movf units,w
xorlw 06
btfss status,2
goto Dice
clrf units
goto DiceStart movlw 08
movwf temp3
call Attract
decfsz temp3,f
goto $-2
goto Show ;Attract bsf portA,0 ;Make RA0 HIGH for right-hand display
movlw b'00001000' ;
movwf portB
call D_100mS
movlw b'01000000' ;
movwf portB
call D_100mS
movlw b'00001000' ;
movwf portB
call D_100mS
movlw b'00000001' ;
movwf portB
call D_100mS
retlw 00Show movf units,w
call table
movwf portB
Show1 call D_250mS
btfss portA,2 ;look for button not pushed
goto Show1
goto Dice;*************************************************************
;* Random - produces random numbers from 00 to 99 *
;*************************************************************Random movlw 08
movwf temp3
call Flash
decfsz temp3,f
goto $-2
goto Rand_1 ;Flash bsf portA,1 ;Make RA1 HIGH for left-hand display
movlw b'00001000' ;
movwf portB
call D_100mS
bcf portA,1
nop
bsf portA,0 ;Make RA0 HIGH for right-hand display
movwf portA
movlw b'00001000' ;
movwf portB
call D_100mS
bcf portA,0
retlw 00;convert Count to 0..99
Rand_1 movf Count,w
clrf tens ; W = 0x00..0x63, 0..99 input
decf tens,F ; preset temp to -1
sub10 incf tens,F ; unconditionally
addlw -0Ah ; subtract 10. borrow?
btfsc status,0 ; no, test carry bit
goto sub10
addlw 0Ah
movwf unitsDisp movf units,w
call table
movwf portB
bsf portA,0 ;Make RA0 HIGH for right-hand display
call D_2mS
bcf portA,0
movf tens,w
call table
movwf portB
bsf portA,1 ;Make RA1 HIGH for left-hand display
call D_2mS
bcf portA,1
incf Count,f
movf Count,w
xorlw d'100'
btfsc Status,2 ;test zero flag
clrf Count
btfsc portA,2 ;look for button not pushed
goto Disp
goto Random;*************************************************************
;* Main *
;****************************************************************Main
movf units,1
btfss 03,2 ;test zero flag flag=1 when file=0
goto $+6
movf tens,1
btfss 03,2
goto $+3
bsf portA,6 ;make pin 15 HIGH
goto $+2
bcf portA,6
btfss portA,2 ;test switch-press for UP
call FastUp ;UP switch pressed
btfss portA,3 ;test switch-press for Down
call Dwn ;Down switch pressed
bsf portA,0 ;Make RA0 HIGH for units drive
movf units,0 ;copy unit value into w
call table ;unit display value will return in w
movwf portB ;output units value
call D_10mS ;call delay
bcf portA,0
clrf portB ;clear display
bsf portA,1 ;Make RA1 HIGH for tens drive
movf tens,0 ;copy tens value into w
call table ;tens display value will return in w
movwf portB ;output tens value
call D_10mS ;call delay
bcf portA,1
clrf portB ;clear display
btfsc portA,3 ;bit will be zero when sw is pressed
bcf Sw_Flag,3 ;button not pressed. Clear down flag
btfss portA,2 ;bit will be zero when sw is pressed
goto Main
bcf Sw_Flag,2 ;button not pressed. Clear Up flag
bcf Sw_Flag,7 ;Clear Up repeat flag
clrf FastCount
goto MainEND
Amigo Larios , fiz este mesmo circuito, so que com o CCS e da uns warming eu já tentei tirar eles mas não consigui , teria como vc revisar este codigo?
estou usando a versao 5.059
http://larios.tecnologia.ws/iBlog/wp-content/photos/2013/05/receptores_alternativos.zip
Os 'Warnings' não atrapalham a compilação. Os 'Errors' sim. Já notei que dependendo da versão necessitará acrescentar alguma exigência para compilar, especialmente nos mais novos (p. ex. fixar pinos para comunicação). Verifique qual 'warning/error' está dando e tente ajustar o programa para o requerido na mensagem passada pelo compilador. Consulte também o forum de ajuda do CCS. Se não quiser dor de cabeça, use o hex fornecido ou use a versão 3.200.
eu entendo, mais desculpe qualquer coisa eu sou tão metódico que a dias estou tentando retirar esses 2 warmings, ja programo a pouco tempo em ccs
mais nas pesquisas vi que é algo relacionado ao ponteiro mais até agora não consegui por isso resolvi entrar em contato com voce o pai criador do codigo rsrs
Hola claudio
en el porton automatico de un motor
cuando apreto el boton del mando a distancio por mas de 3 segundos
en el recector me queda dnado empulsos es decie con el boton apretado
se qeda el mor entermitente pregunto si hay una sulucion para esto
un saludo Manuel
¿Por qué necesitas apretar por más de 3 segundos? Un breve apriete ya es suficiente para funcionar la puerta?
Infelizmente eu não uso o software Proteus para testes, mas faço testes unicamente em placas de protoboard, com componentes reais. Eu não saberia como te ajudar a resolver esta sua dificuldade. Porém, a instrução MOVFW é uma instrução aceita no Mplab-Ide. Não sei se o compilador do Proteus aceita ela. Mas ela pode ser substituída, para padronização, por MOVF R,W ou ainda MOVF R,0 (onde o R é o registrador que vai ser transferido para o W ). Se desejar, poderá ver o forum Microchip sobre este mesmo assunto.