pic单片机spi如何读取简单的0,1信号
初学者,想要通过spi发送0,1数据一片单片机发送到eepromvoidwrite(intdata,intaddr){WEN();CS=0;SSPBUF=addr;whi...
初学者,想要通过spi发送0,1数据
一片单片机发送到eeprom
void write(int data,int addr)
{
WEN();
CS=0;
SSPBUF=addr;
while(!SSPBUF){}
SSPIF=0;
SSPBUF=data;
while(!SSPBUF){}
SSPIF=0;
CS=1;
}
void send()
{
write(a,0x03);
write(b,0x04);
write(c,0x05);
write(d,0x06);
write(e,0x07);
write(f,0x08);
write(g,0x09);
write(h,0x0a);
}
另一片单片机读出数据
int read(int addr)
{
int data;
CS=0;
SSPIF=0;
SSPBUF=addr;
while(!SSPIF){}
SSPIF=0;
SSPBUF=0;
while(!SSPIF){}
data=SSPBUF;
SSPIF=0;
CS=1;
return data;
}
void rtemp()
{
a1=read(0x03);
b1=read(0x04);
c1=read(0x05);
d1=read(0x06);
e1=read(0x07);
f1=read(0x08);
g1=read(0x09);
h1=read(0x0a);
}
这样能不能传输0,1信号,应该怎么办 展开
一片单片机发送到eeprom
void write(int data,int addr)
{
WEN();
CS=0;
SSPBUF=addr;
while(!SSPBUF){}
SSPIF=0;
SSPBUF=data;
while(!SSPBUF){}
SSPIF=0;
CS=1;
}
void send()
{
write(a,0x03);
write(b,0x04);
write(c,0x05);
write(d,0x06);
write(e,0x07);
write(f,0x08);
write(g,0x09);
write(h,0x0a);
}
另一片单片机读出数据
int read(int addr)
{
int data;
CS=0;
SSPIF=0;
SSPBUF=addr;
while(!SSPIF){}
SSPIF=0;
SSPBUF=0;
while(!SSPIF){}
data=SSPBUF;
SSPIF=0;
CS=1;
return data;
}
void rtemp()
{
a1=read(0x03);
b1=read(0x04);
c1=read(0x05);
d1=read(0x06);
e1=read(0x07);
f1=read(0x08);
g1=read(0x09);
h1=read(0x0a);
}
这样能不能传输0,1信号,应该怎么办 展开
2个回答
展开全部
问题不清。SPI串行通信是用来发送接收“字节”数据,你说的简单0,1信号是指什么?1个字节有8个0,1数据,不可以吗?如果你不习惯(0x03)16进制的写法,你可以改成2进制的写法(0b00000011),用二进制的写法,0,1你可以按你需要的自己设置。
追问
你好,只是想发送二进制的0,1数据,采用spi,数据发送到另一芯片后,地址是什么,怎么读取,不太明白,能详细说说嘛,万分感谢
追答
SPI只是一个四线串行通信协议,你把字节数据丢到SSPBUF里,数据就会串行移位发送出去。如果你只是从一个芯片发送到另一个芯片,那么一个做SPI的Master主,另一个做SPI Slave从。SPI有片选信号CS,所以也不需要什么地址了,把要发的0,1数据组成一个字节,丢到SSPBUF里就好了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询