Te adjunto el proyecto entero.
Es un programa, que simplemente coge una señal de la entrada de micro y despues de pasar por el codec lo manda al dsPIC, este simplemente devuelve la señal al codec y se exterioriza por el speaker.
Creo que multiplicando los valores llena el registro, y alomejor da igual el overflow... ya que simplemente el uno que le sobra lo omite...

.
Por otra parte me han dicho que en el codec.c :
while (!DCISTATbits.TMPTY); /* wait until TXBUF0 and TXBUF1 have been
moved to their shadow registers for
transmission */
TXBUF0 = 0x7FFF;
TXBUF1 = 0x2300;
while (!DCISTATbits.TMPTY); Esta condición mira si el registro de enviar está vacio.(Lo pone en el datasheet.)
El TXBUF0 = 0x7FFF; significa que le avisa al codec, que en vez de información audio se le va a mandar información de inicialización...
y que con
TXBUF1 = 0x2300; se le dice la información para inicializarlo.
Mi pregunta...
Donde puedo encontrar cual es la informacion que se le envia cuando dice;
TXBUF1 = 0x2300???
Y de donde ha sabido que al darle el valor 0x7FFF se le avisa al codec que le va información de inicializar???
En el datasheet no tengo esa información, y no se donde encontrar...
Gracias jonathan por mostrar este interés desinteresadamente.