spi_master.c
来自「AVR的SPI的通信例子」· C语言 代码 · 共 36 行
C
36 行
#include "SPI_Master.h"
void SPIInit(void)
{
volatile INT8U temp;
DDRB |= (1<<MOSI)|(1<<SCK)|(1<<SS); //MISO=input and MOSI,SCK,SS = output
DDRB &=~(1<<MISO);
PORTB|= (1<<SCK)|(1<<MOSI)|(1<<SS);
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0); //SPI允许,主机模式,MSB,不允许SPI中断,极性方式00,1/2系统时钟速率
SPSR = 1<<SPI2X;
temp = SPSR;
temp = SPDR; //清空SPI,和中断标志,使SPI空闲
}
void SPIPutChar(INT8U data)
{
PORTB&=~(1<<SS);
SPDR=data;
while(!(SPSR&(1<<SPIF)));
PORTB|=1<<SS;
}
INT8U SPIGetChar(void)
{
INT8U data;
PORTB&=~(1<<SS);
SPDR=0;
while(!(SPSR&(1<<SPIF)));
PORTB|=1<<SS;
data=SPDR;
data=SPDR;
return data;
}
/*-------------------------------End Of File-------------------------------*/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?