main.lst
来自「MP3 整个 SDK」· LST 代码 · 共 1,352 行 · 第 1/5 页
LST
1,352 行
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 25/Dec/106 17:01:36 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d90f\ap\ap_radio\main.c #
# List file = d:\case_i_d90f\ap\ap_radio\list\main.lst #
# Object file = d:\case_i_d90f\ap\ap_radio\obj\main.r01 #
# ASM file = d:\case_i_d90f\ap\ap_radio\list\main.s01 #
# Command line = -v0 -mb -OD:\case_i_d90f\ap\ap_radio\Obj\ -e -K -w #
# -gA -s9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d90f\ap\ap_radio\List\ -q -t8 #
# -AD:\case_i_d90f\ap\ap_radio\List\ #
# -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\ #
# d:\case_i_d90f\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 PUBLIC MY_DUMP
\ 0000 EXTERN PutS
\ 0000 EXTERN ResClose
\ 0000 EXTERN ResOpen
\ 0000 EXTERN ResShowMultiString
\ 0000 EXTERN SearchHandle
\ 0000 EXTERN SetTextPos
\ 0000 EXTERN ShowFreqInFM
\ 0000 PUBLIC TimeCount
\ 0000 EXTERN UpdateScreen
\ 0000 PUBLIC Updateflag
\ 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 PUBLIC g_list
\ 0000 EXTERN itoa_4
\ 0000 PUBLIC main
\ 0000 PUBLIC radio_param
\ 0000 EXTERN res_fp
\ 0000 PUBLIC string
\ 0000 EXTERN ui_popup_list
\ 0000 EXTERN ui_show_batt
\ 0000 EXTERN ui_show_volfm
\ 0000 PUBLIC volmuteflag
\ 0000 PUBLIC volume_callback
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 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 * $Id: main.c,v 1.1.1.1 2006/05/22 03:24:00 selina Exp $
10 *******************************************************************************
11 */
12 #include "ap_radio.h"
13 //#include "mem.h"
14 #include "actos.h"
15
16 #define OpenFMPower1() output8(0xf8,input8(0xf8)|0x02) //enable GPIO_E1
17 #define CloseFMPower1() output8(0xf8,input8(0xf8)&0xfd) //disable GPIO_E1
18 #define OpenFMPower2() output8(0xfa,input8(0xfa)&0xfd) //set GPIO_E1 o 0
19 #define CloseFMPower2() output8(0xfa,input8(0xfa)|0x02) //set GPIO_E1 to 1
20 int TimeCount;
21 FMRADIO_param_t radio_param;
22 //slider_t slider;
23 region_t clrregion;
24 //function_menu_t menu; //菜单结构体
25 pop_up_list_t g_list;
26 comval_t g_comval;
27 char Updateflag; //刷新标志
28 //电台频率对照表(注:频率范围87M-108M(US)或76M-90M(Japan),以K为精度要三位数,但由于最高位都是1,所以就可不记录,只记中低位就可以了).
29 WORD FMStationTab[40];
30 fm_play_status_t FMStatus; //当前电台信息,8 bytes
31 fm_play_status_t FMStatusUS; //US电台信息暂存,8 bytes
32 fm_play_status_t FMStatusJP; //Japan电台信息暂存,8bytes
33 char fmdataflag[3]; //第一次进FM标志,3 bytes
34 char Freqtab[10];
35
36
37
38 const WORD string[] = {FMENU1, FMENU15, FMENU2, FMENU3, FMENU16, FMENU4, FMENU5,FMENU6}; //FMENU15:电台录音 by ccm
39 //函数定义
40 int SearchHandle(BYTE Direct); //自动搜索处理,Direct=10,NEXT,=20,LAST
41 int AutoSearchHandle(BYTE Direct);
42 int FMdeal(); //FM应用的处理
43 void ShowFreqInFM(); //FM主界面显示
44 bool Search_Show(FM_direct_t Direct); //自动搜台时的显示
45 bool volmuteflag=0; //静音标志
46 void volume_callback(int Vol) //音量设置的CALLBACK函数
47 {
\ 0000 C5 PUSH BC
\ 0001 D5 PUSH DE
48 //实时改变音量的值
49 fmSendCommand(MC_SETVOLUME,Vol);
\ 0002 4B LD C,E
\ 0003 42 LD B,D
\ 0004 1E40 LD E,64
\ 0006 CD1000 CALL LWRD ?0169
50 }
\ 0009 E1 POP HL
\ 000A C1 POP BC
\ 000B C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 000E ?0170:
\ 000E 1E0C LD E,12
\ 0010 ?0169:
\ 0010 3E00 LD A,BYTE3 fmSendCommand
\ 0012 ?0171:
\ 0012 210000 LD HL,LWRD fmSendCommand
\ 0015 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0018 MY_DUMP:
51
52
53 void MY_DUMP(char *string, int value)
54 {
\ 0018 C5 PUSH BC
\ 0019 D5 PUSH DE
\ 001A F5 PUSH AF
\ 001B F5 PUSH AF
\ 001C F5 PUSH AF
55 char dump_buf[6];
56 dump_buf[0] = ',';
\ 001D 210000 LD HL,0
\ 0020 39 ADD HL,SP
\ 0021 362C LD (HL),44
57 SetTextPos(0, 16);
\ 0023 0E10 LD C,16
\ 0025 1E00 LD E,0
\ 0027 CD0000 CALL LWRD SetTextPos
58 PutS((string), -1);
\ 002A 0EFF LD C,255
\ 002C 210600 LD HL,6
\ 002F 39 ADD HL,SP
\ 0030 5E LD E,(HL)
\ 0031 23 INC HL
\ 0032 56 LD D,(HL)
\ 0033 CD0000 CALL LWRD PutS
59 itoa_4((value), &dump_buf[1]);
\ 0036 210000 LD HL,0
\ 0039 39 ADD HL,SP
\ 003A 010100 LD BC,1
\ 003D 09 ADD HL,BC
\ 003E 4D LD C,L
\ 003F 44 LD B,H
\ 0040 210800 LD HL,8
\ 0043 39 ADD HL,SP
\ 0044 5E LD E,(HL)
\ 0045 23 INC HL
\ 0046 56 LD D,(HL)
\ 0047 3E00 LD A,BYTE3 itoa_4
\ 0049 210000 LD HL,LWRD itoa_4
\ 004C CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
60 dump_buf[5] = '>';
\ 004F 210500 LD HL,5
\ 0052 39 ADD HL,SP
\ 0053 363E LD (HL),62
61
62 PutS(dump_buf, 6);
\ 0055 0E06 LD C,6
\ 0057 210000 LD HL,0
\ 005A 39 ADD HL,SP
\ 005B EB EX DE,HL
\ 005C CD0000 CALL LWRD PutS
63 UpdateScreen(NULL);
\ 005F 110000 LD DE,0
\ 0062 CD0000 CALL LWRD UpdateScreen
\ 0065 ?0003:
64 while( ap_get_message() != (AP_KEY_PLAY| AP_KEY_UP)) {;}
\ 0065 CD0000 CALL LWRD ap_get_message
\ 0068 FE21 CP 33
\ 006A 20F9 JR NZ,?0003
\ 006C ?0004:
65 }
\ 006C ?0002:
\ 006C 210A00 LD HL,10
\ 006F 39 ADD HL,SP
\ 0070 F9 LD SP,HL
\ 0071 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0074 main:
66
67 #define OpenFM()
68 int main(int param)
69 {
\ 0074 C5 PUSH BC
\ 0075 FDE5 PUSH IY
\ 0077 DDE5 PUSH IX
\ 0079 D5 PUSH DE
\ 007A F5 PUSH AF
70 int result;
71
72 //Open VCCOUT for FM Module. by ccm
73 int i,j;
74 TimeCount=0;
\ 007B 210000 LD HL,0
\ 007E 220000 LD (TimeCount),HL
75 OpenFMPower1();
\ 0081 DBF8 IN A,(248)
\ 0083 CBCF SET 1,A
\ 0085 D3F8 OUT (248),A
76
77 OpenFMPower2();
\ 0087 DBFA IN A,(250)
\ 0089 CB8F RES 1,A
\ 008B D3FA OUT (250),A
78 for(i=0;i<599;i++)
\ 008D 39 ADD HL,SP
\ 008E AF XOR A
\ 008F 77 LD (HL),A
\ 0090 23 INC HL
\ 0091 77 LD (HL),A
\ 0092 ?0006:
\ 0092 015782 LD BC,33367
\ 0095 2B DEC HL
\ 0096 56 LD D,(HL)
\ 0097 23 INC HL
\ 0098 66 LD H,(HL)
\ 0099 6A LD L,D
\ 009A 3E80 LD A,128
\ 009C AC XOR H
\ 009D 67 LD H,A
\ 009E ED42 SBC HL,BC
\ 00A0 3024 JR NC,?0005
\ 00A2 ?0007:
79 {
80 j = 50;
\ 00A2 DD213200 LD IX,50
\ 00A6 ?0010:
81 for(;j>0;j--) {;}
\ 00A6 DDE5 PUSH IX
\ 00A8 C1 POP BC
\ 00A9 210000 LD HL,0
\ 00AC F680 OR 128
\ 00AE ED42 SBC HL,BC
\ 00B0 E2B400 JP PO,?0124
\ 00B3 AC XOR H
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?