i dont know how ISD17xx works..
but this is my Soft SPI routine which i used in my ISD4002
#define POWERUP 0b0010000000000000
#define SETPLAYMODE 0b1110000000000111
#define PLAYBACK 0b1111000000000000
#define SETREC 0b1010000000000111
#define REC 0b1011000000000000
#define STOP 0b0011000000000000
#define DATAPIN ra2
#define DATAIN ra3
#define CLOCKPIN rb5
#define CSPIN rb4
void SendSPI(long cmd)
{
unsigned char ctr;
CSPIN=LOW; //chipselect activate
delay_us(20);
for(ctr=0;ctr<16;ctr++)
{
DATAPIN=(Data>>(ctr)) & 0x01;
delay_cycles(400);
CLOCKPIN=HIGH;
delay_us(500);
CLOCKPIN=LOW;
delay_us(500);
}
CSPIN=HIGH; //chipselect deactivate
delay_us(1);
}
void SetPlay()
{
SendSPIData(POWERUP);
delay_ms(15);
SendSPIData(SETPLAYMODE | Address);
}
void SetRecord()
{
SendSPIData(POWERUP);
delay_ms(15);
SendSPIData(POWERUP);
delay_ms(25);
SendSPIData(SETREC | Address);
}
hope this helps you=)