您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>电子元器件>接口定义>

源代码 - 3线双向零等待IO通讯机制

2011年09月28日 17:53 本站整理 作者:叶子 用户评论(0
附源代码:

  sbit MCLK=P3^5;

  sbit SCLK=P3^6;

  sbit SDA=P3^7;

  uchar bdata DATA;

  sbit BIT0=DATA^0;

  sbit BIT7=DATA^7;

  // 发送一个数据

  putbytespi(uchar ch)

  {

  uchar i;

  uint c;

  if(!MCLK)return; //

  MCLK=0; //申请通讯

  DATA=ch;

  for(i=4;i!=0;i--)

  {

  while(SCLK); //检测从机响应

  SDA=BIT0; //放一个bit到SDA

  MCLK=1;

  DATA=DATA>>1; //准备下一个bit

  while(!SCLK); //检测从机响应

  SDA=BIT0; //放一个bit到SDA

  MCLK=0;

  DATA=DATA>>1; //准备下一个bit

  }

  while(SCLK); //检测从机收完

  MCLK=1;

  while(!SCLK);//等待从机准备好

  SDA=1;

  }

  //接收一个数据

  //调用之前最好检测MCLK是否为0(对方是否申请数据通讯)再进入,否则里面是死等此信

  号!

  uchar getbytespi()

  {

  uchar i;

  while(MCLK);

  SCLK=0; //接受通讯请求

  for(i=4;i!=0;i--)

  {

  DATA=DATA>>1; //准备收下一个bit

  while(!MCLK); //检测主机放数据

  BIT7=SDA;//收一个bit

  SCLK=1;

  DATA=DATA>>1; //准备收下一个bit

  while(MCLK); //检测主机放数据

  BIT7=SDA; //收一个bit

  SCLK=0;

  }

  while(!MCLK); //检测主机发完

  SCLK=1;

  return(DATA);

  }

非常好我支持^.^

(0) 0%

不好我反对

(0) 0%

( 发表人:叶子 )

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!