Hola buenas, os cuento, el código de KILLERJC funcionando:
#include <16f876a.h>
#fuses xt,nowdt,noprotect,noput
#use delay (clock=4M)
//solo transmitimos datos pin_c6 del pic//
#use rs232(baud=9600, xmit=pin_c6,rcv=pin_c7,bits=8,parity=n)
#byte puerto_a=0x05
#byte puerto_b=0x06
#byte puerto_c=0x07
int8 play1[8] ={0x7E,0xFF,0x06,0x03,0x00,0x00,0x01,0xEF};
int8 play2[8] ={0x7E,0xFF,0x06,0x03,0x00,0x00,0x02,0xEF};
int8 stop[8] ={0x7E,0xFF,0x06,0x0E,0x00,0x00,0x00,0xEF};
int8 i;
void main ()
{
set_tris_a (0x00) ;
set_tris_b (0b00000111) ;
set_tris_c (0x00) ;
while (true)
{
if(input(pin_b0)==1)
{
//for ( i=0 ; i <=8; i++) putc(play[i]);
for ( i=0 ; i < sizeof(play1); i++) putc(play1[i]);
while(input(pin_b0)==1);
}
if(input(pin_b1)==1)
{
for ( i=0 ; i < sizeof(play2); i++) putc(play2[i]);
while(input(pin_b0)==1);
}
if(input(pin_b2)==1)
{
for ( i=0 ; i < sizeof(stop); i++) putc(stop[i]);
while(input(pin_b0)==1);
}
}
}
Inicialmente conecte el MP3 con el PC y con el software del MP3 lo primera trama que le mande “ 7E FF 06 09 00 00 02 EF ” y luego play de la primera canción 0xFF,0x06,0x03,0x00,0x00,0x01,0xEF
como pone el datasheets:
After power up, you should send the command [Select device] first. Serial MP3 Player
only supports micro sd card, so you should send “ 7E FF 06 09 00 00 02 EF ”.
Then you can send the command [Play with index] to play some song.
Cuando sustituyo el PC por el PIC entiendo que no hace falta volver a enviarle trama de [Select device] porque me ha funcionado sin enviarla.
El error de principiante que tenía era que había conectado TX del PIC con TX del MP3 por eso no me funcionaba.
Agradecer la ayuda de KILLERJC y ACORANTF.