pionpion69
Messages postés4Date d'inscriptionlundi 10 février 2003StatutMembreDernière intervention18 août 2005
-
6 janv. 2005 à 17:36
asaqim
Messages postés1Date d'inscriptionvendredi 18 février 2005StatutMembreDernière intervention16 mars 2013
-
16 mars 2013 à 09:39
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
asaqim
Messages postés1Date d'inscriptionvendredi 18 février 2005StatutMembreDernière intervention16 mars 2013 16 mars 2013 à 09:39
merci beaucoup c est un très bon travail ça marche très bien chez moi. juste j ai une remarque quand j'allume un port j arrive pas a a le mettre en zero que une fois je click sur on off du telecommade RC5
Frudjp
Messages postés5Date d'inscriptionjeudi 1 octobre 2009StatutMembreDernière intervention 2 avril 2010 6 oct. 2009 à 16:50
Oublier d'ajouter une petite précision
Ce prg fonctionne avec les télécommandes suivantes:
Marantz (lecteur CD7001)
Cyrrus CD système
Philips RD6830
+ télécommande universelle programmable
Merci
Frudjp
Messages postés5Date d'inscriptionjeudi 1 octobre 2009StatutMembreDernière intervention 2 avril 2010 6 oct. 2009 à 16:45
Bonjour à tous,
Merci pour l'auteur de ce programme qui a fait un magnifique travail! Si bien que j'ai modifié à mon goût et qui bien sûr nécessite qq questions.
Voilà, j'ai viré la partie LCD et conservé uniquement le décodage du RC5. De plus j'ai modifié pour obtenir l'accès à 15 touches que je récupère en BCD sur le port B. Le capteur est déporté sur RB7. Je ne sait pas comment ont peut insérer le fichier asm mais bon je vais tenter un copier / coller sur ce post. Mais avant mes questions:
1) comment augmenter le nbre de touches, je souhaite porté à 32 touches mais impossible de valider au-delà de 15
2) J'ai pas compris ce jeu d'instruction (0x10 ^ 0x09)????? Pourtant c'est en travaillant sur cette routine que je suis arrivé à 15 touches
3) J'ai pensé modifié aussi cette cde mais ça change pas grand chose en faite j'ai valisé RB5 et RB6 en + pensant augmenter le nbre de code touche
andlw b'01111111'
andlw b'00111111'
Voici le asm modifié
ORG 0x0000
bsf STATUS,RP0 ; Select Bank 1
clrf TRISA ;
MOVLW B'10000000' ; portb.7 en entrée
MOVWF TRISB
bcf STATUS ,RP0 ; Select Bank 0
bcf INTCON, GIE ; disable Interupt
debut
call tempox
boucl_prog
clrf PORTB
call Recv_RC5 ; Récéption d'un code RC5
movfw RC5_DATA ; si RC5_DATA =0 (touche N°0 de la TC)
btfsc STATUS,Z ;
goto Action_1
busy movwf NB_TEMPO ; Temporisation : dure 500µs x "la valeur contenue dans W"
boucle movlw .123
movwf BUSY_1
boucle1 NOP
decfsz BUSY_1,1
goto boucle1
decfsz NB_TEMPO,1
goto boucle
return ; retour de la sous-routine
;-----------------------------------Tempo XXµS-----------------------------------
tempox movlw 0x0B ; pour x boucles
tempoxx movwf cmpt1 ; dans cmpt1
boucle2 movlw 0x25
call busy ; TEMPO xxxx µS
decfsz cmpt1 , f ; si 0, décrémenter compteur 3
goto boucle2 ; si cmpt1 pas 0, recommencer boucle2
return ; retour de la sous-routine
;-----------------------------------Réception des codes IR-----------------------------------
; RECEPTION D'UN CODE RC5
; RB6 en entrée (TSOP 1738...ou equivalent infra rouge)
; Controle RC5 : RC5_CTRL => 1 bit
; Adresse RC5 : RC5_ADR => 5 bits
; Données RC5 : RC5_DATA => 6 bits
Recv_RC5
btfsc PORTB, 7 ; Attendre un "0"
goto Recv_RC5 ; du bit de start
call Tempo444 ; attendre 444us, 1/4 cycle pour capture bit a bit
btfsc PORTB, 7 ; tester si "0" (anormal probabl... une emission en cours mal sync!)
goto Fin_RC5 ; ERREUR ! finir la phase de reception
nextbit rlf donn1,f ; rotation a gauche de tous les bits
rlf donn2,f ;
bcf donn1, 0 ; forcer a "0" le bit0 de "donn1"
btfsc PORTB, 7 ; si RB6 (infra rouge) =0
bsf donn1, 0 ; forcer a "1" le bit0 de "donn1"
call Set_bit ; attendre flanc montant ou desc en fonction de l'etat de RB6 (infra rouge)
call Tempo444 ; attendre 3/4 de Bit pour se ;tempo ; = 444,5 us
call Tempo888 ; placer a 1/4 du bit suivant ;tempo ; = 889 us
decfsz Loop3,f ; les 13 bits sont t-ils tous reçus
goto nextbit ; si non, recommencer reception du bit suivant
;Recuperation des bits du code RC5 des variables "donn1" "donn2"
movfw donn1 ; recuperation des 6 bits de Données RC5
andlw b'01111111' ; 0 sur les bits non utilisés
movwf RC5_DATA ; Placer val dans "RC5_DATA"
rlf donn1,f ; decalage a gauche de 2
rlf donn2,f ; pour faire "remonter" les bits
rlf donn1,f ; de l'Adresse RC5
rlf donn2,f ; de donn1
movfw donn2 ; vers donn2
andlw b'00111111' ; 0 sur les bits non utilisés
movwf RC5_ADR ; recuperation des 5 bits dans "RC5_ADR"
clrf RC5_CTRL ; recuperation du bit
btfss donn2, 5 ; de controle RC5
bsf RC5_CTRL, 0 ; dans "RC5_CTRL"
Fin_RC5
return
;-------------------------Attendre fin bit fonction de PORTB6 (IR)-----------------------------
btfsc PORTB, 7 ; si "0"
goto haut
bas btfsc donn1, 0 ; bit en cours =0 ?
return ; flanc haut/bas
goto saut_l
haut btfss donn1, 0 ; bit en cours =1 ?
return ; flanc bas/haut
saut_l decfsz Loop1,f
goto tim11
return
;--------------------------------------- TEMPORISATION POUR RC5--------------------------------------
Tempo888 movlw 0x12 ; Temporisation de 888µs
goto tim0
basic12
Messages postés3Date d'inscriptionmercredi 9 septembre 2009StatutMembreDernière intervention 9 septembre 2009 9 sept. 2009 à 22:07
merci
bricolex
Messages postés2Date d'inscriptionmercredi 8 novembre 2000StatutMembreDernière intervention16 octobre 2007 16 oct. 2007 à 09:53
merci pour ta reponse
est il possible d'avoir un petit schema pour faire ces sorties supplementaires ainsi que la modif du fichier de programation car biensur cette application sort du projet initial
merci encore
a+
christian
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 15 oct. 2007 à 14:11
Bonjour BRICOLEX,
Merci beaucoup, il n'est pas possible d'ajouter 2 sorties car elles sont toutes utilisées (sauf si tu n'utilise pas le LCD !! il sera alors possible de récuperer 6 sorties/entrées de plus).
Ou alors ajouter un circuit genre CD4094 par ex qui permet depuis 3 I/O du pic d'en sortir 8...
Il est bien sûr possible de faire l'emeteur... suffit de respecter les tempos et de generer les 38 ou 36 KHz...
Sans oublier bien sûr la gestion clavier !
Bonne prog ++
ryl...
bricolex
Messages postés2Date d'inscriptionmercredi 8 novembre 2000StatutMembreDernière intervention16 octobre 2007 15 oct. 2007 à 11:52
super utile .....
est il possible d'ajouter 2 autres sorties?
est il possible de faire l'emeteur avec un pic ?
merci encore pour cette realisation
christian
delphiman007
Messages postés3Date d'inscriptionmardi 11 juillet 2006StatutMembreDernière intervention12 février 2007 12 févr. 2007 à 21:09
merci pour tous.
@+
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 11 févr. 2007 à 13:38
Re,
Oui, a la réception on est a 3/4 du bit, c'est un choix ! le principal étant d'être synchronisé... le décalage est du au contrôle que je fait au niveau du bit de départ en vérifiant qu'il y est un changement d'état sur RB6 ce qui occasionnera ou pas un rejet.
On aurai aussi pu vérifier la durée du bit de start ou la durée des bits de toute la trame...Mais les essais m'ont démontrés que ce n'était pas utile(ayant une réussite de décodage trame de 100%).
Bonne prog
A+
ryl...
delphiman007
Messages postés3Date d'inscriptionmardi 11 juillet 2006StatutMembreDernière intervention12 février 2007 9 févr. 2007 à 21:56
Re,
Donc à la reception du "0" on est donc bien apres les 3/4 du 1er bit !
Ce temps de retard est du a quoi ?
A la réaction du recepteur Ir?
Mais en fait pourquoi ne pas avoir mis une tempo de 889µs on serais aussi sur la 1er partie du 2eme bit ?
Ou alors j'ai toujours pas compris !!
j'ai oublié : Merci pour être aussi rapide a repondre!
@+
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 9 févr. 2007 à 18:26
Bonjour et merci,
Il y a englobé le bit de start qui est sauté puis syncro sur le demi bit suivant,
en fait cette tempo sert de controle pour savoir si c'est un début de code RC5 (START) ou savoir si c'est une reception parasite...
A+
ryl...
delphiman007
Messages postés3Date d'inscriptionmardi 11 juillet 2006StatutMembreDernière intervention12 février 2007 9 févr. 2007 à 17:47
Bonjour et merci pour ce code.
Je ne comprend pas le point suivant:
Dans la partie Recv_RC5
On attend un "0" ce qui indique le depart de la trame.
Donc quand on a ce "0" c'est que l'on ce trouve au départ de la deuxieme partie du bit 1.
Mais c'est là que je comprend plus :
1/2 bit = 889µs donc pourquoi cette tempo de 444µs qui logiquement ne nous fais pas aller au 1/2 bit suivant mais toujours dans le même 1/2 bit ( donc toujours "0")
Je pense que mon analyse est fausse puisque ça marche mais pourquoi cette tempo de 444µs?
Si je comprend bien, quand le "0" et détecté on n'est pas au debut du deuxieme 1/2bit mais bien après la moitié de ce 1/2 bit! Heuuuuu ! Non! Oui ?
Si je peut avoir une petite explication Merci.
@+
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 21 nov. 2006 à 15:26
de rien...
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 21 nov. 2006 à 15:15
Re,
SENTEKIN, je suis désolé mais je ne comprends toujour pas ce que tu veux ???
Peux-tu être plus clair...
Si c'est un exemple de décodage RC5 depuis un PIC télécharge le ZIP "en haut de la page" il y a le fichier ASM et le fichier HEX...
PS: MERCI a l'administrateur pour la correction...
ryl...
sentekin
Messages postés6Date d'inscriptionlundi 6 novembre 2006StatutMembreDernière intervention21 novembre 2006 21 nov. 2006 à 13:01
Merci RYLRYL le NO LCD 16f84 role output transistör rc5 protocol
decoder asm and hex merci.
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 21 nov. 2006 à 12:46
sentekin
Messages postés6Date d'inscriptionlundi 6 novembre 2006StatutMembreDernière intervention21 novembre 2006 21 nov. 2006 à 11:40
RC5 PROTOKOL RECEIVER STANDBY(12-BINARY 001100 COMMAND-TV-VCR-SAT)BUTTON START-STOP ROLE
IR ÝNPUT RA3 ,OUTPUT RA1 CÝRCUIT AND 16F84 ASM AND HEX FILE PLACE.TAHNK YOU.
sentekin48@hotmail.com
spokitus
Messages postés1Date d'inscriptionjeudi 17 août 2006StatutMembreDernière intervention18 août 2006 18 août 2006 à 14:06
Enfin un code qui marche pour décoder du rc5. Merci!! On en redemande.
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 18 août 2005 à 18:18
Merci Pionpion69...
A+
rylryl...
pionpion69
Messages postés4Date d'inscriptionlundi 10 février 2003StatutMembreDernière intervention18 août 2005 18 août 2005 à 16:41
sympa comme logiciel félicitation!
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 18 août 2005 à 15:55
Bonjour, pour les plus bricoleurs, je mets a disposition une Télécommande universelle pour PC.
Si quelqu'un est intéressé,
c'est ici : http://pageperso.aol.fr/CRylou/TC_UNIV_rylryl.html Bon pilotage !
rylryl...
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 1 juin 2005 à 21:25
S'inscrire en 'membre club' est juste une manière de soutenir CS mais absolument pas obligatoire, suffit de cliquer sur 'Téléchatger le zip'.
pionpion69
Messages postés4Date d'inscriptionlundi 10 février 2003StatutMembreDernière intervention18 août 2005 1 juin 2005 à 21:04
je t'ai envoyé un message perso PICEURO.
A+ Pionpion
P.S. Salut Rylryl!
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 1 juin 2005 à 20:54
Bonjour PICEURO.
Adresse toi plutôt aux administrateurs car là ché pô t'aider !
a+
ryl...
piceuro
Messages postés1Date d'inscriptionmercredi 1 juin 2005StatutMembreDernière intervention 1 juin 2005 1 juin 2005 à 20:16
bonjour
je suis un novice dans le site
je me suis inscrit mais pour accéder a ton montage on me
demande a nouveau de m'inscrire en tant que membre du club.
Il faut appaeller un numéros surtaxer mais le site ne dit pas le prix .
Pourrais tu me donner plus d'info.
en ce moment je suis en train de fabriquer un ampli most fet et ton montage ma donner des idées!! Merci par avance tchao!!
pjm130
Messages postés2Date d'inscriptionlundi 16 mai 2005StatutMembreDernière intervention17 mai 2005 17 mai 2005 à 14:58
OK c'est super sympas de ta part.....
J'ai enlever la partie lcd car je prepare juste une reception rc5
MERCI MERCI BEAUCOUP
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 17 mai 2005 à 14:06
Salut pjm130.
Bem il faut juste multiplier les tempo par 5...
Attention aussi aux tempos du LCD !!
voili..
a+
ryl...
pjm130
Messages postés2Date d'inscriptionlundi 16 mai 2005StatutMembreDernière intervention17 mai 2005 17 mai 2005 à 10:06
Merci pour ton prog effectivement il est clair net et precis et simple a comprendre meme les les plus nul des debutants comme moi.
J'ai tellement compris que j'ai meme vu que pour que ton programme fonctionne sur d'autre pic qui fonctionne a des freq plus elever il faut modifier la tempos.
Je fonctionne a 20MHz et la je ne sais pas comment faire pour retrouver une bonne tempos..
Si j'interprete ,une tempos fait un certains nombre de boucle,chaque boucle contient des mnemonique qui mettent un certain nombre de cycle
chaque cycle corrspond a une fraction de periode du quartz...
suis je ok?
Mais apres comment on fait j'y arrive plus???
Lors du calcul du nombre de cycle tu commence a partir de l'appelle du ss porg (call Tempo444),a partir du chargement des compteur dans le ssprog(Tempo444 movlw 0x09) ou a partir du debut de la premiere boucle(tim0 movwf Loop1)
Ma frequence est cinq fois plus grande que celle que tu utilise je dois donc faire cinq fois tes tempos?????
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 9 janv. 2005 à 19:01
Tu a raison Mr Manchester ce soir ou demain je ferais une MAJ !
Encore merci pour cette bonne remarque!
a bientot.
ryl...
cs_ManChesTer
Messages postés374Date d'inscriptionvendredi 20 octobre 2000StatutModérateurDernière intervention15 janvier 2021 9 janv. 2005 à 18:49
rylryl, sois pas si étonné,
Ton code est bien ecrit, clair et fonctionnel et super bien commanté, il est facile pour tous de la modifier selon ses besoin ou de l'utiliser tel quel.
Juste une remarque : un call a lcdputchar a chaque caratère c'est un peux lourd. Faire une routine lcdputstring ne serais-ce pas mieux ?
Bon Coding...
ManChesTer.
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 9 janv. 2005 à 02:44
Waow!! super grand merci , chuisul c....!!
ryl...
cs_ManChesTer
Messages postés374Date d'inscriptionvendredi 20 octobre 2000StatutModérateurDernière intervention15 janvier 2021 9 janv. 2005 à 02:17
Super utile, merci
ManChesTer.
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 6 janv. 2005 à 17:53
Merci Mr pionpion69
a me fait plaisir!
ryl...
pionpion69
Messages postés4Date d'inscriptionlundi 10 février 2003StatutMembreDernière intervention18 août 2005 6 janv. 2005 à 17:36
16 mars 2013 à 09:39
6 oct. 2009 à 16:50
Ce prg fonctionne avec les télécommandes suivantes:
Marantz (lecteur CD7001)
Cyrrus CD système
Philips RD6830
+ télécommande universelle programmable
Merci
6 oct. 2009 à 16:45
Merci pour l'auteur de ce programme qui a fait un magnifique travail! Si bien que j'ai modifié à mon goût et qui bien sûr nécessite qq questions.
Voilà, j'ai viré la partie LCD et conservé uniquement le décodage du RC5. De plus j'ai modifié pour obtenir l'accès à 15 touches que je récupère en BCD sur le port B. Le capteur est déporté sur RB7. Je ne sait pas comment ont peut insérer le fichier asm mais bon je vais tenter un copier / coller sur ce post. Mais avant mes questions:
1) comment augmenter le nbre de touches, je souhaite porté à 32 touches mais impossible de valider au-delà de 15
2) J'ai pas compris ce jeu d'instruction (0x10 ^ 0x09)????? Pourtant c'est en travaillant sur cette routine que je suis arrivé à 15 touches
3) J'ai pensé modifié aussi cette cde mais ça change pas grand chose en faite j'ai valisé RB5 et RB6 en + pensant augmenter le nbre de code touche
andlw b'01111111'
andlw b'00111111'
Voici le asm modifié
ORG 0x0000
bsf STATUS,RP0 ; Select Bank 1
clrf TRISA ;
MOVLW B'10000000' ; portb.7 en entrée
MOVWF TRISB
bcf STATUS ,RP0 ; Select Bank 0
bcf INTCON, GIE ; disable Interupt
debut
call tempox
boucl_prog
clrf PORTB
call Recv_RC5 ; Récéption d'un code RC5
movfw RC5_DATA ; si RC5_DATA =0 (touche N°0 de la TC)
btfsc STATUS,Z ;
goto Action_1
xorlw (0x01 ^ 0x00)
btfsc STATUS,Z ;
goto Action_2
xorlw (0x02 ^ 0x01)
btfsc STATUS,Z
goto Action_3
xorlw (0x03 ^ 0x02)
btfsc STATUS,Z
goto Action_4
xorlw (0x04 ^ 0x03)
btfsc STATUS,Z
goto Action_5
xorlw (0x05 ^ 0x04)
btfsc STATUS,Z
goto Action_6
xorlw (0x06 ^ 0x05)
btfsc STATUS,Z
goto Action_7
xorlw (0x07 ^ 0x06)
btfsc STATUS,Z
goto Action_8
xorlw (0x08 ^ 0x07)
btfsc STATUS,Z
goto Action_9
xorlw (0x09 ^ 0x08)
btfsc STATUS,Z
goto Action_10
xorlw (0x10 ^ 0x09)
btfsc STATUS,Z
goto fini
xorlw (0x11 ^ 0x10)
btfsc STATUS,Z
goto fini
xorlw (0x12 ^ 0x11)
btfsc STATUS,Z
goto fini
xorlw (0x13 ^ 0x12)
btfsc STATUS,Z
goto fini
xorlw (0x14 ^ 0x13)
btfsc STATUS,Z
goto fini
xorlw (0x15 ^ 0x14)
btfsc STATUS,Z
goto fini
xorlw (0x16 ^ 0x15)
btfsc STATUS,Z
goto fini
xorlw (0x17 ^ 0x16)
btfsc STATUS,Z
goto fini
xorlw (0x18 ^ 0x17)
btfsc STATUS,Z
goto fini
xorlw (0x19 ^ 0x18)
btfsc STATUS,Z
goto fini
xorlw (0x20 ^ 0x19)
btfsc STATUS,Z
goto Action_11
xorlw (0x21 ^ 0x20)
btfsc STATUS,Z
goto Action_12
xorlw (0x22 ^ 0x21)
btfsc STATUS,Z
goto fini
xorlw (0x23 ^ 0x22)
btfsc STATUS,Z
goto fini
xorlw (0x24 ^ 0x23)
btfsc STATUS,Z
goto fini
xorlw (0x25 ^ 0x24)
btfsc STATUS,Z
goto fini
xorlw (0x26 ^ 0x25)
btfsc STATUS,Z
goto fini
xorlw (0x27 ^ 0x26)
btfsc STATUS,Z
goto fini
xorlw (0x28 ^ 0x27)
btfsc STATUS,Z
goto fini
xorlw (0x29 ^ 0x28)
btfsc STATUS,Z
goto fini
xorlw (0x30 ^ 0x29)
btfsc STATUS,Z
goto Action_13
xorlw (0x31 ^ 0x30)
btfsc STATUS,Z
goto fini
xorlw (0x32 ^ 0x31)
btfsc STATUS,Z
goto fini
xorlw (0x33 ^ 0x32)
btfsc STATUS,Z
goto fini
xorlw (0x34 ^ 0x33)
btfsc STATUS,Z
goto fini
xorlw (0x35 ^ 0x34)
btfsc STATUS,Z
goto Action_14
xorlw (0x36 ^ 0x35)
btfsc STATUS,Z
goto Action_15
xorlw (0x37 ^ 0x36)
btfsc STATUS,Z
goto fini
xorlw (0x38 ^ 0x37)
btfsc STATUS,Z
goto fini
xorlw (0x39 ^ 0x38)
btfsc STATUS,Z
goto fini
xorlw (0x40 ^ 0x39)
btfsc STATUS,Z
goto fini
xorlw (0x41 ^ 0x40)
btfsc STATUS,Z
goto fini
xorlw (0x42 ^ 0x41)
btfsc STATUS,Z
goto fini
xorlw (0x43 ^ 0x42)
btfsc STATUS,Z
goto fini
xorlw (0x44 ^ 0x43)
btfsc STATUS,Z
goto fini
xorlw (0x45 ^ 0x44)
btfsc STATUS,Z
goto fini
xorlw (0x46 ^ 0x45)
btfsc STATUS,Z
goto fini
xorlw (0x47 ^ 0x46)
btfsc STATUS,Z
goto fini
xorlw (0x48 ^ 0x47)
btfsc STATUS,Z
goto fini
xorlw (0x49 ^ 0x48)
btfsc STATUS,Z
goto fini
xorlw (0x50 ^ 0x49)
btfsc STATUS,Z
goto fini
xorlw (0x51 ^ 0x50)
btfsc STATUS,Z
goto fini
xorlw (0x52 ^ 0x51)
btfsc STATUS,Z
goto fini
xorlw (0x53 ^ 0x52)
btfsc STATUS,Z
goto fini
xorlw (0x54 ^ 0x53)
btfsc STATUS,Z
goto fini
xorlw (0x55 ^ 0x54)
btfsc STATUS,Z
goto fini
xorlw (0x56 ^ 0x55)
btfsc STATUS,Z
goto fini
xorlw (0x57 ^ 0x56)
btfsc STATUS,Z
goto fini
xorlw (0x58 ^ 0x57)
btfsc STATUS,Z
goto fini
xorlw (0x59 ^ 0x58)
btfsc STATUS,Z
goto fini
xorlw (0x60 ^ 0x59)
btfsc STATUS,Z
goto fini
xorlw (0x61 ^ 0x60)
btfsc STATUS,Z
goto fini
xorlw (0x62 ^ 0x61)
btfsc STATUS,Z
goto fini
xorlw (0x63 ^ 0x62)
btfsc STATUS,Z
goto fini
xorlw (0x64 ^ 0x63)
btfsc STATUS,Z
goto fini
xorlw (0x65 ^ 0x64)
btfsc STATUS,Z
goto fini
xorlw (0x66 ^ 0x65)
btfsc STATUS,Z
goto fini
xorlw (0x67 ^ 0x66)
btfsc STATUS,Z
goto fini
xorlw (0x68 ^ 0x67)
btfsc STATUS,Z
goto fini
xorlw (0x69 ^ 0x68)
btfsc STATUS,Z
goto fini
xorlw (0x70 ^ 0x69)
btfsc STATUS,Z
goto fini
xorlw (0x71 ^ 0x70)
btfsc STATUS,Z
goto fini
xorlw (0x72 ^ 0x71)
btfsc STATUS,Z
goto fini
xorlw (0x73 ^ 0x72)
btfsc STATUS,Z
goto fini
xorlw (0x74 ^ 0x73)
btfsc STATUS,Z
goto fini
xorlw (0x75 ^ 0x74)
btfsc STATUS,Z
goto fini
xorlw (0x76 ^ 0x75)
btfsc STATUS,Z
goto fini
xorlw (0x77 ^ 0x76)
btfsc STATUS,Z
goto fini
xorlw (0x78 ^ 0x77)
btfsc STATUS,Z
goto fini
xorlw (0x79 ^ 0x78)
btfsc STATUS,Z
goto fini
xorlw (0x80 ^ 0x79)
btfsc STATUS,Z
goto fini
xorlw (0x81 ^ 0x80)
btfsc STATUS,Z
goto fini
xorlw (0x82 ^ 0x81)
btfsc STATUS,Z
goto fini
xorlw (0x83 ^ 0x82)
btfsc STATUS,Z
goto fini
xorlw (0x84 ^ 0x83)
btfsc STATUS,Z
goto fini
xorlw (0x85 ^ 0x84)
btfsc STATUS,Z
goto fini
xorlw (0x86 ^ 0x85)
btfsc STATUS,Z
goto fini
xorlw (0x87 ^ 0x86)
btfsc STATUS,Z
goto fini
xorlw (0x88 ^ 0x87)
btfsc STATUS,Z
goto fini
xorlw (0x89 ^ 0x88)
btfsc STATUS,Z
goto fini
xorlw (0x90 ^ 0x89)
btfsc STATUS,Z
goto fini
xorlw (0x91 ^ 0x90)
btfsc STATUS,Z
goto fini
xorlw (0x92 ^ 0x91) ; si RC5_DATA =h0C (touche ON/OFF de la TC)
btfsc STATUS,Z
goto fini
xorlw (0x93 ^ 0x92)
btfsc STATUS,Z
goto fini
xorlw (0x94 ^ 0x93)
btfsc STATUS,Z
goto fini
goto fini
;-----------------------------------Validation des sorties-----------------------------------
Action_1
movlw B'00001010' ; Touche 0
movwf PORTB
goto fini
Action_2
movlw B'00000001' ; Touche 1
movwf PORTB
goto fini
Action_3
movlw B'00000010' ; Touche 2
movwf PORTB
goto fini
Action_4
movlw B'00000011' ; Touche 3
movwf PORTB
goto fini
Action_5
movlw B'00000100' ; Touche 4
movwf PORTB
goto fini
Action_6
movlw B'00000101' ; Touche 5
movwf PORTB
goto fini
Action_7
movlw B'00000110' ; Touche 6
movwf PORTB
goto fini
Action_8
movlw B'00000111' ; Touche 7
movwf PORTB
goto fini
Action_9
movlw B'00001000' ; Touche 8
movwf PORTB
goto fini
Action_10
movlw B'00001001' ; Touche 9
movwf PORTB
goto fini
Action_11
movlw B'00001011' ; Touche Next
movwf PORTB
goto fini
Action_12
movlw B'00001100' ; Touche Previous
movwf PORTB
goto fini
Action_13
movlw B'00001101' ; Touche Pause
movwf PORTB
goto fini
Action_14
movlw B'00001110' ; Touche Play
movwf PORTB
goto fini
Action_15
movlw B'00001111' ; Touche Stop
movwf PORTB
goto fini
Action_16
movlw B'00010000' ; Touche
movwf PORTB
goto fini
Action_17
movlw B'00010001' ; Touche
movwf PORTB
goto fini
Action_18
movlw B'00010010' ; Touche
movwf PORTB
goto fini
Action_19
movlw B'00010011' ; Touche
movwf PORTB
goto fini
Action_20
movlw B'00010100' ; Touche
movwf PORTB
goto fini
Action_21
movlw B'00010101' ; Touche
movwf PORTB
goto fini
Action_22
movlw B'00010110' ; Touche
movwf PORTB
goto fini
Action_23
movlw B'00010111' ; Touche
movwf PORTB
goto fini
Action_24
movlw B'00011000' ; Touche
movwf PORTB
goto fini
Action_25
movlw B'00011001' ; Touche
movwf PORTB
goto fini
Action_26
movlw B'00011010' ; Touche
movwf PORTB
goto fini
Action_27
movlw B'00011011' ; Touche
movwf PORTB
goto fini
Action_28
movlw B'00011100' ; Touche
movwf PORTB
goto fini
Action_29
movlw B'00011101' ; Touche
movwf PORTB
goto fini
Action_30
movlw B'00011110' ; Touche
movwf PORTB
goto fini
Action_31
movlw B'00011111' ; Touche
movwf PORTB
goto fini
fini
call tempox ; tempo entre chaque detection
call tempox
goto boucl_prog ; recommencer la detection RC5
;-----------------------------------Tempo 500µS-----------------------------------
busy movwf NB_TEMPO ; Temporisation : dure 500µs x "la valeur contenue dans W"
boucle movlw .123
movwf BUSY_1
boucle1 NOP
decfsz BUSY_1,1
goto boucle1
decfsz NB_TEMPO,1
goto boucle
return ; retour de la sous-routine
;-----------------------------------Tempo XXµS-----------------------------------
tempox movlw 0x0B ; pour x boucles
tempoxx movwf cmpt1 ; dans cmpt1
boucle2 movlw 0x25
call busy ; TEMPO xxxx µS
decfsz cmpt1 , f ; si 0, décrémenter compteur 3
goto boucle2 ; si cmpt1 pas 0, recommencer boucle2
return ; retour de la sous-routine
;-----------------------------------Réception des codes IR-----------------------------------
; RECEPTION D'UN CODE RC5
; RB6 en entrée (TSOP 1738...ou equivalent infra rouge)
; Controle RC5 : RC5_CTRL => 1 bit
; Adresse RC5 : RC5_ADR => 5 bits
; Données RC5 : RC5_DATA => 6 bits
Recv_RC5
btfsc PORTB, 7 ; Attendre un "0"
goto Recv_RC5 ; du bit de start
call Tempo444 ; attendre 444us, 1/4 cycle pour capture bit a bit
btfsc PORTB, 7 ; tester si "0" (anormal probabl... une emission en cours mal sync!)
goto Fin_RC5 ; ERREUR ! finir la phase de reception
clrf donn1 ; donn1=0
clrf donn2 ; donn2=0
movlw .13 ; 13 bits a capturer
movwf Loop3 ; 12 sont traites
call Tempo888 ; 1/4 du 2' Bit
nextbit rlf donn1,f ; rotation a gauche de tous les bits
rlf donn2,f ;
bcf donn1, 0 ; forcer a "0" le bit0 de "donn1"
btfsc PORTB, 7 ; si RB6 (infra rouge) =0
bsf donn1, 0 ; forcer a "1" le bit0 de "donn1"
call Set_bit ; attendre flanc montant ou desc en fonction de l'etat de RB6 (infra rouge)
call Tempo444 ; attendre 3/4 de Bit pour se ;tempo ; = 444,5 us
call Tempo888 ; placer a 1/4 du bit suivant ;tempo ; = 889 us
decfsz Loop3,f ; les 13 bits sont t-ils tous reçus
goto nextbit ; si non, recommencer reception du bit suivant
;Recuperation des bits du code RC5 des variables "donn1" "donn2"
movfw donn1 ; recuperation des 6 bits de Données RC5
andlw b'01111111' ; 0 sur les bits non utilisés
movwf RC5_DATA ; Placer val dans "RC5_DATA"
rlf donn1,f ; decalage a gauche de 2
rlf donn2,f ; pour faire "remonter" les bits
rlf donn1,f ; de l'Adresse RC5
rlf donn2,f ; de donn1
movfw donn2 ; vers donn2
andlw b'00111111' ; 0 sur les bits non utilisés
movwf RC5_ADR ; recuperation des 5 bits dans "RC5_ADR"
clrf RC5_CTRL ; recuperation du bit
btfss donn2, 5 ; de controle RC5
bsf RC5_CTRL, 0 ; dans "RC5_CTRL"
Fin_RC5
return
;-------------------------Attendre fin bit fonction de PORTB6 (IR)-----------------------------
Set_bit movlw 0x09 ; Tempo
movwf Loop1
tim11 movlw 0x20 ;
movwf Loop2
tim22 decfsz Loop2,f
goto tim22
btfsc PORTB, 7 ; si "0"
goto haut
bas btfsc donn1, 0 ; bit en cours =0 ?
return ; flanc haut/bas
goto saut_l
haut btfss donn1, 0 ; bit en cours =1 ?
return ; flanc bas/haut
saut_l decfsz Loop1,f
goto tim11
return
;--------------------------------------- TEMPORISATION POUR RC5--------------------------------------
Tempo888 movlw 0x12 ; Temporisation de 888µs
goto tim0
Tempo444 movlw 0x09 ; Temporisation de 444µs
tim0 movwf Loop1
tim1 movlw 0x0F
movwf Loop2
tim2 decfsz Loop2,f
goto tim2
decfsz Loop1,f
goto tim1
return
end
==========================
Merci à tous
Cdlt,
9 sept. 2009 à 22:07
16 oct. 2007 à 09:53
est il possible d'avoir un petit schema pour faire ces sorties supplementaires ainsi que la modif du fichier de programation car biensur cette application sort du projet initial
merci encore
a+
christian
15 oct. 2007 à 14:11
Merci beaucoup, il n'est pas possible d'ajouter 2 sorties car elles sont toutes utilisées (sauf si tu n'utilise pas le LCD !! il sera alors possible de récuperer 6 sorties/entrées de plus).
Ou alors ajouter un circuit genre CD4094 par ex qui permet depuis 3 I/O du pic d'en sortir 8...
Il est bien sûr possible de faire l'emeteur... suffit de respecter les tempos et de generer les 38 ou 36 KHz...
Sans oublier bien sûr la gestion clavier !
Bonne prog ++
ryl...
15 oct. 2007 à 11:52
est il possible d'ajouter 2 autres sorties?
est il possible de faire l'emeteur avec un pic ?
merci encore pour cette realisation
christian
12 févr. 2007 à 21:09
@+
11 févr. 2007 à 13:38
Oui, a la réception on est a 3/4 du bit, c'est un choix ! le principal étant d'être synchronisé... le décalage est du au contrôle que je fait au niveau du bit de départ en vérifiant qu'il y est un changement d'état sur RB6 ce qui occasionnera ou pas un rejet.
On aurai aussi pu vérifier la durée du bit de start ou la durée des bits de toute la trame...Mais les essais m'ont démontrés que ce n'était pas utile(ayant une réussite de décodage trame de 100%).
Bonne prog
A+
ryl...
9 févr. 2007 à 21:56
Donc à la reception du "0" on est donc bien apres les 3/4 du 1er bit !
Ce temps de retard est du a quoi ?
A la réaction du recepteur Ir?
Mais en fait pourquoi ne pas avoir mis une tempo de 889µs on serais aussi sur la 1er partie du 2eme bit ?
Ou alors j'ai toujours pas compris !!
j'ai oublié : Merci pour être aussi rapide a repondre!
@+
9 févr. 2007 à 18:26
Il y a englobé le bit de start qui est sauté puis syncro sur le demi bit suivant,
en fait cette tempo sert de controle pour savoir si c'est un début de code RC5 (START) ou savoir si c'est une reception parasite...
A+
ryl...
9 févr. 2007 à 17:47
Je ne comprend pas le point suivant:
Dans la partie Recv_RC5
On attend un "0" ce qui indique le depart de la trame.
Donc quand on a ce "0" c'est que l'on ce trouve au départ de la deuxieme partie du bit 1.
Mais c'est là que je comprend plus :
1/2 bit = 889µs donc pourquoi cette tempo de 444µs qui logiquement ne nous fais pas aller au 1/2 bit suivant mais toujours dans le même 1/2 bit ( donc toujours "0")
Je pense que mon analyse est fausse puisque ça marche mais pourquoi cette tempo de 444µs?
Si je comprend bien, quand le "0" et détecté on n'est pas au debut du deuxieme 1/2bit mais bien après la moitié de ce 1/2 bit! Heuuuuu ! Non! Oui ?
Si je peut avoir une petite explication Merci.
@+
21 nov. 2006 à 15:26
21 nov. 2006 à 15:15
SENTEKIN, je suis désolé mais je ne comprends toujour pas ce que tu veux ???
Peux-tu être plus clair...
Si c'est un exemple de décodage RC5 depuis un PIC télécharge le ZIP "en haut de la page" il y a le fichier ASM et le fichier HEX...
PS: MERCI a l'administrateur pour la correction...
ryl...
21 nov. 2006 à 13:01
decoder asm and hex merci.
21 nov. 2006 à 12:46
Que veux-tu dire ?????
J'ai ce message sur plusieurs sources "RC5" !!!
Il y a aussi celle-ci:
http://www.vbfrance.com/codes/USB-DECODEUR-RC5-POUR-TELECOMMANDE-TV-VCR-AVEC_39418.aspx
A+
ryl...
21 nov. 2006 à 11:40
IR ÝNPUT RA3 ,OUTPUT RA1 CÝRCUIT AND 16F84 ASM AND HEX FILE PLACE.TAHNK YOU.
sentekin48@hotmail.com
18 août 2006 à 14:06
18 août 2005 à 18:18
A+
rylryl...
18 août 2005 à 16:41
18 août 2005 à 15:55
Si quelqu'un est intéressé,
c'est ici : http://pageperso.aol.fr/CRylou/TC_UNIV_rylryl.html
Bon pilotage !
rylryl...
1 juin 2005 à 21:25
1 juin 2005 à 21:04
A+ Pionpion
P.S. Salut Rylryl!
1 juin 2005 à 20:54
Adresse toi plutôt aux administrateurs car là ché pô t'aider !
a+
ryl...
1 juin 2005 à 20:16
je suis un novice dans le site
je me suis inscrit mais pour accéder a ton montage on me
demande a nouveau de m'inscrire en tant que membre du club.
Il faut appaeller un numéros surtaxer mais le site ne dit pas le prix .
Pourrais tu me donner plus d'info.
en ce moment je suis en train de fabriquer un ampli most fet et ton montage ma donner des idées!! Merci par avance tchao!!
17 mai 2005 à 14:58
J'ai enlever la partie lcd car je prepare juste une reception rc5
MERCI MERCI BEAUCOUP
17 mai 2005 à 14:06
Bem il faut juste multiplier les tempo par 5...
Attention aussi aux tempos du LCD !!
voili..
a+
ryl...
17 mai 2005 à 10:06
J'ai tellement compris que j'ai meme vu que pour que ton programme fonctionne sur d'autre pic qui fonctionne a des freq plus elever il faut modifier la tempos.
Je fonctionne a 20MHz et la je ne sais pas comment faire pour retrouver une bonne tempos..
Si j'interprete ,une tempos fait un certains nombre de boucle,chaque boucle contient des mnemonique qui mettent un certain nombre de cycle
chaque cycle corrspond a une fraction de periode du quartz...
suis je ok?
Mais apres comment on fait j'y arrive plus???
Lors du calcul du nombre de cycle tu commence a partir de l'appelle du ss porg (call Tempo444),a partir du chargement des compteur dans le ssprog(Tempo444 movlw 0x09) ou a partir du debut de la premiere boucle(tim0 movwf Loop1)
Ma frequence est cinq fois plus grande que celle que tu utilise je dois donc faire cinq fois tes tempos?????
9 janv. 2005 à 19:01
Encore merci pour cette bonne remarque!
a bientot.
ryl...
9 janv. 2005 à 18:49
Ton code est bien ecrit, clair et fonctionnel et super bien commanté, il est facile pour tous de la modifier selon ses besoin ou de l'utiliser tel quel.
Juste une remarque : un call a lcdputchar a chaque caratère c'est un peux lourd. Faire une routine lcdputstring ne serais-ce pas mieux ?
Bon Coding...
ManChesTer.
9 janv. 2005 à 02:44
ryl...
9 janv. 2005 à 02:17
ManChesTer.
6 janv. 2005 à 17:53
a me fait plaisir!
ryl...
6 janv. 2005 à 17:36