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

📄 i2c_driver.lst

📁 MP3 整个 SDK
💻 LST
📖 第 1 页 / 共 3 页
字号:
    136    000049 3E01                    LD     A,01H     
    137    00004B 1812                  JR     I2C_Writeonebyte_exit           
             
    138    00004D                       
    139    00004D          Wr_Send_Stop:             
    140    00004D CD....                CALL   LWRD I2C_Stop                //S
 end Stop & the last data                
    141    000050 CD....                CALL   LWRD Trans_complete
    142    000053                       
    143    000053 3A....                LD     A,(I2CSPEED)
    144    000056 C682                  ADD    A,82H
    145    000058 D37A                    OUT    (I2CCTL),A                    
       //release i2c;Must need!!!!
    146    00005A                         
    147    00005A CD....                  CALL   LWRD Wait_Stop
    148    00005D 3E01                    LD     A,01H                        
    149    00005F                                    
    150    00005F          I2C_Writeonebyte_exit:
    151    00005F D1                    POP    DE
    152    000060 C1                    POP    BC
    153    000061 C9                    RET 
    154    000062                       
    155    000062          /***************************************************
                                          ************************
    156    000062                  I2C Transfer Address:After restart,transfer 
                                          address.
    157    000062                    input parameter:E:slave address.
    158    000062                    output parameter:A:1-success;0:fail.
    159    000062          ****************************************************
 ***********************/
    160    000062          I2C_Transaddr:
    161    000062 D5                    PUSH    DE
    162    000063                       
    163    000063 7B                    LD      A,E
    164    000064 D371                  OUT     (I2CADDR),A
    165    000066                       
    166    000066 3A....                LD      A,(I2CSPEED)
    167    000069 C682                  ADD     A,82H
    168    00006B D37A                    OUT     (I2CCTL),A                   
        //release i2c;Must need????----test
    169    00006D                         
    170    00006D CD....                  CALL    LWRD Trans_complete
    171    000070                         
    172    000070 D1                      POP     DE
    173    000071 C9                      RET
    174    000072                                                              
  
    175    000072          ///*************************************************
 **************************
    176    000072          //        I2C Read Continuous Byte
    177    000072          //          input parameter:DE:Receivebuffer address
 .
    178    000072          //                          C:Data length
    179    000072          //          output parameter:A:1-success;0:fail.
    180    000072          //**************************************************
 *************************/
    181    000072          //I2C_Read:
    182    000072          //            PUSH      DE
    183    000072          //            
    184    000072          //            LD        L,E
    185    000072          //            LD        H,D
    186    000072          //            LD        B,C
    187    000072          //            CALL      DELAY_15us               //m
 ust >10us;avoid address ACK too short.
    188    000072          //Read_data:
    189    000072          //            LD        A,B
    190    000072          //            CP        01H
    191    000072          //            JR        NZ,Send_ACK2
    192    000072          //            LD        A,(I2CSPEED)
    193    000072          //            ADD       A,8BH
    194    000072          //            //LD        A,08BH+I2Cmode           /
 /if it is last byte,Send NACK & stop.                                           
           
    195    000072          //              JR        I2C_Read_loop             
                               
    196    000072          //Send_ACK2:              
    197    000072          //            LD        A,(I2CSPEED)
    198    000072          //            ADD       A,82H
    199    000072          //            //LD        A,082H+I2Cmode            
  //release i2c;Must need!!!!             
    200    000072          //I2C_Read_loop:
    201    000072          //              OUT       (I2CCTL),A
    202    000072          //              
    203    000072          //              CALL      LWRD Recv_complete
    204    000072          //              CP        00H
    205    000072          //              JR        Z,I2C_Read_Exit
    206    000072          //              IN        A,(I2CDAT)
    207    000072          //              LD        (HL),A
    208    000072          //              INC       HL    
    209    000072          //              DJNZ      Read_data
    210    000072          //              LD        A,01H
    211    000072          //
    212    000072          //I2C_Read_Exit:              
    213    000072          //              POP       DE
    214    000072          //              RET     
    215    000072                                      
    216    000072          /***************************************************
                                                         ***********************
                                                         *
    217    000072                  I2C Read One Byte
    218    000072                    input parameter:E:02H-Stop;01H-Restart;els
                                                      e No.
    219    000072                    output parameter:A:1-success;0:fail.
    220    000072                                     C:One Byte Data.
    221    000072          ****************************************************
                                                                        ********
                                                                        ********
                                                                        *******/
    222    000072          I2C_ReadOneByte:
    223    000072 D5                    PUSH    DE
    224    000073 E5                    PUSH    HL
    225    000074                                                
    226    000074 7B                    LD      A,E
    227    000075 FE01                  CP      01H
    228    000077 281A                  JR      Z,Rd_Send_Restart
    229    000079 FE02                  CP      02H
    230    00007B 282E                  JR      Z,Rd_Send_Stop
    231    00007D                                                         
    232    00007D 3A....                LD      A,(I2CSPEED)                  /
                                                   /read one byte
    233    000080 C682                  ADD     A,82H              
    234    000082 D37A                  OUT     (I2CCTL),A                    /
 /Realse I2C-must need!!!
    235    000084                       
    236    000084 CD....                CALL    LWRD Recv_complete
    237    000087 FE00                  CP      00H
    238    000089 283B                  JR      Z,I2C_ReadOneByte_Exit
    239    00008B DB7C                  IN      A,(I2CDAT)
    240    00008D 4F                    LD      C,A
    241    00008E 3E01                  LD      A,01H
    242    000090 C3....                JP      I2C_ReadOneByte_Exit
    243    000093          
    244    000093          Rd_Send_Restart:
    245    000093 CD....                CALL    LWRD I2C_Restart              /
 /Send NACK & Restart& receive the last data 
    246    000096 CD....                CALL    LWRD Recv_complete
    247    000099 FE00                  CP      00H
    248    00009B 2829                  JR      Z,I2C_ReadOneByte_Exit
    249    00009D DB7C                  IN      A,(I2CDAT)
    250    00009F 4F                    LD      C,A
    251    0000A0                       
    252    0000A0 3A....                LD      A,(I2CSPEED)
    253    0000A3 C682                  ADD     A,82H
    254    0000A5 D37A                    OUT     (I2CCTL),A                   
        //release i2c;Must need!!!!
    255    0000A7                         
    256    0000A7 3E01                    LD      A,01H
    257    0000A9 181B                  JR      I2C_ReadOneByte_Exit   
    258    0000AB          
    259    0000AB          Rd_Send_Stop:
    260    0000AB CD....                CALL    LWRD I2C_Stop                //
 Send Stop & NACK & receive the last data
    261    0000AE CD....                CALL    LWRD Recv_complete
    262    0000B1 FE00                  CP      00H
    263    0000B3 2811                  JR      Z,I2C_ReadOneByte_Exit
    264    0000B5 DB7C                  IN      A,(I2CDAT)
    265    0000B7 4F                    LD      C,A
    266    0000B8                       
    267    0000B8 3A....                LD      A,(I2CSPEED)
    268    0000BB C682                  ADD     A,82H
    269    0000BD D37A                    OUT     (I2CCTL),A                   
        //release i2c;Must need!!!!
    270    0000BF                         
    271    0000BF CD....                  CALL    LWRD Wait_Stop
    272    0000C2 3E01                    LD      A,01H
    273    0000C4 1800                  JR      I2C_ReadOneByte_Exit
    274    0000C6                                                
    275    0000C6          I2C_ReadOneByte_Exit:  
    276    0000C6 E1                    POP     HL           
    277    0000C7 D1                    POP     DE
    278    0000C8 C9                    RET                                    
    
    279    0000C9          
    280    0000C9          /***************************************************
                             ************************
    281    0000C9                  I2C Restart
    282    0000C9                    input parameter:NO
    283    0000C9                    output parameter:NO
    284    0000C9          ****************************************************
                                                          **********************
                                                          */
    285    0000C9          I2C_Restart:  
    286    0000C9 3A....                LD    A,(I2CSPEED)
    287    0000CC C68F                  ADD   A,8FH           
    288    0000CE D37A                  OUT    (I2CCTL),A                 //Sta
 rt condition             
    289    0000D0 C9                    RET

⌨️ 快捷键说明

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