ap_message2_formusic.lst
来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 1,069 行 · 第 1/4 页
LST
1,069 行
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/Nov/107 22:56:47 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\common\ap_message2_formusic.c #
# List file = d:\case_i_d913f\ap\ap_music\list\ap_message2_formusic.lst#
# Object file = d:\case_i_d913f\ap\ap_music\obj\ap_message2_formusic.r01#
# ASM file = d:\case_i_d913f\ap\ap_music\list\ap_message2_formusic.s01#
# Command line = -v0 -mb -OD:\case_i_d913f\ap\ap_music\Obj\ -e -K #
# -w -gA -z9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d913f\ap\ap_music\List\ -q -t8 #
# -AD:\case_i_d913f\ap\ap_music\List\ #
# -ND:\case_i_d913f\ap\ap_music\List\ -X #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# d:\case_i_d913f\AP\COMMON\ap_message2_formusic.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ap_message2_formusic(17)
\ 0000 RSEG COM_MSG(0)
\ 0000 RSEG UDATA0(0)
\ 0000 RSEG IDATA0(0)
\ 0000 RSEG CDATA0(0)
\ 0000 PUBLIC EarProtectThreshold
\ 0000 EXTERN LightOnOff
\ 0000 PUBLIC Lightmodeset
\ 0000 EXTERN SetContrast
\ 0000 PUBLIC ap_get_event
\ 0000 EXTERN ap_get_message
\ 0000 PUBLIC ap_get_message_core
\ 0000 EXTERN ap_handle_hotkey
\ 0000 PUBLIC ap_handle_hotkey_core
\ 0000 PUBLIC ap_message_init
\ 0000 PUBLIC ap_set_event
\ 0000 PUBLIC ap_sleep
\ 0000 PUBLIC g_EarProtect_flag
\ 0000 PUBLIC g_autoswitch_counter
\ 0000 PUBLIC g_autoswitch_time
\ 0000 EXTERN g_comval
\ 0000 PUBLIC g_contrast_num
\ 0000 PUBLIC g_decrease_time
\ 0000 PUBLIC g_half_hour_counter
\ 0000 PUBLIC g_light_flag
\ 0000 PUBLIC g_light_mode
\ 0000 PUBLIC g_light_time
\ 0000 PUBLIC g_rtc_counter
\ 0000 PUBLIC g_sleep_time
\ 0000 PUBLIC g_standby_time
\ 0000 EXTERN sKY_Beep
\ 0000 EXTERN ui_run_realtime
\ 0000 EXTERN ui_show_lock
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?S_MUL_L02
\ 0000 EXTERN ?SS_CMP_L02
\ 0000 EXTERN ?C_V_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_LEAVE_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 EXTERN ?ENT_PARM_DIRECT_L09
\ 0000 EXTERN ?ENT_AUTO_DIRECT_L09
\ 0000 RSEG COM_MSG
\ 0000 Lightmodeset:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * ap common lib message file
5 *
6 * (c) Copyright, Actions Co,Ld.
7 * All Right Reserved
8 *
9 * $Id: ap_message2_formusic.c,v 1.1.1.1 2006/05/22 03:23:59 selina Exp $
10 *******************************************************************************
11 */
12 #pragma codeseg(COM_MSG)
13
14 #include "ap_common.h"
15 #ifdef EAR_PROTECT
16 #define EarProctetTimeTick 60 //30 seconds
17 byte g_decrease_time = 0;
18 int g_half_hour_counter = 0;
19 int g_autoswitch_counter = 0;
20 byte g_EarProtect_flag;
21 byte EarProtectThreshold;
22 int g_autoswitch_time;
23 #endif
24 BYTE g_light_time=0; //关背光时间,0.5秒为单位
25 BYTE g_light_mode=0; //关亮度模式,0:变暗,1:变黑
26 BYTE g_contrast_num=0; //对比度
27 WORD g_sleep_time=0; //睡眠时间,0.5秒为单位
28 WORD g_standby_time=0; //自动关机时间,0.5秒为单位
29 WORD g_rtc_counter=0; //rtc 消息计数
30 //BYTE charge_flag;
31
32 extern int DealPlayKey(void);
33 extern bool g_Pausetostop;
34 extern comval_t g_comval;
35 //WORD g_ap_event=0; //事件标志
36 bool g_light_flag = TRUE;//背景灯开关标志。
37 /*
38 * 对于普通按键的处理存在隐患,如果os把普通按键的值定义到0x20 以上,
39 * ap_get_message() 将不能正确处理, 正确的做法是用9个case, 不用default
40 */
41 #if Msg_KeyEQ > 0x20 || Msg_KeyMenu > 0x20 || \
42 Msg_KeyNext > 0x20 || Msg_KeyLast > 0x20 || \
43 Msg_KeyVolAdd > 0x20 || Msg_KeyVolSub > 0x20 || \
44 Msg_KeyPlayPause > 0x20 || Msg_KeyREC > 0x20 || \
45 Msg_KeyLoop > 0x20 || Msg_KeyVol > 0x20
46
47 #error os define key greater than 0x20
48 #endif
49 void Lightmodeset(bool OnOff)
50 {
\ 0000 D5 PUSH DE
51
52 if(g_light_mode==1)
\ 0001 3A0600 LD A,(g_light_mode)
\ 0004 3D DEC A
\ 0005 2005 JR NZ,?0005
\ 0007 ?0004:
53 {
54 LightOnOff(OnOff);
\ 0007 CD0000 CALL LWRD LightOnOff
55 }
56 else
\ 000A 180B JR ?0009
\ 000C ?0005:
57 {
58 if(!OnOff)SetContrast(0);
\ 000C AF XOR A
\ 000D B3 OR E
\ 000E 2804 JR Z,?0105
\ 0010 ?0007:
59 else
\ 0010 ?0008:
60 SetContrast(g_contrast_num);
\ 0010 ED5B0700 LD DE,(g_contrast_num)
\ 0014 ?0105:
\ 0014 CD0000 CALL LWRD SetContrast
\ 0017 ?0009:
\ 0017 ?0006:
61
62 }
63
64 }
\ 0017 E1 POP HL
\ 0018 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 001B ap_message_init:
65
66 /*
67 ********************************************************************************
68 * Description : 初始化消息处理
69 *
70 * Arguments : comval, 系统设定值, =null 表示只初始化内部计数器
71 *
72 * Returns :
73 *
74 * Notes :
75 *
76 ********************************************************************************
77 */
78 void ap_message_init(const comval_t *comval)
79 {
\ 001B C5 PUSH BC
\ 001C DDE5 PUSH IX
\ 001E D5 PUSH DE
\ 001F DDE1 POP IX
80
81 if(comval != NULL)
\ 0021 7B LD A,E
\ 0022 B2 OR D
\ 0023 2848 JR Z,?0011
\ 0025 ?0010:
82 {
83 g_light_time = comval->LightTime * 2;
\ 0025 DD7E09 LD A,(IX+9)
\ 0028 87 ADD A,A
\ 0029 320500 LD (g_light_time),A
84 g_light_mode = comval->Lightmode;
\ 002C DD7E14 LD A,(IX+20)
\ 002F 320600 LD (g_light_mode),A
85 g_sleep_time = comval->SleepTime * 60 * 2;
\ 0032 DD4E0B LD C,(IX+11)
\ 0035 0600 LD B,0
\ 0037 113C00 LD DE,60
\ 003A CD0000 CALL LWRD ?S_MUL_L02
\ 003D EB EX DE,HL
\ 003E 29 ADD HL,HL
\ 003F 220800 LD (g_sleep_time),HL
86
87 g_standby_time = comval->StandbyTime * 2;
\ 0042 DD6E0A LD L,(IX+10)
\ 0045 60 LD H,B
\ 0046 29 ADD HL,HL
\ 0047 220A00 LD (g_standby_time),HL
88 g_contrast_num = comval->DisplayContrast;
\ 004A DD7E08 LD A,(IX+8)
\ 004D 320700 LD (g_contrast_num),A
89 #ifdef EAR_PROTECT
90 g_EarProtect_flag = comval->EarProtect_flag;
\ 0050 DD7E18 LD A,(IX+24)
\ 0053 320000 LD (g_EarProtect_flag),A
91 EarProtectThreshold = comval->EarProtectThreshold;
\ 0056 DD7E19 LD A,(IX+25)
\ 0059 320100 LD (EarProtectThreshold),A
92 g_autoswitch_time = comval->auto_switchoff_time * 60 * 2;
\ 005C DD4E1B LD C,(IX+27)
\ 005F DD461C LD B,(IX+28)
\ 0062 113C00 LD DE,60
\ 0065 CD0000 CALL LWRD ?S_MUL_L02
\ 0068 EB EX DE,HL
\ 0069 29 ADD HL,HL
\ 006A 220200 LD (g_autoswitch_time),HL
\ 006D ?0011:
93 #endif
94 }
95
96 g_rtc_counter = 0;
\ 006D 210000 LD HL,0
\ 0070 220C00 LD (g_rtc_counter),HL
97 // g_light_flag = TRUE;
98 }
\ 0073 DDE1 POP IX
\ 0075 C1 POP BC
\ 0076 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0079 ap_get_message_core:
99
100
101 /*
102 ********************************************************************************
103 * Description : 处理系统消息, 返回按键消息, 同时负责开/关背光
104 *
105 * Arguments : key, 系统消息
106 *
107 * Returns : 返回ap能够识别的消息, 如果没有系统消息, 返回 AP_KEY_NULL
108 *
109 * Notes :
110
111 * 按键时序:
112 * 0.....1.2....1.5........... (s)
113 * key long hold up (>1.2s)
114 * key up (<1.2s)
115 *
116 * key rate: 0.3s
117 *
118 ********************************************************************************
119 */
120 char ap_get_message_core(char key)
121 {
\ 0079 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 007C FEFF DEFW 65534
122 static WORD key_count=0; //当前按键消息发生的次数
123 static char key_value=Msg_KeyNull; //当前按键的值
124 #ifdef EAR_PROTECT
125 char tempVolume;
126 bool counter_flag = FALSE;
127
128 tempVolume = input8(0x87)&0x1f;
\ 007E DB87 IN A,(135)
\ 0080 E61F AND 31
\ 0082 DD77FE LD (IX-2),A
129 if (tempVolume > EarProtectThreshold)
\ 0085 47 LD B,A
\ 0086 3A0100 LD A,(EarProtectThreshold)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?