Em baixo vão as rotinas que estou a utilizando para configurar o spi no micro.
cpp code
/************************** Bit Declarations *******************************/
sbit CS= P1^3;
sbit SCLK_3100= P1^7;
sbit DIN= P1^5;
sbit DOUT = P1^6;
unsigned char incoming;
void spi_init(void)
{
SS = 1;
MOSI = 1;
MISO = 1;
SCK = 1;
SPCR = 0x50; //interrupções SPI desligadas;canal SPI activo;1º transmitir MSB;selecciona modo Master SPI;
//CPOL=0(polaridade do clock;CPHA=0(fase do clock);SCK rate=4
}
uchar masterSPI(uchar dado)
{
SPDR = dado; // coloca dado no SPDR
while (!(SPSR & 0x80)) ; // espera ate o bit SPIF ficar em 1
return SPDR;
}
void max3100_start(void)
{
CS=0;
masterSPI(0xEC);
masterSPI(0x07);
CS=1;
IE=0x94; //activa interrupção serie e externa 1
}
void max3100_int(void) interrupt 2
{
CS=0;
masterSPI(0x00);
masterSPI(0x00);
temp=masterSPI(0);
temp2=masterSPI(0);
CS=1;
if((temp&0x80)==0x80)
incoming=temp2; //fica com o valor do RX
}
}
Por favor ajudem-me