📄 spi.h
字号:
/*************************************
显示模式设置命令:00xxxB2B1B0 其中B2B1B0为显示位数减4的值
数据设置命令: 01XX0B3B2B1B0
数据显示列表:S15 S14 S13 S12 S11 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1 S0
*************************************/
volatile uchar spi_n=0;
volatile uchar spi_ddr[8]={0};
/*************************************
功能:初始化SPI(从机,模式2,1/16分频)
参数:无
返回值:无
编写人:王志辉
时间:2007年6月2日
*************************************/
void init_SPI(void)
{
//SPCR = (1<<SPIE)|(1<<SPE)|(1<<DORD)|(0<<MSTR)|(1<<CPOL)|(0<<CPHA)|(0<<SPR1)|(1<<SPR0);
//SPSR = (0<<SPIF)|(0<<WCOL)|(0<<SPI2X);
SPCR = (1<<SPIE)|(1<<SPE)|(1<<DORD)|(1<<CPOL)|(1<<CPHA)|(1<<SPR0);
//SPIE -------------1SPI中断使能,0中断禁止
//SPE--------------1使能SPI,0禁止SPI
//DORD -------------数据次序 1低位先发,0高位先发
// MSTR-------------1主机,0从机
//CPOL,CPHA ----------SPI模式选择
//SPI2X,SPI1X,SPI0X------SPI时钟频率设置(从机时不能高于系统时钟的1/4)
//SPIF -------------SPI中断标志位
//WCOL -------------写碰撞标志位
//DDR_SPI=(1<<DD_MISO);//手动设置MISO为输入
}
/*************************************
功能:SPI从机时简单的数据接收(测试用)
参数:无
返回值:收到的数据
编写人:王志辉
时间:2007年6月2日
*************************************/
char SPI_slaveRecive(void)
{while(!(SPSR&(1<<SPIF)));//判断是否有数据输入
return SPDR;//SPDR为SPI数据寄存器
}
/*************************************
功能:SPI中断
参数:无
返回值:无
编写人:王志辉
时间:2007年6月4日
*************************************/
SIGNAL(SIG_SPI)
{
UDR1=SPDR;
loop_until_bit_is_set(UCSR1A,UDRE1);
UCSR1A|=(1<<UDRE1);
SPDR=0xff;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -