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

📄 i2c.lst

📁 一个带收音的功放程序, VFD显示驱动用一个非常实用的方法, 稍加修改即可换成不同的VFD, 功放芯片用M61538
💻 LST
📖 第 1 页 / 共 2 页
字号:
 304              I2C_Start ();
 305              I2C_SetAddr(DevAddr); 
 306              I2C_Rack();
 307              I2C_SetAddr(subAddr);     
 308              I2C_Rack();
 309          
 310              I2C_Start ();
 311              I2C_SetAddr(DevAddr+1);  
 312              I2C_Rack();
 313              
 314              while(number)
 315              {
 316                          *str = I2C_RxData();
 317                          if (number==1)        
 318                                  I2C_nAck();      
 319                          else
 320                                  I2C_Ack();       
 321                          str++;
 322                          number -= 1;
 323              }
 324              I2C_Stop();
 325          }
 326          */
C51 COMPILER V7.20   I2C                                                                   07/16/2005 13:42:42 PAGE 7   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION I2C_Start (BEGIN)
                                           ; SOURCE LINE # 18
                                           ; SOURCE LINE # 19
                                           ; SOURCE LINE # 20
0000 D2B7              SETB    Pin_I2CSDA
                                           ; SOURCE LINE # 21
0002 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 22
0005 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 23
0008 D2B6              SETB    Pin_I2CSCL
                                           ; SOURCE LINE # 24
000A 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 25
000D 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 26
0010 C2B7              CLR     Pin_I2CSDA
                                           ; SOURCE LINE # 27
0012 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 28
0015 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 29
0018 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 30
001B C2B6              CLR     Pin_I2CSCL
                                           ; SOURCE LINE # 31
001D 22                RET     
             ; FUNCTION I2C_Start (END)

             ; FUNCTION I2C_Stop (BEGIN)
                                           ; SOURCE LINE # 37
                                           ; SOURCE LINE # 38
                                           ; SOURCE LINE # 39
0000 C2B7              CLR     Pin_I2CSDA
                                           ; SOURCE LINE # 40
0002 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 41
0005 D2B6              SETB    Pin_I2CSCL
                                           ; SOURCE LINE # 42
0007 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 43
000A 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 44
000D D2B7              SETB    Pin_I2CSDA
                                           ; SOURCE LINE # 45
000F 22                RET     
             ; FUNCTION I2C_Stop (END)

             ; FUNCTION I2C_Rack (BEGIN)
                                           ; SOURCE LINE # 54
                                           ; SOURCE LINE # 55
                                           ; SOURCE LINE # 57
0000 C2B6              CLR     Pin_I2CSCL
                                           ; SOURCE LINE # 58
0002 D2B7              SETB    Pin_I2CSDA
                                           ; SOURCE LINE # 59
0004 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 60
0007 120000      E     LCALL   Delay5US
C51 COMPILER V7.20   I2C                                                                   07/16/2005 13:42:42 PAGE 8   

                                           ; SOURCE LINE # 61
000A D2B6              SETB    Pin_I2CSCL
                                           ; SOURCE LINE # 62
000C 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 63
000F 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 64
0012 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 65
0015 C2B7              CLR     Pin_I2CSDA
                                           ; SOURCE LINE # 66
0017 C2B6              CLR     Pin_I2CSCL
                                           ; SOURCE LINE # 67
0019 020000      E     LJMP    Delay5US
             ; FUNCTION I2C_Rack (END)

             ; FUNCTION I2C_nAck (BEGIN)
                                           ; SOURCE LINE # 95
                                           ; SOURCE LINE # 96
                                           ; SOURCE LINE # 97
0000 C2B6              CLR     Pin_I2CSCL
                                           ; SOURCE LINE # 98
0002 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 99
0005 D2B7              SETB    Pin_I2CSDA
                                           ; SOURCE LINE # 100
0007 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 101
000A D2B6              SETB    Pin_I2CSCL
                                           ; SOURCE LINE # 102
000C 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 103
000F 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 104
0012 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 105
0015 C2B6              CLR     Pin_I2CSCL
                                           ; SOURCE LINE # 106
0017 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 107
001A D2B7              SETB    Pin_I2CSDA
                                           ; SOURCE LINE # 108
001C 22                RET     
             ; FUNCTION I2C_nAck (END)

             ; FUNCTION _I2C_TxData (BEGIN)
                                           ; SOURCE LINE # 114
0000 8F00        R     MOV     i2c_data,R7
                                           ; SOURCE LINE # 115
                                           ; SOURCE LINE # 118
0002 E4                CLR     A
0003 F500        R     MOV     send_i,A
0005         ?C0005:
                                           ; SOURCE LINE # 119
                                           ; SOURCE LINE # 120
0005 C2B6              CLR     Pin_I2CSCL
                                           ; SOURCE LINE # 121
0007 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 122
000A E500        R     MOV     A,i2c_data
000C 30E704            JNB     ACC.7,?C0008
                                           ; SOURCE LINE # 123
C51 COMPILER V7.20   I2C                                                                   07/16/2005 13:42:42 PAGE 9   

000F D2B7              SETB    Pin_I2CSDA
0011 8002              SJMP    ?C0009
0013         ?C0008:
                                           ; SOURCE LINE # 125
0013 C2B7              CLR     Pin_I2CSDA
0015         ?C0009:
                                           ; SOURCE LINE # 126
0015 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 127
0018 D2B6              SETB    Pin_I2CSCL
                                           ; SOURCE LINE # 128
001A 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 129
001D E500        R     MOV     A,i2c_data
001F 25E0              ADD     A,ACC
0021 F500        R     MOV     i2c_data,A
                                           ; SOURCE LINE # 130
0023 0500        R     INC     send_i
0025 E500        R     MOV     A,send_i
0027 C3                CLR     C
0028 9408              SUBB    A,#08H
002A 40D9              JC      ?C0005
                                           ; SOURCE LINE # 132
002C         ?C0010:
002C 22                RET     
             ; FUNCTION _I2C_TxData (END)

             ; FUNCTION I2C_RxData (BEGIN)
                                           ; SOURCE LINE # 140
                                           ; SOURCE LINE # 141
                                           ; SOURCE LINE # 143
0000 E4                CLR     A
0001 F500        R     MOV     readbyte,A
                                           ; SOURCE LINE # 144
0003 C2B6              CLR     Pin_I2CSCL
                                           ; SOURCE LINE # 145
0005 D2B7              SETB    Pin_I2CSDA
                                           ; SOURCE LINE # 146
0007 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 148
000A E4                CLR     A
000B F500        R     MOV     read_i,A
000D         ?C0011:
                                           ; SOURCE LINE # 149
                                           ; SOURCE LINE # 150
000D D2B6              SETB    Pin_I2CSCL
                                           ; SOURCE LINE # 151
000F E500        R     MOV     A,readbyte
0011 25E0              ADD     A,ACC
0013 F500        R     MOV     readbyte,A
                                           ; SOURCE LINE # 152
0015 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 153
0018 30B703            JNB     Pin_I2CSDA,?C0014
                                           ; SOURCE LINE # 154
001B 430001      R     ORL     readbyte,#01H
001E         ?C0014:
                                           ; SOURCE LINE # 156
001E C2B6              CLR     Pin_I2CSCL
                                           ; SOURCE LINE # 157
0020 120000      E     LCALL   Delay5US
                                           ; SOURCE LINE # 159
C51 COMPILER V7.20   I2C                                                                   07/16/2005 13:42:42 PAGE 10  

0023 0500        R     INC     read_i
0025 E500        R     MOV     A,read_i
0027 C3                CLR     C
0028 9408              SUBB    A,#08H
002A 40E1              JC      ?C0011
002C         ?C0012:
                                           ; SOURCE LINE # 160
002C AF00        R     MOV     R7,readbyte
                                           ; SOURCE LINE # 162
002E         ?C0015:
002E 22                RET     
             ; FUNCTION I2C_RxData (END)

             ; FUNCTION _I2C_SetAddr (BEGIN)
                                           ; SOURCE LINE # 169
;---- Variable 'i2c_addr' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 170
                                           ; SOURCE LINE # 171
0000 020000      R     LJMP    _I2C_TxData
             ; FUNCTION _I2C_SetAddr (END)

             ; FUNCTION _I2C_PutByte (BEGIN)
                                           ; SOURCE LINE # 182
0000 8F00        R     MOV     DevAddr,R7
0002 8D00        R     MOV     subAddr,R5
0004 8B00        R     MOV     ucData,R3
                                           ; SOURCE LINE # 183
                                           ; SOURCE LINE # 184
0006 120000      R     LCALL   I2C_Start
                                           ; SOURCE LINE # 185
0009 AF00        R     MOV     R7,DevAddr
000B 120000      R     LCALL   _I2C_SetAddr
                                           ; SOURCE LINE # 186
000E 120000      R     LCALL   I2C_Rack
                                           ; SOURCE LINE # 187
0011 AF00        R     MOV     R7,subAddr
0013 120000      R     LCALL   _I2C_SetAddr
                                           ; SOURCE LINE # 188
0016 120000      R     LCALL   I2C_Rack
                                           ; SOURCE LINE # 189
0019 AF00        R     MOV     R7,ucData
001B 120000      R     LCALL   _I2C_TxData
                                           ; SOURCE LINE # 190
001E 120000      R     LCALL   I2C_Rack
                                           ; SOURCE LINE # 191
0021 020000      R     LJMP    I2C_Stop
             ; FUNCTION _I2C_PutByte (END)

             ; FUNCTION _I2C_GetByte (BEGIN)
                                           ; SOURCE LINE # 201
0000 8F00        R     MOV     DevAddr,R7
0002 8D00        R     MOV     subAddr,R5
                                           ; SOURCE LINE # 202
                                           ; SOURCE LINE # 205
0004 120000      R     LCALL   I2C_Start
                                           ; SOURCE LINE # 206
0007 AF00        R     MOV     R7,DevAddr
0009 120000      R     LCALL   _I2C_SetAddr
                                           ; SOURCE LINE # 207
000C 120000      R     LCALL   I2C_Rack
                                           ; SOURCE LINE # 208
000F AF00        R     MOV     R7,subAddr
C51 COMPILER V7.20   I2C                                                                   07/16/2005 13:42:42 PAGE 11  

0011 120000      R     LCALL   _I2C_SetAddr
                                           ; SOURCE LINE # 209
0014 120000      R     LCALL   I2C_Rack
                                           ; SOURCE LINE # 211
0017 120000      R     LCALL   I2C_Start
                                           ; SOURCE LINE # 212
001A E500        R     MOV     A,DevAddr
001C 04                INC     A
001D FF                MOV     R7,A
001E 120000      R     LCALL   _I2C_SetAddr
                                           ; SOURCE LINE # 213
0021 120000      R     LCALL   I2C_Rack
                                           ; SOURCE LINE # 214
0024 120000      R     LCALL   I2C_RxData
0027 8F00        R     MOV     ucData,R7
                                           ; SOURCE LINE # 216
0029 120000      R     LCALL   I2C_nAck
                                           ; SOURCE LINE # 218
002C 120000      R     LCALL   I2C_Stop
                                           ; SOURCE LINE # 219
002F AF00        R     MOV     R7,ucData
                                           ; SOURCE LINE # 220
0031         ?C0018:
0031 22                RET     
             ; FUNCTION _I2C_GetByte (END)



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    284    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      10
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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