当前位置:首页 > 单片机 > 单片机
[导读] //PINassignment#defineSSPB2//Chipselect#defineSCKPB5//cLOCk#defineMOSIPB3//input#defineMISOPB4//output#defineSS_SET(PORTB|=(1

//PINassignment

#defineSSPB2//Chipselect

#defineSCKPB5//cLOCk

#defineMOSIPB3//input

#defineMISOPB4//output

#defineSS_SET(PORTB|=(1<#defineSCK_SET(PORTB|=(1<#defineMOSI_SET(PORTB|=(1<
#defineSS_CLR(PORTB&=~(1<#defineSCK_CLR(PORTB&=~(1<#defineMOSI_CLR(PORTB&=~(1<

voidspi_init(void)
{
DDRB|=(1<DDRB&=~(1<
SPCR=0x53;
SPSR=0x00;
}


voidSendByte(u8sData)
{
SPDR=sData;
while(!(SPSR&(1<<SPIF)));
}



u8spi_read(void)
{
SPDR=0x00;
while(!(SPSR&(1<returnSPDR;
}

//////////////////////////////////////////////////

//startandstopconditionof93C46


voidStart(void)
{
u8temp;

temp=SPCR;
SPCR=0;//禁止SPI功能

//-----------------------------------------------

SCK_CLR;//手工产生一个起始位,93C46特殊的地方

MOSI_SET;//所以要特殊处理

SS_SET;
SCK_SET;
//-----------------------------------------------

SPCR=temp;//使能SPI功能

}

voidStop(void)
{
SS_CLR;
}

//////////////////////////////////////////////////

//writeenable/diable

voidEWEN(void)
{
Start();
SendByte(0x30);//EWENcommand

Stop();
}

voidEWDS(void)
{
Start();
SendByte(0x00);//EWDScommand

Stop();
}


//////////////////////////////////////////////////

//readword

u16ReadWord(u8addr)
{
u16temp=0;
u8hig,low;

Start();
SendByte(addr|0x80);//readcommand

//------------------------切换到SPI模式1

SPCR=0x5b;
hig=spi_read();
low=spi_read();
//------------------------切换回SPI模式0

SPCR=0x53;
Stop();
temp=(hig<<8)+low;
returntemp;
}

//////////////////////////////////////////////////

//writeaword

voidWriteWord(u16data,u8addr)
{
EWEN();
Start();
SendByte(addr|0x40);//writecommand

SendByte((u8)(data>>8));//sendhigbyte

SendByte((u8)data);//sendlowbyte

Stop();//waitatlease2ms

}

voidWriteAll(u16data)
{
EWEN();//writeenable

Start();
SendByte(0x10);//writecommand

SendByte((u8)(data>>8));//sendhigbyte

SendByte((u8)data);//sendlowbyte

Stop();//waitatlease10MS

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭