#ifndef _V_SPI_
SPCR = (1/ 使能SPI接口,主机模式,LSB低位在先,模式0,16分频,SPI时钟约1MHz
#endif
}
void un_init_SPI(void)
{
SPI_DDR |=(1
char spi_rw(char wdata)
{
#ifndef _V_SPI_
SPDR = wdata;// 传送数据到SPI寄存器
loop_until_bit_is_set(SPSR,SPIF);// 等待数据传送完?
return(SPDR);// 读取数据
#else
char rdata = 0;
char i = 0;
for(i = 0;i < 8;i ++)
{
SPI_PORT &= ~(1 << DS1302_SCK);//时钟拉低
if(wdata & 0x01)
{
SPI_PORT |= (1 << DS1302_MOSI);
}
else
{
SPI_PORT &= ~(1 << DS1302_MOSI);
}
wdata >>= 1;//右移一位
rdata >>= 1;//右移一位
if(SPI_PIN & (1 << DS1302_MISO))
{
rdata |= 0x80;
}
SPI_PORT |= (1 << DS1302_SCK);//时钟拉高,产生上升沿
}
SPI_PORT &= ~(1 << DS1302_SCK);//时钟拉低
return(rdata);// 读取数据
#endif
}
#ifndef _SPI_
#define _SPI_
void init_SPI(void);
char spi_rw(char wdata);
void un_init_SPI(void);
#endif