关于IIC 的读写问题 急求大神~~~~~~~~~~~~~~~~~~~~~~~

2019-07-16 03:33发布

  1. void  writebyte(char date)
  2. {
  3.         char i,temp;
  4.         temp = date;
  5.         for( i = 0; i < 8; i++)
  6.         {
  7.                 temp = temp<<1;
  8.                 SCL = 0;
  9.                 delay();
  10.                 SDA = CY;
  11.                 delay();
  12.                 SCL = 1;
  13.                 delay();
  14.         }
  15.         SCL = 0;                                          // scl 为什么要拉低?
  16.         delay();                       
  17.         SDA = 1 ;                                         // sda 为什么要拉高?       
  18.         delay();
  19. }

  20. char readbyte()
  21. {
  22.         char i,k;
  23.         SCL = 0;
  24.         delay();
  25.         SDA = 1;                          //这里的scl 和 sda 为何要分别为低电平和高电平?
  26.         delay();
  27.         for(i = 0; i < 8;i++)
  28.         {
  29.                 SCL = 1;                                     //当 scl为高电平的时候数据不可以改变
  30.         delay();
  31.                 k = ( k<<1 )|SDA;
  32.                 SCL = 0;                              
  33.                 delay();                  

  34.         }

  35.         return k;
  36. }
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
芊Sunshine
2019-07-16 10:47
  1.         SCL = 0;                                          // scl 为什么要拉低?

  2.           delay();                        

  3.              SDA = 1 ;                                         // sda 为什么要拉高?  
  4.    
复制代码如果要释放总线 scl 不应该也是高电平吗? 然后等待应答信号

一周热门 更多>