MSB LSB
SPI 数据寄存器为读/写寄存器,用来在寄存器文件和SPI移位寄存器之间传输数据。写
寄存器将启动数据传输,读寄存器将读取寄存器的接收缓冲器。
*/
#include<iom16v.h>
#include<macros.h>
#pragma interrupt_handler SPI_END: iv_SPI_STC
void SPI_MasterInit(void)// 初始化为主机
{
DDRB = (1<<DDB5)|(1<<PB7); //设置 MOSI和 SCK为输出,其他为输入
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);// 使能 SPI主机模式,设置时钟速率为 fck/16
}
void SPI_MasterTransmit(char cData) //主机数据发送
{
SPDR = cData; // 启动数据传输
while(!(SPSR & (1<<SPIF))); //等待传输结束
}
void SPI_SlaveInit(void)// 将SPI初始化为从机
{
DDRB = (1<<PB6); //设置 MISO 为输出,其他为输入
SPCR = (1<<SPE); //使能 SPI
}
char SPI_SlaveReceive(void)//从机数据接收
{
while(!(SPSR & (1<<SPIF))); // 等待接收结束
return SPDR;// 返回数据
}
void SPI_END()
{
//add your code here!
}