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

📄 iic.lst

📁 AT24c01存储器与单片机stc89C58硬件通讯
💻 LST
📖 第 1 页 / 共 2 页
字号:
 170          {
 171             Start_I2c();               //启动总线
 172             SendByte(sla);             //发送器件地址
 173             if(ack==0)return(0);
 174             SendByte(c);               //发送数据
 175             if(ack==0)return(0);
 176             Stop_I2c();                //结束总线 
 177             return(1);
 178          }
 179          */      
C51 COMPILER V8.17   IIC                                                                   03/09/2009 15:54:45 PAGE 4   

 180          /*******************************************************************
 181          功能:向有子地址器件发送多字节数据函数               
 182          函数原型: bit  ISendStr(uchar sla,uchar suba,ucahr *s,uchar no);  
 183          功能:     从启动总线到发送地址,子地址,数据,结束总线的全过程,从器件
 184                    地址sla,子地址suba,发送内容是s指向的内容,发送no个字节。
 185                    如果返回1表示操作成功,否则操作有误。
 186          注意:    使用前必须已结束总线。
 187          ********************************************************************/
 188          /*
 189          bit IISendByte(INT8U sla,INT8U suba,ININT8U c)
 190          {
 191             Start_I2c();               //启动总线
 192             SendByte(sla);             //发送器件地址
 193             if(ack==0)return(0);
 194             SendByte(suba);            //发送器件子地址
 195             if(ack==0)return(0);
 196             SendByte(c);                 //发送数据
 197             if(ack==0)return(0);
 198             Stop_I2c();                //结束总线 
 199             return(1);
 200          }
 201          */
 202          
 203          bit ISendStr(INT8U sla,INT8U suba,INT8U *s,INT8U no)
 204          {
 205   1              INT8U i;
 206   1              Start_I2c();               /*启动总线*/
 207   1              SendByte(sla);             /*发送器件地址*/
 208   1              if(ack==0)return(0);
 209   1              printf("abcd\n");
 210   1              SendByte(suba);            /*发送器件子地址*/
 211   1              if(ack==0)return(0);
 212   1      
 213   1              for(i=0;i<no;i++)
 214   1              {   
 215   2              SendByte(*s);            /*发送数据*/
 216   2              if(ack==0)return(0);
 217   2              s++;
 218   2              } 
 219   1              Stop_I2c();                /*结束总线*/ 
 220   1              return(1);
 221   1      }       
 222          /*******************************************************************
 223          功能:向无子地址器件发送多字节数据函数               
 224          函数原型: bit  ISendStr(uchar sla,ucahr *s,uchar no);  
 225          功能:     从启动总线到发送地址,子地址,数据,结束总线的全过程,从器件
 226                    地址sla,发送内容是s指向的内容,发送no个字节。
 227                    如果返回1表示操作成功,否则操作有误。
 228          注意:    使用前必须已结束总线。
 229          ********************************************************************/
 230          /*
 231          bit ISendStrExt(INT8U sla,INT8U *s,INT8U no)
 232          {
 233             INT8U i;
 234          
 235             Start_I2c();               //启动总线//
 236             SendByte(sla);             //发送器件地址//
 237             if(ack==0)return(0);
 238          
 239             for(i=0;i<no;i++)
 240             {   
 241                          SendByte(*s);            //发送数据//
C51 COMPILER V8.17   IIC                                                                   03/09/2009 15:54:45 PAGE 5   

 242                          if(ack==0)return(0);
 243                          s++;
 244             } 
 245             Stop_I2c();                //结束总线// 
 246             return(1);
 247          } 
 248          */      
 249          /*******************************************************************
 250          功能:向无子地址器件读字节数据函数               
 251          函数原型: bit  IRcvByte(INT8U sla,INT8U *c);  
 252          功能:     从启动总线到发送地址,读数据,结束总线的全过程,从器件地
 253                    址sla,返回值在c.
 254                     如果返回1表示操作成功,否则操作有误。
 255          注意:    使用前必须已结束总线。
 256          ********************************************************************/
 257          /*
 258          bit IRcvByte(INT8U sla,INT8U *c)
 259          {
 260             Start_I2c();                //启动总线//
 261             SendByte(sla+1);            //发送器件地址//
 262             if(ack==0)return(0);
 263             *c=RcvByte();               //读取数据//
 264             Ack_I2c(1);                 //发送非就答位//
 265             Stop_I2c();                 //结束总线// 
 266             return(1);
 267          }
 268          */      
 269          /*******************************************************************
 270          功能:向有子地址器件读取多字节数据函数               
 271          函数原型: bit  ISendStr(INT8U sla,INT8U suba,INT8U *s,INT8U no);  
 272          功能:     从启动总线到发送地址,子地址,读数据,结束总线的全过程,从器件
 273                    地址sla,子地址suba,读出的内容放入s指向的存储区,读no个字节。
 274                     如果返回1表示操作成功,否则操作有误。
 275          注意:    使用前必须已结束总线。
 276          ********************************************************************/
 277          bit IRcvStr(INT8U sla,INT8U suba,INT8U *s,INT8U no)
 278          {
 279   1              INT8U xdata i;
 280   1      
 281   1              Start_I2c();                  /*启动总线*/
 282   1              SendByte(sla);                /*发送器件地址*/
 283   1              if(ack==0)return(0);
 284   1              printf("efgh\n");
 285   1              SendByte(suba);               /*发送器件子地址*/
 286   1              if(ack==0)return(0);
 287   1      
 288   1              Start_I2c();                     /*重新启动总线*/
 289   1              SendByte(sla+1);
 290   1              if(ack==0)return(0);
 291   1              for(i=0;i<no-1;i++)
 292   1              {   
 293   2              *s=RcvByte();               /*发送数据*/
 294   2              Ack_I2c(0);                /*发送就答位*/  
 295   2              s++;
 296   2              } 
 297   1              *s=RcvByte();
 298   1              Ack_I2c(1);                   /*发送非应位*/
 299   1              Stop_I2c();                   /*结束总线*/ 
 300   1              return(1);
 301   1      }       
 302          /*******************************************************************
 303          功能:向无子地址器件读取多字节数据函数               
C51 COMPILER V8.17   IIC                                                                   03/09/2009 15:54:45 PAGE 6   

 304          函数原型: bit  ISendStrExt(INT8U sla,INT8U *s,INT8U no);  
 305          功能:     从启动总线到发送地址,读数据,结束总线的全过程.
 306                    从器件地址sla,读出的内容放入s指向的存储区,
 307                    读no个字节。如果返回1表示操作成功,否则操作有误。
 308          注意:    使用前必须已结束总线。
 309          ********************************************************************/
 310          /*
 311          bit IRcvStrExt(INT8U sla,INT8U *s,INT8U no)
 312          {
 313             INT8U xdata i;
 314          
 315             Start_I2c();
 316             SendByte(sla+1);
 317             if(ack==0)return(0);
 318          
 319             for(i=0;i<no-1;i++)
 320             {   
 321                *s=RcvByte();               //发送数据
 322                Ack_I2c(0);                 //发送就答位  
 323                s++;
 324             } 
 325             *s=RcvByte();
 326             Ack_I2c(1);                    //发送非应位
 327             Stop_I2c();                    //结束总线 
 328             return(1);
 329          }
 330          */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    377    ----
   CONSTANT SIZE    =     12    ----
   XDATA SIZE       =   ----       1
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      12
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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