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

📄 i2c_driver.lst

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

⌨️ 快捷键说明

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