您现在的位置: 主页 > MCU > 单片机技术应用 > ATMEGA8 SPI 总线读写 93C46 -
本文所属标签:
为本文创立个标签吧:

ATMEGA8 SPI 总线读写 93C46 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]
//PINassignment#defineSSPB2//Chipselect#defineSCKPB5//cLOCk#defineMOSIPB3//input#defineMISOPB4//output#defineSS_SET(PORTB|=(1

//PINassignment

#defineSSPB2//Chipselect

#defineSCKPB5//cLOCk

#defineMOSIPB3//input

#defineMISOPB4//output

本文引用地址: http://www.21ic.com/app/mcu/201807/765322.htm

#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

}




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > ATMEGA8 SPI 总线读写 93C46 -
 

"ATMEGA8 SPI 总线读写 93C46 -"的相关文章

网站地图

围观()