⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iic.lst

📁 Linux 系统中
💻 LST
📖 第 1 页 / 共 2 页
字号:
 105                  uchar retc;
 106                  uchar BitCnt;
 107                  retc = 0;
*** ERROR C231 IN LINE 107 OF IIC.C: 'retc': redefinition
 108                  SDA = 1;                //置数据线为输入方式
*** ERROR C231 IN LINE 108 OF IIC.C: 'SDA': redefinition
*** ERROR C231 IN LINE 108 OF IIC.C: 'SDA': redefinition
 109                  for(BitCnt = 0;BitCnt < 8;BitCnt++)
*** ERROR C141 IN LINE 109 OF IIC.C: syntax error near 'for'
*** ERROR C141 IN LINE 109 OF IIC.C: syntax error near '=', expected ')'
*** ERROR C129 IN LINE 109 OF IIC.C: missing ';' before '<'
 110                  {
 111                          _nop_();
 112                          SCL = 0;        //置时钟线为低,准备接收
 113                          _nop_();
 114                          nop();
 115                          nop();
 116                          nop();
 117                          nop();
 118                          SCL = 1;        //置时钟线为高使得数据有效
 119                          nop();
 120                          nop();
 121                          retc = retc << 1;       //左移补零
 122                          if (SDA == 1)
 123                          retc = retc + 1;        //当数据为真加一
C51 COMPILER V6.23a  IIC                                                                   08/23/2003 10:33:04 PAGE 4   

 124                          nop();
 125                          nop();
 126                  }
 127                  SCL = 0;
 128                  nop();
 129                  nop();
 130                  return(retc);
 131          }
 132          
 133          /*-----------------------------------------
 134          应答子函数
 135          原型:void Ack_I2c(bit a);
 136          功能:主控器进行应答信号,(可以是应答或者非应答信号)
 137          -----------------------------------------*/
 138          void Ack_I2C (bit a)
 139          {
 140                  if( a == 0)SDA = 0;                     //在此发出应答信号或者非应答信号
 141                  else SDA = 1;
 142                  nop();
 143                  nop();
 144                  nop();
 145                  SCL = 1;
 146                  nop();
 147                  nop();
 148                  nop();
 149                  nop();
 150                  nop();
 151                  SCL = 0;
 152                  nop();
 153                  nop();
 154          }
 155          
 156          /*----------------------------------
 157          向无子地址器件发送字节数据函数
 158          函数原型:bit ISendByte( uchar sla,uchar c);
 159          功能:从启动总线到发送地址,数据,结束总线的全过程,从器件地址
 160          sla。如果返回1表示操作成功,否则表示有误
 161          -----------------------------------*/
 162          bit ISendByte (uchar sla,uchar c)
 163          {
 164                  Start_I2C();            //启动
 165                  SendByte(sla);          //发送器件地址
 166                  if(ack == 0)
 167                  return(0);
 168                  SendByte(c);            //发送数据
 169                  if(ack == 0)
 170                  return(0);
 171                  Stop_I2C();                     //结束
 172                  return(1);      
 173          }
 174          
 175          /*------------------------------------
 176          向有子地址器件发送多字节数据函数
 177          函数原型:bit ISendStr(uchar sla,uchar suba,uchar *s,uchar no);
 178          功能:启动地址,发送地址,数据,结束全过程
 179          从器件地址sla,子地址suba,发送内容是s指向的内容,发送
 180          no个字节,如果返回1表示成功,否则表示有问题
 181          ---------------------------------*/
 182          bit ISendStr(uchar sla,uchar suba,uchar *s,uchar no)
 183          {
 184                  uchar i;
 185                  Start_I2C();    //启动总线
C51 COMPILER V6.23a  IIC                                                                   08/23/2003 10:33:04 PAGE 5   

 186                  SendByte(sla);  //发送器件地址
 187                  if(ack == 0)
 188                  return(0);
 189                  SendByte(suba); //发送器件子地址
 190                  if(ack == 0);
 191                  return(0);
 192                  for (i = 0;i < no; i++)
 193                  {
 194                          SendByte(*s);   //发送数据
 195                          if(ack == 0)
 196                          return(0);
 197                          s++;
 198                  }
 199                  Stop_I2C();             //结束总线
 200                  return(1);      
 201          }
 202          
 203          /*-----------------------------------
 204          向无子地址器件读取字节数据函数
 205          函数原型: bit IRcvByte(uchar sla,uchar *c)
 206          功能:从启动总线到发送地址、读数据,结束总线全部过程,从器件地址sla
 207          子地址suba,读出内容放在s指向的存储区,读no个字节
 208          如果返回1表示操作成功,否则表示操作有误
 209          ---------------------------------*/
 210          bit IRcvByte(uchar sla,uchar *c)
 211          {
 212                  Start_I2C();            //启动总线
 213                  SendByte(sla+1);        //发送器件地址
 214                  if(ack==0)
 215                  return(0);
 216                  *c = RcvByte();
 217                  Ack_I2C(1);             //发送非就应答位
 218                  Stop_I2C();             //结束总线
 219                  return(1);
 220          }
 221          
 222          /*-----------------------------------
 223          向有子地址器件读取多字节数据函数
 224          
 225          
 226          
 227          ----------------------------------*/
 228          bit IRcvStr(uchar sla,uchar suba,uchar *s,uchar no)
 229          {
 230                  uchar i;
 231                  Start_I2C();            //启动总线
 232                  SendByte(sla);          //发送器件地址
 233                  if(ack == 0)
 234                  return(0);
 235                  SendByte(suba);         //发送子地址
 236                  if(ack == 0)
 237                  return(0);
 238                  Start_I2C();            //启动
 239                  StartByte(sla+1);
 240                  if(ack == 0)
 241                  return(0);
 242                  for(i = 0;i < no - 1;i++)
 243                  {
 244                          *s = RcvByte();         //接收数据
 245                          Ack_I2C(0);                     //发送应答位
 246                          s++;
 247                  }
C51 COMPILER V6.23a  IIC                                                                   08/23/2003 10:33:04 PAGE 6   

 248                  *s = RcvByte();
 249                  Ack_I2C(1);                     //发送就答位
 250                  Stop_I2C();
 251                  return(1);
 252          } 
 253                  
 254          
 255          }

C51 COMPILATION COMPLETE.  1 WARNING(S),  55 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -