spi.c

来自「AVR典型实例.rar」· C语言 代码 · 共 40 行

C
40
字号
/* INCLUDE参数  */
#include <avr\io.h>

/************************************
*          SPI初始化
************************************/
void spi_init(void)
{
    DDRB|=(1<<4);                               /* SS端设置为输出 */
    DDRB|=(1<<5);                               /* MOSI端口设置为输出 */
    DDRB&=~(1<<6);                              /* MISO端口设置为输入 */
    DDRB|=(1<<7);                               /* SCK端口设置为输出 */
    SPCR|=(1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0); /* SPI ENABLE,MASTER MODE,Fsoc/16 */
	PORTB|=(1<<4);                              /* SS=1 */
}

/************************************
*        SPI转入高速模式
************************************/
void SPIHiSPD(void)
{
    SPCR|=(0<<SPR1)|(0<<SPR0);                    /* SPI ENABLE,MASTER MODE,Fsoc/16 */
	SPSR|=(1<<SPI2X); 
}

/************************************
*           SPI发送数据
************************************/
unsigned char spi_send(unsigned char data)
{
    unsigned char temp;
	SPDR = data;
    while(!(SPSR & (1<<SPIF)))
	{
	    asm("nop");
	}
	temp = SPDR;
	return temp;
}

⌨️ 快捷键说明

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