用传统的51单片机实现SPI通讯,需要用I/O脚来模拟SPI协议,这比较麻烦。
选用STC8系列单片机,就具有了SPI接口了 ,只需要对寄存器 *** 作就行了。方便了很多了。如下图,这是STC8系列中的4个子系列,还有其它的子系列,就不再列举了。
这是我复制的,一搜一大堆#include <reg52.h>
sbit SPI_DI =P0^1//MMC数据输入
sbit SPI_DO =P0^0//MMC数据输出,可不接
sbit SPI_SCL=P0^2//时钟线
void Write_Byte(unsigned char value)
{
unsigned char i
for (i=0i<8i++)
{
if (((value>>(7-i))&0x01)==0x01)
SPI_DI=1
else SPI_DI=0
SPI_SCL=0
delay(5)
//必须要加延时,否则会因为 *** 作太快而不响应。
SPI_SCL=1
delay(5)
//必须要加延时,否则会因为 *** 作太快而不响应。
}
}
unsigned char Read_Byte()
{
unsigned char temp=0
unsigned char i
for (i=0i<8i++)
{
SPI_DO=1
SPI_SCL=0
delay(5)
temp=(temp<<1)+(unsigned char)SPI_DO
SPI_SCL=1
delay(5)
}
return (temp)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)