您的位置 首页 发布

51单片机SPI总线的完成

———————–函数声明,变量定义——————————————————includereg51h&

//———————–函数声明,变量界说——————————————————

#include

#include

sbit SCK=P1^0;// 将p1.0口模仿时钟输出

sbit MOSI=P1^1;// 将p1.1口模仿主机输出

sbit MISO=P1^2;// 将p1.1口模仿主机输入

sbit SS1=P1^3;// 将p1.1口模仿片选

#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};

//———————————————————————————————–

// 函数称号: SPISendByte

// 进口参数: ch

// 函数功用: 发送一个字节

//————————————————————————————————

voidSPISendByte(unsignedcharch)

{

unsignedcharidata n=8;// 向SDA上发送一位数据字节,共八位

SCK = 1 ;//时钟置高

SS1 = 0 ;//挑选从机

while(n–)

{

delayNOP();

SCK = 0 ;//时钟置低

if((ch&0x80) == 0x80)// 若要发送的数据最高位为1则发送位1

{

MOSI = 1;// 传送位1

}

else

{

MOSI = 0;// 不然传送位0

}

delayNOP();

ch = ch<<1;// 数据左移一位

SCK = 1 ;//时钟置高

}

}

//————————————————————————————————

// 函数称号: SPIreceiveByte

// 回来接纳的数据

// 函数功用: 接纳一字节子程序

//————————————————————————————————

unsignedcharSPIreceiveByte()

{

unsignedcharidata n=8;// 从MISO线上读取一上数据字节,共八位

unsignedchartdata;

SCK = 1;//时钟为高

SS1 = 0;//挑选从机

while(n–)

{

delayNOP();

SCK = 0;//时钟为低

delayNOP();

tdata = tdata<<1;// 左移一位,或_crol_(temp,1)

if(MISO == 1)

tdata = tdata|0x01;// 若接纳到的位为1,则数据的最终一方位1

else

tdata = tdata&0xfe;// 不然数据的最终一方位0

SCK=1;

}

return(tdata);

}

//————————————————————————————————

// 函数称号: SPIsend_receiveByte

// 进口参数: ch

// 回来接纳的数据

// 函数功用:串行输入/输出子程序

//————————————————————————————————

unsignedcharSPIsend_receiveByte(unsignedcharch)

{

unsignedcharidata n=8;// 从MISO线上读取一上数据字节,共八位

unsignedchartdata;

SCK = 1;//时钟为高

SS1 = 0;//挑选从机

while(n–)

{

delayNOP();

SCK = 0;//时钟为低

delayNOP();

{

tdata = tdata<<1;// 左移一位,或_crol_(temp,1)

if(MISO == 1)

tdata = tdata|0x01;// 若接纳到的位为1,则数据的最终一方位1

else

tdata = tdata&0xfe;// 不然数据的最终一方位0

}

{

if((ch&0x80) == 0x80)// 若要发送的数据最高位为1则发送位1

{

MOSI = 1;// 传送位1

}

else

{

MOSI = 0;// 不然传送位0

}

ch = ch<<1;// 数据左移一位

}

SCK=1;

}

return(tdata);

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/fabu/257785.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部