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

📄 vi2c_c51.lst

📁 天然气报警器 采用51控制 可以控制2路开关
💻 LST
📖 第 1 页 / 共 2 页
字号:

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

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

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


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    507    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   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 + -