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

📄 main.lst

📁 5807收音机模块用于炬力平台
💻 LST
📖 第 1 页 / 共 5 页
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       23/Feb/109  09:18:22 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  banked                                              #
#       Source file   =  d:\case_i_d95f\ap\ap_radio\main.c                   #
#       List file     =  d:\case_i_d95f\ap\ap_radio\list\main.lst            #
#       Object file   =  d:\case_i_d95f\ap\ap_radio\obj\main.r01             #
#       ASM file      =  d:\case_i_d95f\ap\ap_radio\list\main.s01            #
#       Command line  =  -v0 -mb -OD:\case_i_d95f\ap\ap_radio\Obj\ -e -K -w  #
#                        -gA -s9 -RCODE -r0 -DNAPDEBUG                       #
#                        -LD:\case_i_d95f\ap\ap_radio\List\ -q -t8           #
#                        -AD:\case_i_d95f\ap\ap_radio\List\                  #
#                        -Id:\sdk_i_95f\inc\ -Id:\case_i_d95f\inc\           #
#                        d:\case_i_d95f\ap\ap_radio\main.c                   #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    main(17)
   \   0000                    RSEG    CODE(0)
   \   0000                    RSEG    CSTR(0)
   \   0000                    RSEG    CONST(0)
   \   0000                    RSEG    UDATA0(0)
   \   0000                    RSEG    IDATA0(0)
   \   0000                    RSEG    CDATA0(0)
   \   0000                    EXTERN  AutoSearchHandle
   \   0000                    EXTERN  ClearScreen
   \   0000                    EXTERN  DRV_ActiveUD
   \   0000                    PUBLIC  FMStationTab
   \   0000                    PUBLIC  FMStatus
   \   0000                    PUBLIC  FMStatusJP
   \   0000                    PUBLIC  FMStatusUS
   \   0000                    PUBLIC  FMdeal
   \   0000                    PUBLIC  Freqtab
   \   0000                    EXTERN  GetBattery
   \   0000                    EXTERN  GetDefaultComval
   \   0000                    EXTERN  ResClose
   \   0000                    EXTERN  ResOpen
   \   0000                    EXTERN  ResShowMultiString
   \   0000                    EXTERN  ResShowPic
   \   0000                    EXTERN  SearchHandle
   \   0000                    EXTERN  ShowFreqInFM
   \   0000                    PUBLIC  TimeCount
   \   0000                    EXTERN  UpdateScreen
   \   0000                    EXTERN  VMRead
   \   0000                    EXTERN  VMWrite
   \   0000                    EXTERN  ap_get_message
   \   0000                    EXTERN  ap_handle_hotkey
   \   0000                    EXTERN  ap_message_init
   \   0000                    EXTERN  ap_sleep
   \   0000                    PUBLIC  clrregion
   \   0000                    EXTERN  fmSendCommand
   \   0000                    PUBLIC  fmdataflag
   \   0000                    PUBLIC  g_comval
   \   0000                    EXTERN  m_FMPlaystatus
   \   0000                    PUBLIC  main
   \   0000                    PUBLIC  menu
   \   0000                    PUBLIC  pic_active
   \   0000                    PUBLIC  pic_inactive
   \   0000                    PUBLIC  radio_param
   \   0000                    EXTERN  res_fp
   \   0000                    PUBLIC  slider
   \   0000                    PUBLIC  string
   \   0000                    EXTERN  ui_auto_update
   \   0000                    EXTERN  ui_function_menu
   \   0000                    EXTERN  ui_show_batt
   \   0000                    EXTERN  ui_slider
   \   0000                    PUBLIC  volmuteflag
   \   0000                    PUBLIC  volume_callback
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?SS_DIV_L02
   \   0000                    EXTERN  ?S_MUL_L02
   \   0000                    EXTERN  ?S_V_SWITCH_L06
   \   0000                    EXTERN  ?BANK_CALL_DIRECT_L08
   \   0000                    EXTERN  ?BANK_FAST_LEAVE_L08
   \   0000                    EXTERN  ?STRCPY_L11
   \   0000                    EXTERN  ?MEMCMP_L11
   \   0000                    RSEG    CODE
   \   0000            volume_callback:
      1          /*
      2           *******************************************************************************
      3           *                ACTOS AP
      4           *        main ap of sdk 3.0
      5           *
      6           *        (c) Copyright, Actions Co,Ld.
      7           *             All Right Reserved
      8           *
      9           *******************************************************************************
     10           */
     11          #include "ap_radio.h"
     12          //#include "mem.h"
     13          #include "actos.h"
     14          
     15          #define OpenFMPower1() output8(0xc0,(input8(0xc0)|0x01))    //enable output a0
     16          #define OpenFMPower2() output8(0xc1,(input8(0xc1)&0xfe))    //disable a0 input 
     17          #define OpenFMPower3() output8(0xc2,input8(0xc2)&0xfe)
     18          #define CloseFMPower1() output8(0xc2,((input8(0xc2)|0x01)))    //disable output a0
     19          #define CloseFMPower2() output8(0xc2,((input8(0xc2)|0x01)))
     20          
     21          extern fm_play_status_t m_FMPlaystatus;
     22          
     23          int TimeCount;
     24          FMRADIO_param_t radio_param;
     25          slider_t slider;
     26          region_t clrregion;
     27          function_menu_t menu; //菜单结构体
     28          comval_t F_comval;
     29          //电台频率对照表(注:频率范围87M-108M(US)或76M-90M(Japan),以K为精度要三位数,但由于最高位都是1,所以就可不记录,只记中低位就可以了).
     30          WORD FMStationTab[40];
     31          fm_play_status_t FMStatus; //当前电台信息,8 bytes
     32          fm_play_status_t FMStatusUS; //US电台信息暂存,8 bytes
     33          fm_play_status_t FMStatusJP; //Japan电台信息暂存,8bytes
     34          char fmdataflag[3]; //第一次进FM标志,3 bytes
     35          char Freqtab[10];
     36          
     37          //WORD SearchFreq;
     38          //WORD SetFreq;
     39          
     40          const int pic_inactive[] =
     41          { RA_SAVE, MICIN, DELL, DELALL, AUTOSEL, RA_US, RA_JP, EXIT }; //MICIN: for FM record by ccm
     42          const int pic_active[] =
     43          { RA_SAVEA, MICINA, DELLA, DELALLA, AUTOSELA, RA_USA, RA_JPA, EXITA };//MICINA:for FM record by ccm
     44          const int string[] =
     45          { FMENU1, FMENU15, FMENU2, FMENU3, FMENU16, FMENU4, FMENU5, FMENU6 }; //FMENU15:电台录音 by ccm
     46          //函数定义
     47          int SearchHandle(BYTE Direct); //自动搜索处理,Direct=10,NEXT,=20,LAST
     48          int AutoSearchHandle(BYTE Direct);
     49          int FMdeal(int test); //FM应用的处理
     50          void ShowFreqInFM(void); //FM主界面显示
     51          bool Search_Show(FM_direct_t Direct); //自动搜台时的显示
     52          bool volmuteflag = 1; //静音标志
     53          void volume_callback(int Vol) //音量设置的CALLBACK函数
     54          {
   \   0000  C5                PUSH    BC
   \   0001  DDE5              PUSH    IX
   \   0003  D5                PUSH    DE
   \   0004  DDE1              POP     IX
     55              //实时改变音量的值
     56              FMStatus.vol_display = Vol;
   \   0006  7B                LD      A,E
   \   0007  329500            LD      (FMStatus+8),A
     57              FMStatus.volume = Vol * 31 / g_comval.VolumeMax;
   \   000A  ED4B3C00          LD      BC,(g_comval+31)
   \   000E  0600              LD      B,0
   \   0010  C5                PUSH    BC
   \   0011  111F00            LD      DE,31
   \   0014  DDE5              PUSH    IX
   \   0016  C1                POP     BC
   \   0017  CD0000            CALL    LWRD ?S_MUL_L02
   \   001A  C1                POP     BC
   \   001B  CD3D00            CALL    LWRD ?0166
     58              fmSendCommand(MC_SETVOLUME, FMStatus.volume);
   \   001E  4F                LD      C,A
   \   001F  0600              LD      B,0
   \   0021  1E40              LD      E,64
   \   0023  CD4A00            CALL    LWRD ?0167
     59          
     60              if (FMStatus.volume == 0)
   \   0026  3A9300            LD      A,(FMStatus+6)
   \   0029  B7                OR      A
   \   002A  2005              JR      NZ,?0003
   \   002C            ?0002:
     61                  fmSendCommand(MC_MUTE, SetMUTE);
   \   002C  010100            LD      BC,1
   \   002F  1803              JR      ?0131
     62              else
   \   0031            ?0003:
     63                  fmSendCommand(MC_MUTE, releaseMUTE);
   \   0031  010000            LD      BC,0
   \   0034            ?0131:
   \   0034  CD4800            CALL    LWRD ?0168
   \   0037            ?0004:
     64              
     65                  
     66               
     67          }
   \   0037  DDE1              POP     IX
   \   0039  C1                POP     BC
   \   003A  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   003D            ?0166:
   \   003D  CD0000            CALL    LWRD ?SS_DIV_L02
   \   0040  7B                LD      A,E
   \   0041  329300            LD      (FMStatus+6),A
   \   0044  C9                RET
   \   0045            ?0169:
   \   0045  010100            LD      BC,1
   \   0048            ?0168:
   \   0048  1E0C              LD      E,12
   \   004A            ?0167:
   \   004A  3E00              LD      A,BYTE3 fmSendCommand
   \   004C            ?0170:
   \   004C  210000            LD      HL,LWRD fmSendCommand
   \   004F  C30000            JP      LWRD ?BANK_CALL_DIRECT_L08
   \   0052            main:
     68          #if 0
     69          //对第一进FM进行降噪
     70          void volume_init()
     71          {
     72              uchar i,j;
     73              for(i=0;i<FMStatus.volume;i++)
     74              {
     75                  fmSendCommand(MC_SETVOLUME, i);
     76                  output8(WATCHDOG, input8(WATCHDOG) | 0x8);
     77                  for(j=0;j<100;j++);
     78              }
     79          }
     80          #endif
     81          
     82          #define OpenFM()
     83          int main(int param)
     84          {
   \   0052  C5                PUSH    BC
   \   0053  FDE5              PUSH    IY
   \   0055  DDE5              PUSH    IX
   \   0057  D5                PUSH    DE
   \   0058  F5                PUSH    AF
   \   0059  F5                PUSH    AF
   \   005A  F5                PUSH    AF
   \   005B  F5                PUSH    AF
     85              int result;
     86          
     87              //Open VCCOUT for FM Module. by ccm
     88              int i, j;
     89              char buffer_f3;
     90          
     91              OpenFMPower1();
   \   005C  DBC0              IN      A,(192)
   \   005E  CBC7              SET     0,A
   \   0060  D3C0              OUT     (192),A
     92              OpenFMPower2();
   \   0062  DBC1              IN      A,(193)
   \   0064  CB87              RES     0,A
   \   0066  D3C1              OUT     (193),A
     93              OpenFMPower3();
   \   0068  DBC2              IN      A,(194)
   \   006A  CB87              RES     0,A
   \   006C  D3C2              OUT     (194),A
     94              if (param == 0xfe)
   \   006E  3EFE              LD      A,254
   \   0070  AB                XOR     E
   \   0071  B2                OR      D
   \   0072  201D              JR      NZ,?0006
   \   0074            ?0005:
     95              {
     96               
     97                  fmSendCommand(MC_MUTE, SetMUTE);
   \   0074  CD4500            CALL    LWRD ?0169
     98                  fmSendCommand(MC_CLOSE, 0);
   \   0077  010000            LD      BC,0
   \   007A  1E02              LD      E,2
   \   007C  CD4A00            CALL    LWRD ?0167
     99                  CloseFMPower2();
   \   007F  DBC2              IN      A,(194)
   \   0081  CBC7              SET     0,A
   \   0083  D3C2              OUT     (194),A
    100                  CloseFMPower1();
   \   0085  DBC2              IN      A,(194)
   \   0087  CBC7              SET     0,A
   \   0089  D3C2              OUT     (194),A
    101                   
    102                  return 0;
   \   008B  210000            LD      HL,0
    103              }
   \   008E  C3A701            JP      LWRD ?0029
   \   0091            ?0006:
    104               
    105              

⌨️ 快捷键说明

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