⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spi.c

📁 avr MP3 的源程序,包含文件系统,适合初学者
💻 C
字号:
//-------------------------------------------------------------------------
//FileName    : spi.c
//Created by  : ZhengYanbo
//Created date: 2006.4.8
//Version     : v1.0
//Fuction     : hardware and software spi operations
//Comments    : for vs1003 service
//-------------------------------------------------------------------------
#include "spi.h"
#include "vs1003.h"

#define SPI_clk_delay() #asm("nop")     

//***************************************************************************
//Routine for reading a BYTE from MMC/SD-Card
unsigned char SPI_TransferBYTE(unsigned char data)
//***************************************************************************
{ 
    SPDR=data;
    while(!(SPSR & 0x80)){};
    return (SPDR);
}

//############################################################################
//Software SPI Read 
unsigned char SPI_Read_Byte(void)
//############################################################################
{
    unsigned char Byte = 0;
    unsigned char a;

    //Software SPI
    
    for (a=8; a>0; a--) //MSB First
    {
    SPI_SCK=0;          //Clock Impulse (Low)
    SPI_clk_delay();    //clock Delay  
    if(SPI_MISO > 0)
    {
        Byte |= (1<<(a-1));
    }
    else
    {
        Byte &=~(1<<(a-1));
    }
    SPI_SCK=1;          //Clock Impulse (High)
    SPI_clk_delay();    //clock Delay		
    }
	
    //Return the value
    return (Byte);
}

//############################################################################
//Software SPI Write
void SPI_Write_Byte(unsigned char Byte)
//############################################################################
{
    unsigned char i;
    
    //Software SPI
    
    for (i=0; i<8; i++) //MSB First
    {
	if (((Byte >> (7-i)) & 0x01)==0x01)
	{
	    SPI_MOSI=1;   //Set Output High
	}
	else
	{
	    SPI_MOSI=0;   //Set Output Low
	}	
	SPI_SCK=0;    //Clock Impulse (LOW)
	SPI_clk_delay();	
	SPI_SCK=1;    //Clock Impulse(High) 
	SPI_clk_delay();  //clock Delay
    }
    SPI_MOSI=1;     //set output High
}

//end of spi.c

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -