写一个51单片机模拟SPI总线的代码

写一个51单片机模拟SPI总线的代码,第1张

这是我复制的,一搜一大堆

#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)

}

下面就是一个 SPI 输出的函数,时序,在程序里面,表述的非常清楚。

sbit sck = P2^7//移位时钟

sbit da1 = P2^6//串行数据

void send(char dat)

{

char i

for(i = 0i <8i++) {

if((dat >>i) &0x01) da1 = 1 else da1 = 0

sck = 0 sck = 1

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7977580.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存