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

📄 ap_message2.s01

📁 5807收音机模块用于炬力平台
💻 S01
📖 第 1 页 / 共 2 页
字号:
; 213.	
; 214.	            return AP_MSG_WAIT_TIMEOUT;    //8 sec timeout
	LD	L,30
; 215.	        }
	JP	LWRD ?0090
?0059:
; 216.	
; 217.	        if(key == MSG_RTC2HZ) key = AP_MSG_RTC; 
	LD	B,E
	DEC	B
	JP	PO,?0061
?0060:
	LD	(IX-2),28
?0061:
; 218.	         
; 219.	        if(g_comval.BatteryType == BATT_TYPE_LITHIUM)                  //
	LD	A,(g_comval+15)
	DEC	A
	DEC	A
	JP	NZ,?0089
?0062:
; 220.	        {
; 221.	            if((input8(0x8e) & 0x80) != 0)
	IN	A,(142)
	BIT	7,A
	JP	Z,?0089
?0064:
; 222.	            {    
; 223.	                if(g_charge_counter==60)
	LD	A,(g_charge_counter)
	CP	60
	JR	NZ,?0067
?0066:
; 224.	                { 
; 225.	                    sKY_ChargeGetandSet();           //usb插上时检测充电状态,每5秒钟检测一次
	CALL	LWRD sKY_ChargeGetandSet
; 226.	                    g_charge_counter = 0; 
	XOR	A
	LD	(g_charge_counter),A
; 227.	                }
; 228.	                else
	JP	LWRD ?0089
?0067:
; 229.	                {
; 230.	                g_charge_counter++;
	LD	HL,g_charge_counter
	INC	(HL)
?0068:
?0065:
?0063:
; 231.	                }
; 232.	            }
; 233.	         }             
; 234.	        break;
	JR	?0089
?0069:
; 235.	
; 236.	
; 237.	    case MSG_USB_STICK:        //usb plugin, 等同按键 
; 238.	        if((g_comval.BatteryType != BATT_TYPE_LITHIUM)&&((input8(0x57)&0x02) == 0))  //干电池方案插入充电器
	LD	A,(g_comval+15)
	DEC	A
	DEC	A
	JR	Z,?0071
	IN	A,(87)
	BIT	1,A
	JR	Z,?0080
?0073:
?0072:
?0070:
; 239.	        {
; 240.	                key = AP_KEY_NULL;
; 241.	        }
; 242.	     
; 243.	        else
?0071:
; 244.	        {
; 245.	        key = AP_MSG_USB_PLUGIN;
; 246.	        g_rtc_counter = 0;
	LD	HL,0
	LD	(g_rtc_counter),HL
; 247.	        key_count = 1;        
	INC	HL
	LD	(?0006),HL
	LD	(IX-2),26
?0074:
; 248.	        //开背光
; 249.	        //if(g_light_time != 0) sKY_OpenBacklight();
; 250.	        }
; 251.	        
; 252.	        break;
	JR	?0089
?0075:
; 253.	
; 254.	//#ifndef DEBUG
; 255.	
; 256.	    case MSG_LOW_POWER:    //low power, nmi 0.98v
; 257.	//        DUMP("low power", 0);
; 258.	//        if((input8(0x8f)&0x3f)<0x12)       //当Li电池电压小于3.3V(0xa0) ,ap层才去响应低电消息,客户可修改此值
; 259.	//        {
; 260.	        if(g_comval.BatteryType == BATT_TYPE_LITHIUM)                  //
	LD	A,(g_comval+15)
	DEC	A
	DEC	A
	JR	NZ,?0089
?0076:
; 261.	           key = AP_MSG_LOW_POWER;
	LD	(IX-2),31
?0077:
; 262.	//        }
; 263.	        break;
	JR	?0089
?0078:
; 264.	  
; 265.	    case MSG_USB_UNSTICK:    //ap 不识别的消息 
; 266.	        if(g_comval.BatteryType == BATT_TYPE_LITHIUM)                  //
	LD	A,(g_comval+15)
	DEC	A
	DEC	A
	JR	NZ,?0080
?0079:
; 267.	         sKY_ChargeGetandSet();  //usb拔出时一定要检测一次充电状态  
	CALL	LWRD sKY_ChargeGetandSet
?0080:
?0081:
; 268.	
; 269.	    case Msg_KeyNull:        //没有按键
; 270.	    
; 271.	    case Msg_KeyUnHold:
; 272.	        key = AP_KEY_NULL;
	LD	(IX-2),0
; 273.	        break;
	JR	?0089
?0082:
; 274.	
; 275.	
; 276.	    case Msg_KeyHold:
; 277.	        //lock 后还会有up消息
; 278.	        key = AP_MSG_LOCK;
; 279.	        g_rtc_counter = 0;
	LD	HL,0
	LD	(g_rtc_counter),HL
; 280.	        key_count = 1;
	INC	HL
	LD	(?0006),HL
; 281.	        key_value = key;
	LD	A,25
	LD	(?0007),A
	LD	(IX-2),A
; 282.	
; 283.	        break;
	JR	?0089
?0083:
; 284.	
; 285.	    case MSG_SD_IN:/*插卡状态*/
; 286.	        key = AP_MSG_SD_IN;
	LD	(IX-2),56
; 287.	        break;
	JR	?0089
?0084:
; 288.	
; 289.	    case MSG_SD_OUT:/*拨卡状态*/
; 290.	        key = AP_MSG_SD_OUT;
	LD	(IX-2),55
; 291.	        break;
	JR	?0089
?0085:
; 292.	
; 293.	    default:            //新的按键  
; 294.	        g_rtc_counter = 0;
	LD	HL,0
	LD	(g_rtc_counter),HL
; 295.	        key_count = 1;
	INC	HL
	LD	(?0006),HL
; 296.	        key_value = key;
	LD	A,E
	LD	(?0007),A
; 297.	
; 298.	        //开背光
; 299.	        if(g_light_time != 0) sKY_OpenBacklight();  
	LD	A,(g_light_time)
	OR	A
	JR	Z,?0087
?0086:
	CALL	LWRD sKY_OpenBacklight
?0087:
; 300.	            
; 301.	        if(g_comval.KeyTone)        //key tone add by mzh 2007.3.14
	LD	A,(g_comval+29)
	OR	A
	JR	Z,?0089
?0088:
; 302.	                  sKY_Beep(g_comval.KeyTone);                
	LD	DE,(g_comval+29)
	CALL	LWRD sKY_Beep
?0089:
?0030:
; 303.	
; 304.	    } //switch()
; 305.	                  
; 306.	    return key;
	LD	L,(IX-2)
; 307.	}
?0090:
	LD	SP,IX
	POP	IX
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
ap_sleep:
; 308.	
; 309.	/*
; 310.	********************************************************************************
; 311.	* Description : 设置事件发生标志
; 312.	*
; 313.	* Arguments   : event, 事件集合
; 314.	*
; 315.	* Returns     :
; 316.	*
; 317.	* Notes       :
; 318.	*
; 319.	********************************************************************************
; 320.	*/
; 321.	//void ap_set_event(WORD event)
; 322.	//{
; 323.	//    g_ap_event |= event;
; 324.	//}
; 325.	
; 326.	/*
; 327.	********************************************************************************
; 328.	* Description : 检测事件是否发生
; 329.	*
; 330.	* Arguments   : event, 需要检测的事件集合
; 331.	        condition:
; 332.	            AP_EVENT_ALL:    所有事件发生,返回event,否则返回0
; 333.	            AP_EVENT_ANY:    任意事件发生,返回event,否则返回0
; 334.	* Returns     : event 按照 condition 指定的条件发生,返回系统事件的集合
; 335.	        不满足条件, 返回0
; 336.	*
; 337.	* Notes       :
; 338.	*
; 339.	********************************************************************************
; 340.	*/
; 341.	//WORD ap_get_event(WORD event, WORD condition)
; 342.	//{
; 343.	//    if(condition == AP_EVENT_ALL)
; 344.	//    {
; 345.	//        if( (g_ap_event & event) == event) return g_ap_event;
; 346.	//        else return 0;
; 347.	//    }
; 348.	//    else if(condition == AP_EVENT_ANY)
; 349.	//    {
; 350.	//        if( (g_ap_event & event) != 0) return g_ap_event;
; 351.	//        else return 0;
; 352.	//    }
; 353.	//    else return 0;
; 354.	//    
; 355.	//}
; 356.	
; 357.	/*
; 358.	********************************************************************************
; 359.	* Description : 清除事件发生标志
; 360.	*
; 361.	* Arguments   : event, 事件集合
; 362.	*
; 363.	* Returns     :
; 364.	*
; 365.	* Notes       :
; 366.	*
; 367.	********************************************************************************
; 368.	*/
; 369.	//void ap_del_event(WORD event)
; 370.	//{
; 371.	//    g_ap_event &= (~event);
; 372.	//}
; 373.	
; 374.	/*
; 375.	********************************************************************************
; 376.	* Description : 睡眠指定的时间
; 377.	*
; 378.	* Arguments   : half_sec, 时间, 0.5秒为单位
; 379.	*
; 380.	* Returns     : 如果指定的时间内没有其他消息产生, 返回0
; 381.	        如果指定的时间内有其他消息产生, 返回该消息
; 382.	* Notes       : 如果指定的时间内有其他消息产生, 睡眠的时间将< 指定的时间
; 383.	*
; 384.	********************************************************************************
; 385.	*/
; 386.	char ap_sleep(int half_sec)
; 387.	{
	PUSH	BC
	PUSH	IY
	PUSH	IX
	PUSH	AF
	PUSH	DE
	POP	IY
; 388.	    int n=0;    //rtc counter
	LD	IX,0
?0092:
; 389.	    char key;
; 390.	
; 391.	    while(1)
; 392.	    {
; 393.	        key = ap_get_message();
	CALL	LWRD ap_get_message
	LD	HL,0
	ADD	HL,SP
	LD	(HL),A
; 394.	        if(key == AP_MSG_RTC ||
; 395.	            key == AP_MSG_CHARGING ||
; 396.	            key == AP_MSG_WAIT_TIMEOUT)    //sleep 时不管timeout
	CP	28
	JR	Z,?0096
	CP	27
	JR	Z,?0096
	CP	30
	JR	NZ,?0095
?0096:
?0097:
?0094:
; 397.	        {
; 398.	            n++;
; 399.	            if(n >= half_sec) return 0;
	PUSH	IY
	POP	BC
	INC	IX
	PUSH	IX
	POP	HL
	OR	128
	SBC	HL,BC
	JP	PO,?0121
	XOR	H
?0121:
	JP	M,?0092
?0098:
	LD	L,0
; 400.	        }
	JR	?0105
?0099:
?0095:
; 401.	        else if(key == AP_KEY_NULL ||
; 402.	            key == AP_MSG_LOCK ||
; 403.	            key == (AP_MSG_LOCK | AP_KEY_UP))    //lock 只有up, 没有long/hold
	XOR	A
	OR	(HL)
	JR	Z,?0092
	CP	25
	JR	Z,?0092
	CP	57
	JR	Z,?0092
?0103:
?0104:
?0101:
; 404.	        {
; 405.	            continue;
?0102:
; 406.	        }
; 407.	        else
; 408.	        {
; 409.	            //here maybe hotkey
; 410.	            return ap_handle_hotkey(key);
	LD	E,A
	CALL	LWRD ap_handle_hotkey
	LD	L,A
; 411.	        }
?0105:
	POP	AF
	POP	IX
	POP	IY
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0100:
; 412.	    }
; 413.	
; 414.	}
ap_handle_hotkey_core:
; 415.	
; 416.	/*
; 417.	********************************************************************************
; 418.	* Description : 处理热键消息, 返回结果消息
; 419.	*
; 420.	* Arguments   : key, 按键消息
; 421.	*
; 422.	* Returns     : 如果有可识别的热键消息,  返回结果消息
; 423.	        如果没有可识别的热键消息,  返回0
; 424.	*
; 425.	* Notes       :
; 426.	*
; 427.	********************************************************************************
; 428.	*/
; 429.	char ap_handle_hotkey_core(char key)
; 430.	{
	PUSH	DE
; 431.	    switch( key )
	CALL	LWRD ?C_V_SWITCH_L06
	DEFW	7
	DEFB	25
	DEFB	26
	DEFB	29
	DEFB	31
	DEFB	40
	DEFB	129
	DEFB	135
	DEFW	?0114
	DEFW	?0108
	DEFW	?0107
	DEFW	?0109
	DEFW	?0107
	DEFW	?0107
	DEFW	?0110
	DEFW	?0111
?0107:
; 432.	    {
; 433.	    case AP_KEY_PLAY | AP_KEY_LONG:    //长按play发standby
; 434.	    case AP_MSG_STANDBY:        //自动关机
; 435.	    //case AP_MSG_SLEEP:        //睡眠
; 436.	    //case AP_MSG_LOW_POWER:    //低电自动关机
; 437.	    case AP_MSG_FORCE_STANDBY:    //使用上两个会报label duplicate
; 438.	        //ap_set_event(AP_EVENT_STANDBY);
; 439.	        return RESULT_STANDBY;
	LD	L,22
; 440.	    case AP_KEY_MODE | AP_KEY_LONG:    //长按menu进入main
	JR	?0115
?0108:
; 441.	        //ap_set_event(AP_EVENT_MAIN);
; 442.	        return RESULT_MAIN;
	LD	L,25
; 443.	        //break;
; 444.	    case AP_KEY_AB | AP_KEY_UP:    //进入录音
	JR	?0115
?0109:
; 445.	        //ap_set_event(AP_EVENT_RECORD);
; 446.	        return RESULT_RECORD;
	LD	L,51
; 447.	    case AP_MSG_USB_PLUGIN:        //进入udisk 模式
	JR	?0115
?0110:
; 448.	        //ap_set_event(AP_EVENT_UDISK);
; 449.	        return RESULT_UDISK;
	LD	L,24
; 450.	    case AP_MSG_LOCK:        //locked
	JR	?0115
?0111:
; 451.	        if(ui_run_realtime)    //实时模式不显示lock
	LD	A,(ui_run_realtime)
	OR	A
	JR	NZ,?0114
?0112:
; 452.	        {
; 453.	            //TODO: send lock message to message queue
; 454.	            return 0;
; 455.	        }
?0113:
; 456.	        else
; 457.	        {
; 458.	            ui_show_lock(1);    //这里不处理热键,防止嵌套
	LD	E,1
	LD	A,BYTE3 ui_show_lock
	LD	HL,LWRD ui_show_lock
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 459.	            //ap_set_event(AP_EVENT_REDRAW);
; 460.	            return RESULT_REDRAW;
	LD	L,46
; 461.	        }
	JR	?0115
?0114:
; 462.	//    case AP_KEY_UNLOCK:
; 463.	//        return ui_show_lock(0);
; 464.	    default:
; 465.	        //here just drop the key
; 466.	        return 0;
	LD	L,0
; 467.	    }
?0115:
	POP	AF
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0106:
; 468.	}
; 469.	
	RSEG	UDATA0
g_EarProtect_flag:
	DEFS	1
EarProtectThreshold:
	DEFS	1
	RSEG	IDATA0
g_decrease_time:
	DEFS	1
g_half_hour_counter:
	DEFS	2
g_light_time:
	DEFS	1
g_sleep_time:
	DEFS	2
g_standby_time:
	DEFS	2
g_rtc_counter:
	DEFS	2
g_charge_counter:
	DEFS	1
?0006:
	DEFS	2
?0007:
	DEFS	1
	RSEG	CDATA0
	DEFB	0
	DEFW	0
	DEFB	0
	DEFW	0
	DEFW	0
	DEFW	0
	DEFB	0
	DEFW	0
	DEFB	0
	END

⌨️ 快捷键说明

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