
Chaque fois qu'on appuie sur un bouton de la télécommande, le récepteur infrarouge reçoit un signal (Trame) de 14 bits
Le bit T a une importance capitale lors de la programmation. En effet, quand on appuie sur une touche, on ne reçoit pas une seule trame mais plusieurs. Il faut donc retenir la première et rejeter les autres. Pour cela on utilise le bit T car toutes les trames reçues pendant un appui ont le même bit T. Celui-ci change dès qu'on relâche et on appuie de nouveau

Si on considère qu'un apui dure à peu près 1/2 seconde, on a le temps de lire 5 trames, d'où la nécessité de gérer le bit T
|
Touche |
Code TV |
Code VCR |
|
0 |
0 |
0 |
|
1 |
1 |
1 |
|
2 |
2 |
2 |
|
3 |
3 |
3 |
|
4 |
4 |
4 |
|
5 |
5 |
5 |
|
6 |
6 |
6 |
|
7 |
7 |
7 |
|
8 |
8 |
8 |
|
9 |
9 |
9 |
|
-/++ |
10 |
10 |
|
StandBy |
12 |
12 |
|
mute |
13 |
|
|
Vol + |
16 |
|
|
Vol - |
17 |
|
|
Lumière + |
18 |
|
|
Lumière - |
19 |
|
|
CH + |
32 |
32 |
|
CH - |
33 |
32 |
|
Fast rew |
|
50 |
|
Fast forw |
|
52 |
|
Play |
|
53 |
|
Stop |
|
54 |
|
Record |
|
55 |
Moi, j'ai réalisé mon programme en assembleur MPASM sur un PIC. Je préfère ne pas déposer le source ici car cela incite à la solution de facilité. L'objectif est de plonger dedans ce qui permet d'apprendre beaucoup de choses. Je vais donc donner juste un organigramme qui peut être adapté à n'importe quel langage de programmation.
On va travailler sur la figure ci-dessous
Le point 1 est le début de la trame, il se situe au milieu du premier bit de start
Le point 2 se situe 1/4 de bit avant la transition du bit T
Le point 3 se situe juste après avoir lu et traité la transition T
Le point 4 se situe 1/4 de bit avant la transition du bit A4
Le point 5 se situe juste après avoir lu et traité la transition de A4
Le reste des points sont similaires au point 4 et 5

L'organisation du programme dépendra de chaque programmeur et de l'application qu'il désire réaliser. On peut dans un premier temps commencer ainsi
Programme principal : attend une touche télécommande et l'affiche. Si on appuie sur la touche standby (code 12) on efface l'écran. Si c'est la touche 1, on allume/éteint une LED
touche : fonction qui attend une touche de la télécommande et retourne les variable suivantes :
RC_VALID : paramètre retourné par la fonction lirebit indiquant si la trame est valide ou non (j'ai choisi le bit DC de STATUS)
RC_NEWT : valeur du bit T (0 ou 1)
RC_ADR : valeur du mot adresse (entier 5 bits)
RC_CODE : code de la touche appuyée (entier 6 bits)
lirebit : cette fonction doit être appelée des points 2, 4, 6 ... Elle attend la transition et retourne
RC_VALID =1 si transition trouvé, =0 si transition non trouvée au bout de 1/2 * 1778 µs, dans ce cas, la trame sera rejetée (pour ce paramètre, moi j'ai choisi le bit DC de STATUS)
RC_BIT : dans le cas ou RC_VALID=1, RC_BIT= valeur du bit correspondant à la transition (moi j'ai choisi le bit C de STATUS ce qui me permet de l'injecter facilement dans une variable à l'aide d'une rotation à gauche)
delay0 : temporisation T0 voisine de 25 ms que nous utiliseront quand on veut rejeter une trame et se placer après la fin de la trame quelque soit la position où l'on se trouve
delay1 : temporisation T1 voisine 1.75*1778µs soit quelque 3110µS qui nous permettra d'aller du point 1 au point 2
delay2 : temporisation T2 voisine de 0.75*1778µs (1333µs) qui nou permettra d'aller du point 3 au point 4

La fonction la plus importante est la fonction touche, en voici un organigramme dont la fiabilité n'engage personne :-)

La fonction lirebit est aussi importante, en voici un organigramme :
