Antes que nada, creo que deberias definirnos primero cuanto sabes de pics, esto lo comento porque lo que pides yo creo que es muy sencillo, ya que se trata unicamente de tener 18 lineas de salidas al tablerito conformado por leds (2 lineas por casilla, una es para X, otra es para O). y debes tener 2 lineas de entrada (una para X, otra para 0). Ya con esto solo debes de tener un algorimo definido para el programa, La forma mas facil de hacer es declarando una matrix de 3x3 (of course in C) y checar lineas de 3 para ver si hizo gato, example..
void main() {
int MATRIZ[3][3];
if( MATRIZ[0][0]==MATRIZ[0][1]==MATRIZ[0][2] ) GATO();
if( MATRIZ[1][0]==MATRIZ[1][1]==MATRIZ[1][2] ) GATO();
if( MATRIZ[2][0]==MATRIZ[2][1]==MATRIZ[2][2] ) GATO();
y asi para el resto de convinaciones..
Alguna duda?