void START_93c66()
{
// SPI_DO=1; /*防止DO 由于是低电平而无法输入*/
CS=1;
/*开启93c66*/
CS=0;
SPI_CLK=0;
SPI_DI=0;
CS=1;
delay_ms(5);
}
//==============================================================
void clock(void)
{
SPI_CLK=0;
delay(5);
SPI_CLK=1;
delay(5);
}
//=====================spi--DO==================================
void spi_send(unsigned char dat,unsigned char num)
{
unsigned char i;
dat=dat<<(16-num);
for(i=0;i<num;i++)
{
SPI_DI=(char)(dat&0x8000);
clock();
dat<<=1;
}
}//=============================================================
unsigned char receive()
{
unsigned char sData,i;
// SPI_CLK=0;
for(i=0;i<8;i++)
{
SPI_CLK=1;
delay(5);
SPI_CLK=0;
delay(5);
if( SPI_DO==1)
{sData=sData|0x01;}
sData=sData<<1;
}
return sData;
}
//======================写使能===================================
void Ewen()
{
CS = 1;
// START_93c66();
spi_send(0x0013,0x05);
spi_send(0x0000,Addr_bit-2);
CS = 0;
// delay_ms(20);
}
//=======================写禁止===================================
void Ewds()
{
CS = 1;
spi_send(0x0004,0x03);
spi_send(0x0000,Addr_bit);
CS = 0;
delay_ms(20);
}
//========================读地址==================================
unsigned char Read(unsigned char address)
{
unsigned char d ;
CS=1;
// SPI_CLK=1;
// delay(2);
// START_93c66();
spi_send(0x0006,0x03);
spi_send(address,Addr_bit);
d=receive();
// delay(2);
CS=0;
// delay_ms(20);
return d;
}
//=========================写数据=================================
void Write(unsigned int address,unsigned int InData)
{
Ewen();
delay(6);
CS=1;
// START_93c66();
spi_send(0x0005,0x03); // write comman
spi_send(address,Addr_bit); // write comman
spi_send(InData,0x08); // send low byte
CS=0;
delay_ms(2);
CS=1;
while(SPI_DO=0)
{
// delay_ms(1);
SPI_CLK=0;
}
SPI_DO=1;
CS=0;
// delay_ms(20);
}
//=========================================================
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>