Un enlace con bastante jugo antes de que se me olvide:
http://miarroba.com/foros/ver.php?foroid=6510&temaid=1522524Pa ver un poco como funciona el RC5 podemos echar mano del dibujito

La cadena está formada por 14 bits,dos bits de start,un bit de toggle,y los 11 restantes conforman el código numérico que corresponde a las diferentes funciones del mando: 5 para dirección y los otros 6 para el código en sí,siendo los bits mas significativos los primeros que se envian.
Los bits de start son siempre igual: dos unos.
Los bits de direccion entiendo que ,además de diferenciar entre diferentes módulos en un mismo aparato(volúmen,canales,etc),caracteriza también a los diferentes tipos de aparato(dvd,televisor,radio.etc).
Así para cada botón pulsado,esta cadena de 11 bits será diferente.
Cada bit de dato está formado por dos valores lógicos:
"01" para el 1 lógico y "10" para el 0.
Cada bit tiene una duración de 1.788 ms si no recuerdo mal,por lo que para capturar todos los bits tendremos que crearnos una base de tiempos,con el timer,por ejemplo, de 1.788 segundos para que,una vez que detectemos el cero correspondiente al 1 lógico del primer bit de start (cuando el repector está inactivo,la línea siempre está a 1 lógico) habilitemos la interrupción y así ir capturando un bit aproximadamente cada 1.8 ms.Eso se puede hacer de varias maneras.CCS no tiene muy desarrollado el tema de variables tipo booleana así que se puede guardar el valor de cada uno de los bits en una variable entera.Otra opción es declarar 12 variables de tipo booleano,11 para el código y una para el bit de toggle,el cual nos interesa guardar.
Cuando dejamos un botón pulsado,la trama (de unos 25 ms) es enviada tal cual una y otra vez,con un espacio de tiempo de unos 100 ms entre trama y trama.Digo tal cual porque se repite al completo,mientras que si pulsáramos el mismo botón dos o más veces,el bit de toggle iría alternando su valor cada vez.Lo mismo sucede si pulsamos diferentes botones.
O sea,pulsación prolongada: varias tramas y bit de toggle no cambia...
...pulsaciones cortas: una trama por pulsación y en cada una toggle alterna su valor.