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

📄 viic_c51.lst

📁 51单片机实现利用ds18b20温度传感器检测温度并用ZLG7920显示(c语言)
💻 LST
📖 第 1 页 / 共 2 页
字号:
 188   1        _Nop();
 189   1        _Nop();
 190   1        _Nop();      
 191   1        SCL=1;
 192   1          _Nop();
 193   1          _Nop();              /*时钟低电平周期大于4μs*/
 194   1          _Nop();
 195   1          _Nop();
 196   1          _Nop();  
 197   1       SCL=0;                /*清时钟线,钳住I2C总线以便继续接收*/
 198   1          _Nop();
 199   1          _Nop();    
 200   1      }
 201          
 202          
 203          
 204          
 205          
 206          
 207          /*******************************************************************
 208                              向无子地址器件发送字节数据函数               
 209          函数原型: bit  ISendByte(uchar sla,ucahr c);  
 210          功能:     从启动总线到发送地址,数据,结束总线的全过程,从器件地址sla.
 211                     如果返回1表示操作成功,否则操作有误。
 212          注意:    使用前必须已结束总线。
 213          ********************************************************************/
 214          bit ISendByte(uchar sla,uchar c)
 215          {
 216   1         Start_I2c();               /*启动总线*/
 217   1         SendByte(sla);            /*发送器件地址*/
 218   1           if(ack==0)return(0);
 219   1         SendByte(c);               /*发送数据*/
 220   1           if(ack==0)return(0);
 221   1        Stop_I2c();                 /*结束总线*/ 
 222   1        return(1);
 223   1      }
 224          
 225          
 226          
 227          
 228          /*******************************************************************
 229                              向有子地址器件发送多字节数据函数               
 230          函数原型: bit  ISendStr(uchar sla,uchar suba,ucahr *s,uchar no);  
 231          功能:     从启动总线到发送地址,子地址,数据,结束总线的全过程,从器件
 232                    地址sla,子地址suba,发送内容是s指向的内容,发送no个字节。
 233                     如果返回1表示操作成功,否则操作有误。
 234          注意:    使用前必须已结束总线。
 235          ********************************************************************/
 236          bit ISendStr(uchar sla,uchar suba,uchar *s,uchar no)
 237          {
 238   1         uchar i;
 239   1      
 240   1         Start_I2c();               /*启动总线*/
 241   1         SendByte(sla);            /*发送器件地址*/
C51 COMPILER V7.50   VIIC_C51                                                              11/12/2008 00:40:12 PAGE 5   

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

 304   1         for(i=0;i<no-1;i++)
 305   1          {   
 306   2           *s=RcvByte();               /*发送数据*/
 307   2            Ack_I2c(0);                /*发送就答位*/  
 308   2           s++;
 309   2          } 
 310   1         *s=RcvByte();
 311   1          Ack_I2c(1);                 /*发送非应位*/
 312   1       Stop_I2c();                    /*结束总线*/ 
 313   1        return(1);
 314   1      }
 315          
 316          
 317          
 318          
 319          
 320          
 321                                  /*    完毕      */
 322          
 323          
 324          
 325          
C51 COMPILER V7.50   VIIC_C51                                                              11/12/2008 00:40:12 PAGE 7   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
_SendByte. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  c. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  BitCnt . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
IE . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
_IRcvStr . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  sla. . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0004H  1
  suba . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0005H  1
  s. . . . . . . . . . . . . . . . . .  AUTO     DATA   PTR      0001H  3
  no . . . . . . . . . . . . . . . . .  AUTO     XDATA  U_CHAR   0005H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
IP . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
ack. . . . . . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0000H  1
SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
TCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0088H  1
RcvByte. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  retc . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  BitCnt . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
_ISendByte . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  sla. . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  c. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
Ack_I2c. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  a. . . . . . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
Start_I2c. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
SDA. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0095H  1
SCL. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0094H  1
Stop_I2c . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1
_IRcvByte. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  sla. . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  c. . . . . . . . . . . . . . . . . .  * REG *  DATA   PTR      0001H  3
_ISendStr. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  sla. . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0007H  1
  suba . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0005H  1
  s. . . . . . . . . . . . . . . . . .  AUTO     DATA   PTR      0001H  3
  no . . . . . . . . . . . . . . . . .  AUTO     XDATA  U_CHAR   0005H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
PSW. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D0H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    367    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----      12
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -