Réception rc5 et transmission rs232 avec pic 16f84

Soyez le premier à donner votre avis sur cette source.

Snippet vu 65 313 fois - Téléchargée 27 fois

Contenu du snippet

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 / Exemple :


#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).

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2
Date d'inscription
samedi 11 décembre 2010
Statut
Membre
Dernière intervention
21 décembre 2010

c'est vraiment cool.Moi j'aimerais savoir comment vous faites la réception sur visual basic.merci d'avance
Messages postés
1
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
12 décembre 2010

slt çava mon ami j ai un projet de fin etude est complequé c'est telecommande a base pic 16F84 JE cherche les etudes de ce projet et programme de pic "mcproof_pierre@hotmail.fr"
Messages postés
2
Date d'inscription
samedi 2 décembre 2006
Statut
Membre
Dernière intervention
11 avril 2012

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.
Messages postés
1
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
18 décembre 2007

merci pour ce programme
Messages postés
1
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
13 décembre 2007

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
Afficher les 20 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.