fm_i2cdrv2.lst

来自「MP3 整个 SDK」· LST 代码 · 共 394 行 · 第 1/2 页

LST
394
字号
################################################################################
#                                                                              #
#     IAR Systems Z80/64180 Assembler V3.03A/WIN 25/Dec/106  17:01:39          #
#                                                                              #
#           Target option =  z80                                               #
#           Source file   =  d:\case_i_d90f\ap\ap_radio\philips\fm_i2cdrv2.msa #
#           List file     =  d:\case_i_d90f\ap\ap_radio\list\fm_i2cdrv2.lst    #
#           Object file   =  d:\case_i_d90f\ap\ap_radio\obj\fm_i2cdrv2.r01     #
#           Command line  =  -v0 -OD:\case_i_d90f\ap\ap_radio\Obj\ -s+ -M<>    #
#                            -w+ -r -LD:\case_i_d90f\ap\ap_radio\List\ -t8     #
#                            -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\         #
#                            D:\CASE_I_D90F\AP\AP_RADIO\PHILIPS\FM_i2cdrv2.msa #
#                                                                              #
#                                               (c) Copyright IAR Systems 1996 #
################################################################################

      1    000000          /***************************************************
                            *****************************************
      2    000000                              philips TEA5767 FM module driver
                            (I2C DRIVER)
      3    000000                              writen by GONGJIAN. for 3961 
      4    000000                              last update 05-3-30 14:57
      5    000000          ****************************************************
                                                                          ******
                                                                          ******
                                                                          ******
                                                                          ******
                                                                          ******
                                                                          ******
                                                                          ****/
      6    000000          
      7    000000          //for FM_i2cdrv1
      8    000000          public   WRITE_ONEFRAME
      9    000000          public   READ_STATUS
     10    000000          public   CALCULATE_PLL   
     11    000000          
     12    000000          //from I2C_Driver
     13    000000          extern   I2C_Start
     14    000000          extern   I2C_Stop
     15    000000          extern   I2C_Writeonebyte
     16    000000          extern   I2C_ReadOneByte
     17    000000          extern   DELAY_15us
     18    000000          
     19    000000          //from  FM_i2cdrv1
     20    000000          extern   FREQ_RF
     21    000000          extern   WSET_PLLLB
     22    000000          extern   WSET_PLLHB
     23    000000          extern   WRITE_BUFFER
     24    000000          extern   READ_BUFFER
     25    000000          extern   WSET_HLSI
     26    000000          extern   FM_result
     27    000000               
     28    000000          //==================================================
 ===
     29    000000                      rseg    FM_CTRL_D
     30    000000          //==================================================
 ===
     31    000000          FMupdatestatus:
     32    000000 F5                   PUSH    AF
     33    000001 C5                   PUSH    BC
     34    000002 E5                   PUSH    HL
     35    000003 1EC0                 LD      E,0C0H                          
                                                    //send start & address    
     36    000005 CD....               CALL    LWRD I2C_Start
     37    000008 FE00                 CP      00H
     38    00000A 2814                 JR      Z,FMupdatestatus_exit
     39    00000C                      
     40    00000C 21....               LD      HL,LWRD WRITE_BUFFER
     41    00000F 5E                   LD      E,(HL)
     42    000010 0E02                 LD      C,02H
     43    000012 CD....               CALL    LWRD I2C_Writeonebyte
     44    000015 FE00                 CP      00H
     45    000017 2807                 JR      Z,FMupdatestatus_exit
     46    000019                                                     
     47    000019 3E01                 LD      A,01H
     48    00001B 32....               LD      (LWRD FM_result),A 
     49    00001E 1805                 JR      FMupdatestatus_ok
     50    000020          FMupdatestatus_exit:
     51    000020 3E00                 LD      A,00H
     52    000022 32....               LD      (LWRD FM_result),A 
     53    000025          FMupdatestatus_ok:              
     54    000025 E1                   POP    HL
     55    000026 C1                   POP    BC
     56    000027 F1                   POP    AF
     57    000028 C9                   RET
     58    000029                      
     59    000029          //==================================================
 =========
     60    000029          //      READ   STATUS
     61    000029          //==================================================
 =========  
     62    000029          READ_STATUS:
     63    000029 C5               PUSH    BC
     64    00002A E5               PUSH    HL
     65    00002B                  
     66    00002B 0605             LD      B,05H
     67    00002D CD....           CALL    LWRD FMwait50ms 
     68    000030          FMwaitreadyloop1:  
     69    000030 05               DEC     B
     70    000031 280E             JR      Z,READ_STATUS_err
     71    000033 CD....           CALL    LWRD READ_ONEFRAME
     72    000036 FE00             CP      00H
     73    000038 28F6             JR      Z,FMwaitreadyloop1
     74    00003A 21....           LD      HL,LWRD READ_BUFFER                 
                                                    //判断RF=1?
     75    00003D CB7E             BIT     7,(HL)
     76    00003F 28EF             JR      Z,FMwaitreadyloop1
     77    000041          READ_STATUS_err: 
     78    000041 3A....           LD      A,(LWRD FM_result)       
     79    000044 E1               POP     HL
     80    000045 C1               POP     BC
     81    000046 C9               RET
     82    000047                  
     83    000047          /***************************************************
                                     *****************************************
     84    000047          ****************************************************
                                     ****************************************
     85    000047          Function is calculate the value of PLL.
     86    000047              Input parameter:no.
     87    000047              Output parameter:no.
     88    000047              Operation condition:
     89    000047                  WSET_XTAL=1 and WSET_HLSI=1,PLL≡(125*(FREQ_
                                                     RF+FREQ_IF))/1024
     90    000047                  WSET_XTAL=1 and WSET_HLSI=0,PLL≡(125*(FREQ_
 RF-FREQ_IF))/1024
     91    000047                  WSET_XTAL=0 and WSET_HLSI=1,PLL≡(2*(FREQ_RF
 +FREQ_IF))/25
     92    000047                  WSET_XTAL=0 and WSET_HLSI=0,PLL≡(2*(FREQ_RF
 -FREQ_IF))/25
     93    000047                  FREQ_RF:unit is KHz
     94    000047                  FREQ_IF:unit is KHz
     95    000047                  125=7d=01111101
     96    000047          ****************************************************
                                                    ****************************
                                                    ************/
     97    000047          CALCULATE_PLL:
     98    000047 F5                 PUSH      AF
     99    000048 C5                 PUSH      BC
    100    000049 D5                 PUSH    DE
    101    00004A E5                 PUSH      HL
    102    00004B                    
    103    00004B 2A....             LD      HL,(LWRD FREQ_RF)
    104    00004E 11E100           LD      DE,0E1H
    105    000051 3A....           LD      A,(LWRD WSET_HLSI)
    106    000054 FE00             CP      00H
    107    000056 2803             JR      Z,subfreqIF
    108    000058 19               ADD     HL,DE                       //HL=HL+
                                               DE
    109    000059 1804             JR      calculate_st        
    110    00005B          subfreqIF:        
    111    00005B 37               SCF                                 //CY=1
    112    00005C 3F               CCF                                 //CY=/CY
    113    00005D ED52             SBC     HL,DE                       //HL=HL-
                                               DE-CY
    114    00005F          calculate_st:
    115    00005F 54                 LD      D,H
    116    000060 5D                 LD      E,L
    117    000061 010005             LD      BC,0500h
    118    000064 37                 SCF
    119    000065 CB1C               RR      H
    120    000067 CB1D               RR      L
    121    000069 CB3C               SRL     H
    122    00006B CB1D               RR      L
    123    00006D          MULshiftadd:    
    124    00006D 19                 ADD     HL,DE
    125    00006E 3001               JR      NC,MULshiftaddnocarry
    126    000070 0C                 INC     C
    127    000071          MULshiftaddnocarry:
    128    000071 0C               INC     C
    129    000072 CB39             SRL     C             //最后一次多移一位
    130    000074 CB1C             RR      H
    131    000076 CB1D             RR      L
    132    000078 10F3               DJNZ    MULshiftadd
    133    00007A 7D               LD      A,L
    134    00007B 0603             LD      B,03H       //本来应该是4位
    135    00007D          MULshiftadd2:        
    136    00007D CB39             SRL     C
    137    00007F CB1C             RR      H
    138    000081 CB1D             RR      L
    139    000083 10F8             DJNZ    MULshiftadd2
    140    000085          //优化PLL值        
    141    000085          /*
    142    000085                  LD      A,(LWRD WSET_HLSI)
    143    000085                  CP      01H
    144    000085                  JR      Z,calculate_ok   
    145    000085          */
    146    000085          
    147    000085 0607             LD      B,07H
    148    000087 A0               AND     B
    149    000088 FE05               CP      05H
    150    00008A 3801               JR      C,calculate_ok
    151    00008C          
    152    00008C 23                 INC     HL
    153    00008D          calculate_ok:
    154    00008D 22....           LD      (LWRD WSET_PLLLB),HL
    155    000090                      
    156    000090 E1                 POP        HL

⌨️ 快捷键说明

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