📄 spi.c
字号:
/********************************************************************
ATmega16L学习板SPI接口程序
晶振频率: 8MHz
编译: ICCAVR 6.31
编写: hanzhaowei@2911.net
********************************************************************/
/*===================================================================
// 函数功能: 硬件SPI接口送出一个数据
// 形参: unsigned char 要送出的数据
// 返回: void
// 编写: 2004/6/23
===================================================================*/
void Lib_SPISend(unsigned char data)
{
SPCR = (1 << SPE) | (1 << MSTR) | (1 << SPR1); // enable hard SPI interface, use host mode, clock at fosc/64
PORTB &= ~CS_DISP;
SPDR = data; // transfer the data
while( !(SPSR & (1 << SPIF)) ); // wait last transfer end
SPCR &= ~(1 << SPE); // disable hard SPI interface
PORTB |= CS_DISP;
}
#define _SPICLK() {PORTB |= SCK;PORTB &= ~SCK;}
/*===================================================================
// 函数功能: 模拟SPI接口送出一个数据
// 形参: unsigned char 要送出的数据
// 返回: void
// 编写: 2004/6/22
===================================================================*/
void Lib__SPISend(unsigned char data)
{
unsigned char i;
unsigned char outdata;
outdata = data;
PORTB &= ~CS_DISP;
for(i = 0; i < 8; i++)
{
if(outdata & 0x80)
PORTB |= MOSI;
else
PORTB &= ~MOSI;
_SPICLK();
outdata <<= 1;
}
PORTB |= CS_DISP;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -