begin process at 2010 03 20 09:48:30
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Les PIC

 > RÉCEPTION RC5 ET TRANSMISSION RS232 AVEC PIC 16F84

RÉCEPTION RC5 ET TRANSMISSION RS232 AVEC PIC 16F84


 Information sur la source

Note :
8 / 10 - par 3 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Les PIC Niveau :Débutant Date de création :11/06/2002 Date de mise à jour :11/06/2002 15:44:20 Vu :42 033

Auteur : FloZix

Ecrire un message privé
Site perso
Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Ce code permet de décoder un signal de norme RC5 (protocole des télécommandes Philips et autres) et de l'envoyer sur la liaison série d'un PC (RS232).
La réception de la trame série peut se faire avec un programme en Visual Basic. Si ça intéresse quelqu'un je peux mettre un exemple de programme.
Ce bout de code ne test que les 4 derniers bits de la trame RS232 ( trame RC5 = 14 Bits)

Source

  • #include<p16f84>
  • LIST p=16F84
  • ; initialisation des registres
  • indf equ h'00'
  • tmr0 equ h'01'
  • pcl equ h'02'
  • status equ h'03'
  • fsr equ h'04'
  • porta equ h'05'
  • portb equ h'06'
  • intcon equ h'0B'
  • trisa equ h'85'
  • trisb equ h'86'
  • r_option equ h'81'
  • ; initialisation des variables
  • cmp1 equ h'0C'
  • cmp2 equ h'0D'
  • donn equ h'0E'
  • ; initialisation des ports A & B
  • org h'00'
  • clrf status
  • clrf porta
  • clrf portb
  • bsf status,5
  • movlw b'00011011'
  • movwf trisa
  • movlw b'00000000'
  • movwf trisb
  • bcf status,5
  • clrf status
  • clrf porta
  • clrf portb
  • movlw h'00'
  • movwf intcon
  • clrf cmp1
  • clrf cmp2
  • clrf donn
  • bsf porta,2
  • ; debut du programme
  • test1 btfsc porta,0
  • goto test1
  • bsf portb,1
  • bsf portb,2
  • bsf portb,3
  • bsf portb,4
  • call tempo2
  • btfss porta,0
  • bcf portb,3
  • btfss porta,0
  • bsf donn,3
  • call tempo1
  • btfss porta,0
  • bcf portb,2
  • btfss porta,0
  • bsf donn,2
  • call tempo1
  • btfss porta,0
  • bcf portb,1
  • btfss porta,0
  • bsf donn,1
  • call tempo1
  • btfss porta,0
  • bcf portb,4
  • btfss porta,0
  • bsf donn,4
  • ; envoie au max232 de la trame RS232
  • bcf porta,2
  • call tempo3
  • btfsc donn,1
  • bsf porta,2
  • call tempo3
  • btfsc donn,2
  • bsf porta,2
  • btfss donn,2
  • bcf porta,2
  • call tempo3
  • btfsc donn,3
  • bsf porta,2
  • btfss donn,3
  • bcf porta,2
  • call tempo3
  • btfsc donn,4
  • bsf porta,2
  • btfss donn,4
  • bsf porta,2
  • call tempo3
  • call tempo3
  • call tempo3
  • call tempo3
  • bsf porta,2
  • goto test1
  • ; sous programmes
  • ; tempo de 1.78 ms (durée d'un bit à la norme RC5)
  • tempo1 movlw h'03'
  • movwf cmp2
  • movlw h'50'
  • movwf cmp1
  • t1 decfsz cmp1
  • goto t1
  • decfsz cmp2
  • goto t1
  • return
  • ; tempo de 17,8 ms (durée des 10 premiers bits qu'on ne regarde pas)
  • tempo2 movlw h'16'
  • movwf cmp2
  • movlw h'00'
  • movwf cmp1
  • t2 decfsz cmp1
  • goto t2
  • decfsz cmp2
  • goto t2
  • return
  • ; tempo de 1200 bauds (833 µs, correspond à la vitesse choisie de la liaison RS232)
  • tempo3 movlw h'0F'
  • movwf cmp2
  • movlw h'02'
  • movwf cmp1
  • t3 decfsz cmp1
  • goto t3
  • decfsz cmp2
  • goto t3
  • return
  • end
	#include<p16f84>
	LIST p=16F84

; initialisation des registres 

indf 		equ h'00'
tmr0		equ h'01'
pcl		equ h'02'
status		equ h'03'
fsr		equ h'04'
porta		equ h'05'
portb		equ h'06'
intcon		equ h'0B'
trisa		equ h'85'
trisb		equ h'86'
r_option	equ h'81'


; initialisation des variables

cmp1	equ h'0C'
cmp2	equ h'0D'
donn	equ h'0E'


; initialisation des ports A & B

	org h'00'

	clrf	status
	clrf	porta
	clrf	portb
	bsf	status,5
	movlw	b'00011011'
	movwf	trisa
	movlw	b'00000000'
	movwf	trisb
	bcf	status,5
	clrf	status
	clrf	porta
	clrf	portb
	movlw	h'00'
	movwf	intcon
	clrf	cmp1
	clrf	cmp2
	clrf	donn
	bsf	porta,2


; debut du programme

test1	btfsc	porta,0
	goto	test1

	bsf	portb,1
	bsf	portb,2
	bsf	portb,3
	bsf	portb,4

	call	tempo2
	btfss	porta,0
	bcf	portb,3
	btfss	porta,0
	bsf	donn,3

	call	tempo1
	btfss	porta,0
	bcf	portb,2
	btfss	porta,0
	bsf	donn,2

	call	tempo1
	btfss	porta,0
	bcf	portb,1
	btfss	porta,0
	bsf	donn,1

	call	tempo1
	btfss	porta,0
	bcf	portb,4
	btfss	porta,0
	bsf	donn,4


; envoie au max232 de la trame RS232

	bcf	porta,2
	call	tempo3
	btfsc	donn,1
	bsf	porta,2
	call	tempo3
	btfsc	donn,2
	bsf	porta,2
	btfss	donn,2
	bcf	porta,2
	call	tempo3

	btfsc	donn,3
	bsf	porta,2
	btfss	donn,3
	bcf	porta,2
	call	tempo3

	btfsc	donn,4
	bsf	porta,2
	btfss	donn,4
	bsf	porta,2
	call	tempo3
	call	tempo3
	call	tempo3
	call	tempo3
	bsf	porta,2

	goto	test1


; sous programmes

; tempo de 1.78 ms (durée d'un bit à la norme RC5)

tempo1	movlw 	h'03'
	movwf	cmp2
	movlw 	h'50'
	movwf	cmp1
t1	decfsz	cmp1
	goto	t1
	decfsz	cmp2
	goto	t1
	return


; tempo de 17,8 ms (durée des 10 premiers bits qu'on ne regarde pas)

tempo2	movlw 	h'16'
	movwf	cmp2
	movlw 	h'00'
	movwf	cmp1
t2	decfsz	cmp1
	goto	t2
	decfsz	cmp2
	goto	t2
	return


; tempo de 1200 bauds (833 µs, correspond à la vitesse choisie de la liaison RS232)

tempo3	movlw 	h'0F'
	movwf	cmp2
	movlw 	h'02'
	movwf	cmp1
t3	decfsz	cmp1
	goto	t3
	decfsz	cmp2
	goto	t3
	return

	end 

 Conclusion

Le circuit se veut relativement simple :
une tête réceptrice qui pré amplifie, filtre et démodule le signal RC5 (TSOP 18 par exemple)
un PIC 16F84
un MAX232 ( pour adapter les niveaux logiques pour la liaison RS232)

Attribution des ports :
RA1 : sortie de la tête réceptrice
RA2 : entrée du MAX 232
RB1 : led
RB1 : led
RB1 : led
RB1 : led
Notes : les leds sont allumées sur des « 0 »
Le câble qui relit la carte à l'interface et connecté à la  sortie du MAX 232

Suite à des demandes j'ai rajouté le schéma simplifié du montage comme capture d'écran et j'ai posé le logiciel (du moins la base du logiciel) de reception sur vbfrance.com (LECTURE D'INFORMATIONS SUR RX DU PORT SERIE AVEC PORT.DLL).


 Sources de la même categorie

Source avec Zip SAUT AVEC TROIS IMPULSIONS par ariane2005
Source avec Zip LED ROTATE par ariane2005
Source avec Zip LED EN COULEUR par ariane2005
Source avec Zip JEUX DE LUMIÈRE par ariane2005
PIC : OBTENIR UN NOMBRE ALÉATOIRE AVEC LA FORMULE XN+1=(137... par warezpsx

Commentaires et avis

Commentaire de Sirocooo le 12/06/2002 00:48:34

Génial c'est ce que je cherchais pour télécomander mon PC
Merci et bravo

je suis friand de prog en rapport avec la RS232. Entre autre je cherche des sources
vb ou asm pour espionner le port serie en RX et en TX.

Commentaire de FloZix le 12/06/2002 10:32:49

Content d'avoir rendu service.
Si vous cherchez le schéma électronique d'une télécommande envoyer moi un message je vous l'enverrai. A savoir que n'importe quel télécommande RC5 peu faire l'affaire mais il faut analyser la trame qu'elle envoie à l'oscilloscope pour changer les bits à tester et surtout pour affiner voir même changer les tempos du PIC.
Pour envoyer avec le port série c'est pareil que la réception (cf. la source de VBFrance.com) mais avec SENDBYTES.
@+

Commentaire de RC516F84 le 15/09/2003 16:35:44

C'est exactement ce que je cherchais à quelques détails pres mais je m'en accomoderai.  Cependant le listing pourrais etre un peut plus détaillé sur le fonctionnement ;-)

Commentaire de garaze le 07/05/2005 04:46:37

Bonjour je n'arrive pas a telecharger le fichier zip.

Merci de le mettre a dispo.

Commentaire de hexanium le 23/06/2005 15:39:28

Salut,
Merci pour ce code, j'ai juste un soucis, c la tempo de 1778µs quand je fais le calcul je trouve en gros 771 cycles,serait il possible de décrire le comptage de ta tempo:
Mon detail:
6c d'init avec le CALL        +
( 91 + 160 ) x 3 c            +
10c tests des 3 boucles       +
2c le retrun
cela me donne 771 cycles ?

Quelqu'un peut m'indiquer mon erreur ou me dertailler la tempo ?

Merci

A++

Commentaire de hexanium le 23/06/2005 16:05:20

;Tempo de 1.78 ms (durée d'un bit à la norme RC5)
TEMPO_BIT_RC5 ; +2µs - Appel
   movlw 0x03 ; +1µs - ( 0x03 = 3 )
   movwf   TempoRC5_2 ; +1µs  
   movlw   0x50 ; +1µs - ( 0x50 = 80 )
movwf   TempoRC5_1 ; +1µs  
TEMPO_BIT_RC5_LOOP
   decfsz  TempoRC5_1 ; +1µs - ( 80 x 1 ) + 2 + ( 255 x 1 ) + 2 + ( 255 x 1 ) + 2 = 596
   goto    TEMPO_BIT_RC5_LOOP ; +2µs - ( 80 x 2 ) + ( 255 x 2 ) + ( 255 x 2 )             = 1180
   decfsz  TempoRC5_2 ; +1µs - (    1   ) + (    1    ) + (    2   )              = 4
goto    TEMPO_BIT_RC5_LOOP ; +2µs - (    2   ) + (    2    ) + (    2   )              = 6
   return ; +2µs

; Total: 1794µs

quelqu'un peut il confirmer ce calcul ?

je trouve 1794 au lieu de 1778 soit 16 µs de plus que la theorie, est ce génant ?
Est ce le bon calcul ?
En effet il y'a des jumps en plus qui on l'air d'avoir été négligé non ?

si je fais (3*80 ) + (3*255) + (3*255) = 1770 µs
si on rajoute l'init et le return 8    = 1778 µs
Mais j'ai l'impression qu'il y'a des jump qui n'on pas été pris en compte non ?

A++

Commentaire de natan01 le 12/09/2005 20:19:03

je trouve ce code tres interessant. moi j'aimerais le faire en VB. pouviez le mettre en ligne. merci en avance.

Commentaire de fouad177 le 11/02/2007 12:28:19

salut merci de se programme mais j'ai un probleme dans mon projet:je doit fair l'acquisition et l'affichage des signaux polyvalent via une carte d'acquisition et je crois que se code en assembleur va aider au partier d'acquisition mais comment fair pour afficher se signal est je utulise le port serie c'est tu as un programme dans se sens aider moi slp est voisi mon adresse email<< fouad_177@hotmail.com >>

Commentaire de didouni_ahlem le 26/02/2007 09:04:56

est ce que vous pouvez ajouter le code Vb (et si t'as le fais vous pouvez nous donner la référence) et merci d'avance

Commentaire de nesma le 21/04/2007 11:19:07

bonjour
je besoin d'un programme en microC (programmation de PIC 16F84A)pour la conversion de trame rc5 (code rc5 de commande universel)en trame rs232 pour la télèpilatage des equipements multimédias par courant porteur de ligne   (tv, vcr...)notre email abir.najeh@yahoo.fr
merci d'avance.

Commentaire de sacha04 le 23/05/2007 16:06:41

BJR ts le monde j ai un probleme avec mon projet: envoie de caractere par un pic 16F84 je pense qu il a pas de synchronisation entre le tx sortant du pic et le rs 232 ;pouvez vs me donnez un coup de main s il vs plait en faite mon projet est sys d alarme par envoie de gsm ;bon ts d abord les commande at marche a merveille mais le programme en assembleur nn .
j espere que j aurai une reponse le plus tot possible je vs serai reconnaissant merci ."sacha_jen@hotmail.com"ou slaveofpeace@hotmail.fr "  a l aide ..................

Commentaire de sacha04 le 23/05/2007 16:07:49

slaveofpeacereturn@hotmail.fr  dsl je ss fatigue...

Commentaire de sacha04 le 02/06/2007 23:36:44

c fé le programme ca marche bien mnt pas besoin d'aide qui vt l'aide sur se projet on peu l'aidé .
pistoos la prochain fios n'ecris pas mon adresse sur les forume c pas bien ok chaftek chowafa

Commentaire de azian456 le 10/06/2007 17:54:48

salut,j'ai le mem projet et j'ai besion de quelque explication sur le branchement de la pate 4 (MCLR) du pic SVP!!
merci d'avance

Commentaire de sacha04 le 12/06/2007 20:12:31

azian voila msn slaveofpeacereturn@hotmail.fr ou sur sacha_jen@hotmail.com notre programe et open source on le donne a n'importe ki vive le gratuit

Commentaire de lamihi le 13/12/2007 03:47:50

merci pour ce programme.
j'ai un projet sous le theme "commande d'un moteur pas à pas par le port série du pc a l'aide de l'assembleur 8086" et j'aimerai bien que tu m'aide et c'est gentil de ta part

Commentaire de sid34 le 18/12/2007 21:18:11

merci pour ce programme

Commentaire de samulric le 14/11/2008 18:14:35

je pense que tu pourras m'aider. Je développe un projet de soutenance qui télécommande des appareils avec un téléphone portable. Pour le c½ur du système j'ai décidé d'utiliser un PIC16F84. Il compte le nombre de sonnerie,lance la prise de la ligne,diffuse un message vocal via un autre dispositif,reçoit les chiffres tapés par celui qui commande à distance et en fonction de ces chiffres active une sortie qui pointe sur un relais.Enfin, il envoie un message pour informer l'opérateur si la tâche a été effectuée ou pas.
Je pense que tu vois à peu près ce que je veux faire. Si tu peux vraiment m'aider, ce sera très bien. Mon mail est samulric@hotmail.com.
Merci d'avance.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,047 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales