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

📄 i2c_drv.lst

📁 PLL的资料文档,包括资料
💻 LST
📖 第 1 页 / 共 4 页
字号:
  81          * NOTE:
  82          *----------------------------------------------------------------------------
  83          * REQUIREMENTS:
  84          *****************************************************************************/
  85          Byte I2c_scanLSB (void)
  86          {
  87   1              Byte i;
  88   1              char bByte = 0x00,temp;
  89   1      
  90   1              for (i=0; i<8; i++){
  91   2                      ISCL = High;
  92   2                      I2c_wait();
  93   2              if (DTS_DIN){
  94   3                              temp = 0x01;
  95   3                              temp <<= i;
  96   3                      bByte |= temp;
C51 COMPILER V8.01   I2C_DRV                                                               08/07/2006 11:16:11 PAGE 9   

  97   3                              }
  98   2                      ISCL = Low;
  99   2                      I2c_wait();
 100   2                      }
 101   1              return (bByte);
 102   1      
 103   1      }
 104          
 105          /*F**************************************************************************
 106          * NAME: I2c_getLSB
 107          *----------------------------------------------------------------------------
 108          * PARAMS:
 109          *
 110          * return:
 111          *----------------------------------------------------------------------------
 112          * PURPOSE: 
 113          *----------------------------------------------------------------------------
 114          * EXAMPLE:
 115          *----------------------------------------------------------------------------
 116          * NOTE:
 117          *----------------------------------------------------------------------------
 118          * REQUIREMENTS:
 119          *****************************************************************************/
 120          void I2c_getLSB (Byte bByte)
 121          {
 122   1              Byte i;
 123   1      
 124   1              for (i=0; i<8; i++) 
 125   1              {
 126   2              if (bByte & 0x80) ISDA = High;
 127   2              else ISDA = Low;
 128   2              bByte <<= 1;
 129   2                      I2c_wait();
 130   2              ISCL = High;
 131   2                      I2c_wait();
 132   2                      ISCL = Low;
 133   2                      I2c_wait();
 134   2              }
 135   1              ISDA = High;
 136   1              I2c_wait();
 137   1              ISCL = High;
 138   1              I2c_wait();
 139   1              I2c_wait();
 140   1              ISCL = Low;
 141   1              I2c_wait();
 142   1      }
 143          
 144          /*F**************************************************************************
 145          * NAME: I2c_start
 146          *----------------------------------------------------------------------------
 147          * PARAMS:
 148          *
 149          * return:
 150          *----------------------------------------------------------------------------
 151          * PURPOSE: 
 152          *----------------------------------------------------------------------------
 153          * EXAMPLE:
 154          *----------------------------------------------------------------------------
 155          * NOTE:
 156          *----------------------------------------------------------------------------
 157          * REQUIREMENTS:
 158          *****************************************************************************/
C51 COMPILER V8.01   I2C_DRV                                                               08/07/2006 11:16:11 PAGE 10  

 159          void I2c_start (void)
 160          {
 161   1              ISDA = High;
 162   1              ISCL = High;
 163   1              I2c_wait();
 164   1              ISDA = Low;
 165   1              I2c_wait();
 166   1              ISCL = Low;
 167   1      }
 168          
 169          /*F**************************************************************************
 170          * NAME: I2c_stop
 171          *----------------------------------------------------------------------------
 172          * PARAMS:
 173          *
 174          * return:
 175          *----------------------------------------------------------------------------
 176          * PURPOSE: 
 177          *----------------------------------------------------------------------------
 178          * EXAMPLE:
 179          *----------------------------------------------------------------------------
 180          * NOTE:
 181          *----------------------------------------------------------------------------
 182          * REQUIREMENTS:
 183          *****************************************************************************/
 184          void I2c_stop (void)
 185          {
 186   1              ISDA = Low;
 187   1              I2c_wait();
 188   1              ISCL = High;
 189   1              I2c_wait();
 190   1              ISDA = High;
 191   1              I2c_wait();
 192   1      }
 193          
 194          /*F**************************************************************************
 195          * NAME: I2c_ack
 196          *----------------------------------------------------------------------------
 197          * PARAMS:
 198          *
 199          * return:
 200          *----------------------------------------------------------------------------
 201          * PURPOSE: 
 202          *----------------------------------------------------------------------------
 203          * EXAMPLE:
 204          *----------------------------------------------------------------------------
 205          * NOTE:
 206          *----------------------------------------------------------------------------
 207          * REQUIREMENTS:
 208          *****************************************************************************/
 209          void I2c_ack (void)
 210          {
 211   1              ISDA = Low;
 212   1              I2c_wait();
 213   1              ISDA = High;
 214   1              I2c_wait();
 215   1      }
 216          
 217          /*F**************************************************************************
 218          * NAME: I2c_init
 219          *----------------------------------------------------------------------------
 220          * PARAMS:
C51 COMPILER V8.01   I2C_DRV                                                               08/07/2006 11:16:11 PAGE 11  

 221          *
 222          * return:
 223          *----------------------------------------------------------------------------
 224          * PURPOSE: 
 225          *----------------------------------------------------------------------------
 226          * EXAMPLE:
 227          *----------------------------------------------------------------------------
 228          * NOTE:
 229          *----------------------------------------------------------------------------
 230          * REQUIREMENTS:
 231          *****************************************************************************/
 232          void I2c_init (void)
 233          {
 234   1              ISDA = High;
 235   1              I2c_wait();
 236   1              ISCL = High;
 237   1              I2c_wait();
 238   1      }
 239          
 240          /*F**************************************************************************
 241          * NAME: I2c_wait
 242          *----------------------------------------------------------------------------
 243          * PARAMS:
 244          *
 245          * return:
 246          *----------------------------------------------------------------------------
 247          * PURPOSE: 
 248          *----------------------------------------------------------------------------
 249          * EXAMPLE:
 250          *----------------------------------------------------------------------------
 251          * NOTE:
 252          *----------------------------------------------------------------------------
 253          * REQUIREMENTS:
 254          *****************************************************************************/
 255          void I2c_wait (void)
 256          {
 257   1              char i;
 258   1              for(i=0; i<2; i++){
 259   2                      i = i;
 260   2                      }
 261   1      }
 262          
 263          
C51 COMPILER V8.01   I2C_DRV                                                               08/07/2006 11:16:11 PAGE 12  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _I2c_ReadByte (BEGIN)
                                           ; SOURCE LINE # 32
0000 8F00        R     MOV     address,R7
                                           ; SOURCE LINE # 33
                                           ; SOURCE LINE # 34
0002 E4                CLR     A
0003 F500        R     MOV     bTemp,A
                                           ; SOURCE LINE # 36
0005 120000      R     LCALL   I2c_start
                                           ; SOURCE LINE # 37
0008 7FA0              MOV     R7,#0A0H
000A 120000      R     LCALL   _I2c_getLSB
                                           ; SOURCE LINE # 38
000D AF00        R     MOV     R7,address
000F 120000      R     LCALL   _I2c_getLSB
                                           ; SOURCE LINE # 39
0012 120000      R     LCALL   I2c_start
                                           ; SOURCE LINE # 40
0015 7FA1              MOV     R7,#0A1H
0017 120000      R     LCALL   _I2c_getLSB
                                           ; SOURCE LINE # 41
001A 120000      R     LCALL   I2c_scanLSB
001D 8F00        R     MOV     bTemp,R7
                                           ; SOURCE LINE # 42
001F 120000      R     LCALL   I2c_ack
                                           ; SOURCE LINE # 43
0022 120000      R     LCALL   I2c_stop
                                           ; SOURCE LINE # 44
0025 AF00        R     MOV     R7,bTemp
                                           ; SOURCE LINE # 45
0027         ?C0001:
0027 22                RET     
             ; FUNCTION _I2c_ReadByte (END)

             ; FUNCTION _I2c_WriteByte (BEGIN)
                                           ; SOURCE LINE # 62
0000 8F00        R     MOV     address,R7
0002 8D00        R     MOV     bByte,R5
                                           ; SOURCE LINE # 63
                                           ; SOURCE LINE # 64
0004 120000      R     LCALL   I2c_start
                                           ; SOURCE LINE # 65
0007 AF00        R     MOV     R7,address
0009 120000      R     LCALL   _I2c_getLSB
                                           ; SOURCE LINE # 66
000C AF00        R     MOV     R7,bByte
000E 120000      R     LCALL   _I2c_getLSB
                                           ; SOURCE LINE # 67
0011 020000      R     LJMP    I2c_stop
             ; FUNCTION _I2c_WriteByte (END)

             ; FUNCTION I2c_scanLSB (BEGIN)
                                           ; SOURCE LINE # 85
                                           ; SOURCE LINE # 86

⌨️ 快捷键说明

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