#define flash_SCK RD6
#define flash_SO RD2
#define flash_SI RD7
unsigned char write_SPI(unsigned char flash_dat)
{
unsigned char i;
flash_SCK= 0;
for(i=0;i<8;i++)
{
if(flash_dat&0x80)
flash_SI=1;
else
flash_SI=0;
flash_dat= flash_dat<<1;
delay(2);
flash_SCK= 1;
}
}
unsigned char read_SPI(void)
{
unsigned char i,rByte=0;
for(i=0;i<8;i++)
{
flash_SCK=0;
flash_SCK=1;
rByte<<=1;
rByte|=flash_SO;
}
return rByte;
}
请不吝指教,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
unsigned char write_SPI(unsigned char flash_dat)
{
................
flash_dat= flash_dat<<1;
delay(2);
flash_SCK= 1;
delay(2); // 增加
}
unsigned char read_SPI(void)
{
unsigned char i,rByte=0;
for(i=0;i<8;i++)
{
flash_SCK=0;
flash_SCK=1;
delay(2); // 增加
rByte|=flash_SO;
rByte<<=1; // 应该在这,获取当前 BIT 状态后再左移
}
return rByte;
}
一周热门 更多>