写一个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);
}
迪凯特科技(北京)有限公司_
2025-01-03 广告
2025-01-03 广告
单片机串口通信的原理是利用单片机的串口通信模块,通过把数据转化为一位一位的用时序方式传送数据,实现单片机与外部设备之间的数据通信。
串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以...
点击进入详情页
本回答由迪凯特科技(北京)有限公司_提供
展开全部
随便一找,大把的,别这么懒。
追问
你帮我找一个吧(CPOL = 1 、CPHA = 1、读 / 写同步的)
我给你再加20分
追答
亲,我不要分。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-03-16
展开全部
可以去文库里找一份DS1302的程序参考一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
需要给你写一份吗
更多追问追答
追问
最好能帮我写一份,时序图看不大懂
最好能帮我写一份,时序图看不大懂
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询