SPI problem in P89v51RD2

Thread Starter

MONI_

Joined Mar 28, 2012
1
i have interfaced two p89v51rd2 micro-controllers configuring one as master and another as slave.
but i'm not getting any data and spi data transfer is not taking place. i used cro to check the spi clock signal but i'm just getting 5v dc signal. dont know what is the problem.
please anyone check whether my code is correct... i have doubt in slave configuration.
external connection:

code for master:

#include "p89v51rx2.h"
#include <INTRINS.H>
sbit SS= P1^4;
sbit spiclk = P1^7;
sbit MOS1 = P1^5;
sbit miso = P1^6;
sbit st = P2^1;
sbit irq = P2^0;
char xacc1,xacc2;
unsigned int i=0;

void msdelay( unsigned int);
void serial ();

void main()
{

SS = 1;
irq = 1;
SPCTL = 0xdf;
SPCFG = 0X00;
P1 = 0x40;
ES0 = 1;

while (1)
{
SPDATA = 0X11;
while (!(SPCFG & 0x80));
SPCFG = 0X00;
serial ();
}
}

void msdelay(unsigned int ms)
{
unsigned int i,j;
for (i=0;i<ms;i++)
for (j=0;j<53;j++);
}

void serial ()
{

while (1)
{
TMOD = 0x20;
TH1 = 0xfd;
SCON = 0x50;

TR1 = 1;
TI = 0;
SBUF = xacc1;
while (!TI);
TI = 0;

TR1 = 1;
SBUF = xacc2;
while (!TI);
TI = 0;
}

code for slave:

#include "p89v51rx2.h"
#include <INTRINS.H>
sbit SS= P1^4;
sbit spiclk = P1^7;
sbit MOS1 = P1^5;
sbit MISO = P1^6;
sbit irq = P2^0;

unsigned int i=0;

void main()
{
SPCFG = 0X00;
SPCTL = 0xcd;
P1 = 0xc0;
SS = 0;
ES0 = 1;

irq = 0;
while (!(SPDATA == 0X11));
SPDATA = 0x4E;
for(i=0;i<10;i++);

while (!(SPDATA == 0X22));
SPDATA = 0x52;
for(i=0;i<10;i++);
}

please tell me what is the problem with the code... thank u
 
Top