tension885
Junior Member level 2
hello,
i want to connect my AT89c51 with one SPI slave (this slave supports SPI mode 0,0). since AT89c51 has no hardware based SPI , so i have to do programming in software for SPI master.
i am showing you SPI routines for SPI master.but i am confused about SPI modes.
i need some guidance....please tell me that
is this code correct?? i.e Can it communicate with SPI slave(supporting mode 0,0)??
please help me its very very urgent :cry
30 points will be rewarded for help
i want to connect my AT89c51 with one SPI slave (this slave supports SPI mode 0,0). since AT89c51 has no hardware based SPI , so i have to do programming in software for SPI master.
i am showing you SPI routines for SPI master.but i am confused about SPI modes.
i need some guidance....please tell me that
is this code correct?? i.e Can it communicate with SPI slave(supporting mode 0,0)??
please help me its very very urgent :cry
30 points will be rewarded for help
Code:
#include <reg51.h>
sbit miso = P2^0;
sbit mosi = P2^1;
sbit clk = P2^3; // clock =0 in start
sbit cs = P2^2;
void spi_write(unsigned char dat)
{
unsigned char i,c;
c = dat;
for(i=0;i<8;i++)
{
if((c&0x80)==0x80)
mosi = 1;
else
mosi = 0;
clk= 1;
c=c<<1;
clk= 0;
}
}
unsigned char spi_read()
{
unsigned char i, dat;
for(i=0;i<8;i++)
{
dat = dat<<1;
clk = 1;
if(miso)
dat = dat+1;
clk = 0;
}
return dat;
}
//please guys review my code and help me