========================================================*/
#include "reg51.h"
#include "intrins.h"
sbit X25_cs=P1^1;//片选接口
sbit X25_sk=P1^0;//时钟接口
sbit X25_si=P1^2;//数据输入接口
sbit X25_so=P1^3;//数据输出接口
void Write_Byte(unsigned char IData)
{
unsigned char i;
for(i=0;i<8;i++)
{
X25_cs=0;
NOP();
X25_sk=0;
IData<<=1;
NOP();
X25_si=CY;
NOP();
X25_sk=1;
NOP();
}
}
unsigned char Read_Byte(unsigned char Adress)
{
unsigned char count,i;
Write_Byte(0x03);
Write_Byte(Adress);
for(i=0;i<8;i++)
{
X25_sk=1;
count<<=1;
X25_sk=0;
if(X25_so) count++;
}
X25_cs=1;
return(count);
}
void WREN()
{
Write_Byte(0x06);
NOP();
X25_cs=1;
}
unsigned char WriteInData(unsigned char Address,unsigned char DataByte)
{ unsigned char mark ;
WREN();
Write_Byte(0x02);
Write_Byte(Address);
Write_Byte(DataByte);
//NOP();
X25_cs=1;
lag(3000);
mark=Read_Byte(Address);
if(DataByte==mark) SystemError=0;
if(mark!=DataByte) SystemError=1;
// return(SystemError);
}
//虽然是一读一写,但是其中暗藏杀机,让人很难调通。一定注意接口的位置!呵呵!不信你就按普通的SPI程序方法写写试试!