两种方法实现单个引脚传输byte类型数据

这两天调试MCP2515碰到了如何通过MCU的单个引脚传输byte类型数据的问题,到网上检索了半天,也得不到有用的信息。只好自己调试,发现有两种比较简便的方法来实现这一功能,具体如下:

01 unsigned char sendData, recData; //sendData存放要发送的数据,recData存放接收到的数据
02 sbit SI = P1^2;                  //数据输出引脚
03 sbit SO = P1^3;                  //数据输入引脚
04
05 for (i=0; i<8; i++)
06 {
07      if(sendData & 0x80) //从字节最高位开始发送
08          SI = 1;
09      else
10          SI = 0;  
11 }//通过SI引脚完成一字节数据的发送
12
13 recData = 0; //接收前recData先清0
14 for(i=0; i<8; i++)
15 {
16      recData <<= 1;
17      if(SO)
18        recData++; //从字节最低位开始接收       
19 }//通过SI引脚完成一字节数据的接收
20
21 for (i=0; i<8; i++)
22 {
23      SI = sendData & 0x80; //byte类型赋值给bit类型,将byte变量中非0位赋给bit变量
24      sendData <<= 1;
25 }//通过SI引脚完成一字节数据的发送
26
27 recData = 0; //接收前recData先清0
28 for(i=0; i<8; i++)
29 {
30      recData <<= 1;
31      recData = recData | SO; //bit类型与byte类型位或运算,改变byte变量中的最低位
32      //recData = recData | (SO << 7); //报错“<< bad operand type”,可见不能改变byte变量的其他位
33 }//通过SI引脚完成一字节数据的接收

永不止步步 发表于02-28 15:21 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363741个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号