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 à linterface 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).
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.