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

📄 i2c_driver.lst

📁 炬力方案176*132软件源码,适用于AK1025
💻 LST
📖 第 1 页 / 共 3 页
字号:
################################################################################
#                                                                              #
#     IAR Systems Z80/64180 Assembler V3.03A/WIN 25/Sep/107  23:48:59          #
#                                                                              #
#           Target option =  z80                                               #
#           Source file   =  d:\case_i_d913f\ap\ap_radio\philips\i2c_driver.msa#
#           List file     =  d:\case_i_d913f\ap\ap_radio\list\i2c_driver.lst   #
#           Object file   =  d:\case_i_d913f\ap\ap_radio\obj\i2c_driver.r01    #
#           Command line  =  -v0 -OD:\case_i_d913f\ap\ap_radio\Obj\ -s+ -M<>   #
#                            -w+ -r -LD:\case_i_d913f\ap\ap_radio\List\ -t8    #
#                            -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\       #
#                            d:\case_i_d913f\AP\AP_RADIO\PHILIPS\I2C_Driver.msa #
#                                                                              #
#                                               (c) Copyright IAR Systems 1996 #
################################################################################

      1    000000          /***************************************************
                            ************************
      2    000000                    GL3961 I2C Driver Interface
      3    000000                    writen by GONGJIAN
      4    000000                    last update 05-3-30 10:04
      5    000000          ****************************************************
                                                                ****************
                                                                ********/
      6    000000          #include "I2C_register.h"
      7    000000          
      8    000000          public      I2C_Init
      9    000000          public      I2C_Start
     10    000000          //public      I2C_Write
     11    000000          public      I2C_Writeonebyte
     12    000000          //public      I2C_Read
     13    000000          public      I2C_ReadOneByte
     14    000000          //public      I2C_Restart
     15    000000          public      I2C_Stop                    
     16    000000          public      I2C_Exit
     17    000000          public      I2C_Transaddr                    
     18    000000          //public      Wait_Stop                      
     19    000000          //public      Trans_complete
     20    000000          //public      Recv_complete 
     21    000000          public      DELAY_15us
     22    000000          
     23    000000          //**************************************************
 *********                       
     24    000000                         rseg I2C_driver                      
       
     25    000000           
     26    000000 40       I2CSPEED    DEFB   40H 
     27    000001                                                              
                           
     28    000001          /***************************************************
 **************************
     29    000001                  I2C Init
     30    000001                    input parameter:E:00H for 100k;40H for 400
                                             K 
     31    000001                    output parameter:NO
     32    000001          ****************************************************
                                                          **********************
                                                          ***/
     33    000001          I2C_Init: 
     34    000001 7B                    LD    A,E
     35    000002 32....                LD    (I2CSPEED),A             //I2C SP
                                                         EED 
     36    000005          
     37    000005                     //  LD    A,00H               
     38    000005                     //  OUT   (MFPSEL),A
     39    000005 DBEE                   IN    A,(MFPSEL)  
     40    000007 F620                   OR    20H 
     41    000009 E63F                   AND   3FH               //by jmzhang f
                                                rom 80h->20h       
     42    00000B D3EE                  OUT   (MFPSEL),A               //Mode c
                                                                        hange to
                                                                         F2
     43    00000D                       
     44    00000D 3A....                LD    A,(I2CSPEED)
     45    000010 C680                  ADD   A,80H        
     46    000012 D37A                  OUT   (I2CCTL),A               //Enable
                                                                         I2C;Dis
                                                                        able IRQ
     47    000014 C9                    RET
     48    000015          
     49    000015          /***************************************************
                             **************************
     50    000015                  I2C Start
     51    000015                    input parameter:E:slave address;          
                                                     
     52    000015                    output parameter:A:01-sucess;00-fail.
     53    000015          ****************************************************
 **************************/
     54    000015          I2C_Start:
     55    000015 D5                    PUSH   DE             
     56    000016 7B                    LD     A,E
     57    000017 D371                  OUT    (I2CADDR),A                //Sla
 ve address
     58    000019                       
     59    000019 3A....                LD     A,(I2CSPEED)
     60    00001C C686                  ADD    A,86H
     61    00001E D37A                  OUT    (I2CCTL),A                 //Sta
 rt condition
     62    000020                       
     63    000020 CD....                CALL   LWRD Trans_complete        //Jud
 ge address tansmit complete
     64    000023          
     65    000023 D1                    POP    DE
     66    000024 C9                    RET
     67    000025          
     68    000025          /***************************************************
                             **************************
     69    000025                  I2C Write One Frame
     70    000025                    input parameter:DE:Sendbuffer address
     71    000025                                    C:byte length
     72    000025                    output parameter:A:01-sucess;00-fail.
     73    000025          ****************************************************
 *************************/
     74    000025          //I2C_Write:
     75    000025          //             PUSH   BC
     76    000025          //             PUSH   DE
     77    000025          //             
     78    000025          //             LD     L,E
     79    000025          //             LD     H,D                           
          
     80    000025          //             LD     B,C             
     81    000025          //I2C_Write_loop:             
     82    000025          //             LD     A,(HL)
     83    000025          //             OUT    (I2CDAT),A
     84    000025          //             LD    A,(I2CSPEED)
     85    000025          //             ADD   A,82H
     86    000025          //             //LD     A,82H+I2Cmode
     87    000025          //               OUT    (I2CCTL),A                  
         //release i2c;Must need!!!
     88    000025          //               
     89    000025          //             CALL   LWRD Trans_complete           
 //Judge address tansmit complete?
     90    000025          //             CP     00H
     91    000025          //             JR     Z,I2C_Write_exit
     92    000025          //             
     93    000025          //             INC    HL
     94    000025          //                 
     95    000025          //             DJNZ   I2C_Write_loop
     96    000025          //             
     97    000025          //             LD     A,01H             
     98    000025          //I2C_Write_exit:                          
     99    000025          //             POP    DE
    100    000025          //             POP    BC
    101    000025          //             RET
    102    000025                       
    103    000025          /***************************************************
                                          **************************
    104    000025                  I2C Write One Byte
    105    000025                    input parameter:E:Write data.
    106    000025                                    C:02H-Stop;01H-Restart;els
                                                                    e send one b
                                                                    yte.
    107    000025                    output parameter:A:1-success;0:fail.
    108    000025          ****************************************************
 *************************/
    109    000025          I2C_Writeonebyte:
    110    000025 C5                    PUSH    BC
    111    000026 D5                    PUSH    DE
    112    000027                       
    113    000027 7B                    LD      A,E
    114    000028 D37C                  OUT     (I2CDAT),A
    115    00002A                       
    116    00002A 79                    LD      A,C
    117    00002B FE01                  CP      01H
    118    00002D 2811                  JR      Z,Wr_Send_Restart
    119    00002F FE02                  CP      02H
    120    000031 281E                  JR      Z,Wr_Send_Stop
    121    000033                                                 
    122    000033 3A....                LD      A,(I2CSPEED)                 //
                                                   send one byte
    123    000036 C682                  ADD     A,82H
    124    000038 D37A                    OUT     (I2CCTL),A                   
        //release i2c;Must need!!!!
    125    00003A                         
    126    00003A CD....                CALL   LWRD Trans_complete             
    
    127    00003D                       
    128    00003D C3....                JP     I2C_Writeonebyte_exit     
    129    000040          
    130    000040          Wr_Send_Restart:
    131    000040 CD....                CALL   LWRD I2C_Restart             //S
 end Restart & the last data
    132    000043 CD....                CALL   LWRD Trans_complete
    133    000046                       
    134    000046 3A....                LD     A,(I2CSPEED)
    135    000049 C682                  ADD    A,82H
    136    00004B D37A                    OUT    (I2CCTL),A                    
       //release i2c;Must need!!!!

⌨️ 快捷键说明

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