SIRc (Sony) uses timing to encode a code into IR...
For example a startpulse is 2.4mS long, after that the code is transmitted in wich a "1" is 1.2mS long and a "0" is 0.6mS long, and all pulses are seperated by a 0.6mS space
For example the SIRc code 10101 would be...
2.4mS Signal (Start); 0.6mS nothing (space), 1.2 mS Signal (1), 0.6mS nothing (space) and so on.
It can all be done in software with the equipment you already have
Can't help you with basic code, I do all my Pic'ing in assembler
Winpicprog has a tutorial inplementing SIRc using Pic's but it's assembler