这是我写的一段spi进行双机通信的程序,但是我查了很久查不出为什么发送时数据没按我的要求走,感觉很乱,接收也没法接收到,麻烦高手们帮我看下程序并指教下错误的地方。
发送程序
#include "p18f24j10.h"
#define uchar unsigned char
#define uint unsigned int
uchar i,data;
uint a,b,c;
uchar send[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
void init(void)
{
INTCON=0;
ADCON1=0x07;
PIE1=0;
PIE2=0;
PIE3=0;
}
void mcu1spi_init(void)
{
SSPSTAT=0xC0;
SSPCON1=0x30;
TRISC=TRISC&0xD7;
TRISA=TRISC&0xDF;
PIR1bits.SSPIF=0;
}
void delay(uint c)
{
for(a=c;a>0;a--);
for(b=5;b>0;b--);
}
void spi_send(uchar data)
{
// for(i=0;i<8;i++)
// {
// data=pointer[i];
SSPBUF=data;
do
{
;
}while(PIR1bits.SSPIF==0);
PIR1bits.SSPIF=0;
// }
}
void main(void)
{
init();
mcu1spi_init();
while(1)
{
for(i=0;i<3;i++)
{
data=send[i];
spi_send(data);
}
}
接收程序
#include "p18f24j10.h"
#define uchar unsigned char
#define uint unsigned int
uchar read[8];
uchar i,data;
void init(void)
{
INTCON=0;
ADCON1=0x07;
PIE1=0;
PIE2=0;
PIE3=0;
}
void mcu2spi_init(void)
{
SSPSTAT=0xC0;
SSPCON1=0x30;
TRISC=TRISC|0x10;
TRISA=TRISC&0xf7;
PIR1bits.SSPIF=0;
}
uchar spi_receive(void)
{
mcu2spi_init();
SSPBUF=0;
do
{
;
}while(PIR1bits.SSPIF==0);
PIR1bits.SSPIF=0;
data=SSPBUF;
return (data);
}
void main(void)
{
init();
mcu2spi_init();
while(1)
{
for(i=0;i>7;i++)
{
read[i]=spi_receive();
}
}
}
} |