写一个51单片机模拟SPI总线的代码
SPI总线空闲电平为高电平(即CPOL=1),在每个周期的第二个时钟沿采样(即CPHA=1)总线的读/写同步进行C语言或汇编语言都行...
SPI总线空闲电平为高电平(即CPOL = 1),在每个周期的第二个时钟沿采样(即CPHA = 1)
总线的读 / 写同步进行
C语言或汇编语言都行 展开
总线的读 / 写同步进行
C语言或汇编语言都行 展开
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=0;i<8;i++)
{
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=0;i<8;i++)
{
SPI_DO=1;
SPI_SCL=0;
delay(5);
temp=(temp<<1)+(unsigned char)SPI_DO;
SPI_SCL=1;
delay(5);
}
return (temp);
}
#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=0;i<8;i++)
{
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=0;i<8;i++)
{
SPI_DO=1;
SPI_SCL=0;
delay(5);
temp=(temp<<1)+(unsigned char)SPI_DO;
SPI_SCL=1;
delay(5);
}
return (temp);
}
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
随便一找,大把的,别这么懒。
追问
你帮我找一个吧(CPOL = 1 、CPHA = 1、读 / 写同步的)
我给你再加20分
追答
亲,我不要分。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-03-16
展开全部
可以去文库里找一份DS1302的程序参考一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
需要给你写一份吗
更多追问追答
追问
最好能帮我写一份,时序图看不大懂
最好能帮我写一份,时序图看不大懂
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询