📄 keyproc.c
字号:
#include "reg52.h"
#include "intrins.h"
#include "globedef.h"
#include "keyproc.h"
#include "delay.h"
#include "m62429.h"
#include "keydef.h"
#include "i2c.h"
#include "Lcd.h "
unsigned char h,m;
unsigned char adj_counter;
unsigned char clock_flag;
unsigned char source_select_bak;
extern unsigned char hour;
extern unsigned char minute;
unsigned char ff_key_flag;
unsigned char fb_key_flag;
extern unsigned char sector_erase(unsigned int sector_addr);
extern unsigned char byte_program(unsigned int byte_addr, unsigned char original_data);
extern unsigned char byte_read(unsigned int byte_addr);
code BYTE POWER_ON_TBL[] = {0x05, 0x02, 0x0, 0x0, 0x0, 0x02, 0xF7};
code BYTE POWER_OFF_TBL[] ={0x05, 0x02, 0x0, 0x0, 0x0, 0x04, 0xF5};
code BYTE PLAYPAUSE_TBL[] ={0x03, 0x02, 0x0, 0x01,0xFA};
code BYTE KeyBound_TBL[] = {0x03, 0x02, 0x0, 0x0, 0xFB};
code BYTE NEXT_KEY_TBL[] ={0x03, 0x02, 0x0, 0x08,0xF3};
code BYTE PREVIOUS_KEY_TBL[] ={0x03, 0x02, 0x0, 0x10,0xEB};
code BYTE FF_KEY_TBL[] ={0x05, 0x02, 0x0, 0x0, 0x0, 0x10, 0xE9};
code BYTE FB_KEY_TBL[] ={0x05, 0x02, 0x0, 0x0, 0x0, 0x20, 0xD9};
code BYTE IR_KEY_TBL[] =
{
NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, CLOCK_KEY, NO_KEY, NO_KEY,
VOLUME_UP_KEY, NEXT_KEY, NO_KEY, NO_KEY, VOLUME_DOWN_KEY, PLAYPAUSE_KEY, NO_KEY, NO_KEY, NO_KEY, IPOD_OFF_KEY,
NO_KEY, NO_KEY, NO_KEY, POWER_KEY, NO_KEY, NO_KEY, NO_KEY, PREVIOUS_KEY, NO_KEY, NO_KEY,
NO_KEY, KEY_MUTE, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY,
NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY,
NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY,
NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY,
NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY,
NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY, NO_KEY,
NO_KEY, NO_KEY, Source_Select
};
void KEY_Proc(void)
{
unsigned char Send_Count;
if((Panel_KeyAct == 1 ) || (IR_KeyAct == 1))
{
if(IR_KeyAct == 1 )
{
Current_Key = IR_KEY_TBL[Remote_Key];
IR_KeyAct = 0;
}
else if(Panel_KeyAct == 1)
{
Current_Key = Panel_Key;
Panel_KeyAct = 0;
}
if(Current_Key == POWER_KEY)
{
Need_Button_up = 0;
Power_Proc();
}
else if(POWER_Status == 1)
{
Need_Button_up = 0;
switch(Current_Key)
{
case VOLUME_UP_KEY:
//调整音量时解除静音
// MUTE_DETECT1 = 1;
MUTE_DETECT2 = 1;//写1准备读
if((AV_MUTE == 1)&&(MUTE_DETECT2 != 0)/*&&(MUTE_DETECT1 != 0)*/)
{
AV_MUTE = 0;
mute_flag =(unsigned char)AV_MUTE;
display_mute(lcd_unmute);
}
else{
if(Current_Volume < Volume_Max)
{
Current_Volume++;
// DelayX1ms(200);//improve esd
Volume_Tune(Current_Volume);
Volume_Need_Record = 1;
//显示音量进度条
switch(Current_Volume / 5)
{
case 0:
break;
case 1:
display_1bar();
break;
case 2:
display_2bar();
break;
case 3:
display_3bar();
break;
case 4:
display_4bar();
break;
case 5:
display_5bar();
break;
case 6:
display_6bar();
break;
case 7:
display_7bar();
break;
case 8:
display_8bar();
break;
case 9:
display_9bar();
break;
case 10:
display_10bar();
break;
default:
break;
}
//显示音量数码值
display_68(Current_Volume % 10 );
display_58(Current_Volume / 10);
}
}
break;
case VOLUME_DOWN_KEY:
//调整音量时解除静音
// MUTE_DETECT1 = 1;
MUTE_DETECT2 = 1;//写1准备读
if((AV_MUTE == 1)&&(MUTE_DETECT2 != 0)/*&&(MUTE_DETECT1 != 0)*/)
{
AV_MUTE = 0;
mute_flag =(unsigned char)AV_MUTE;
display_mute(lcd_unmute);
}
else{
if(Current_Volume > Volume_Min)
{
Volume_Need_Record = 1;
Current_Volume--;
// DelayX1ms(200);//improve esd
Volume_Tune(Current_Volume);
//显示音量进度条
switch(Current_Volume / 5)
{
case 0:
display_0bar();
break;
case 1:
display_1bar();
break;
case 2:
display_2bar();
break;
case 3:
display_3bar();
break;
case 4:
display_4bar();
break;
case 5:
display_5bar();
break;
case 6:
display_6bar();
break;
case 7:
display_7bar();
break;
case 8:
display_8bar();
break;
case 9:
display_9bar();
break;
case 10:
display_10bar();
break;
default:
break;
}
//显示音量数码值
display_68(Current_Volume % 10 );
display_58(Current_Volume / 10);
}
}
break;
case KEY_MUTE:
AV_MUTE = ~AV_MUTE;
mute_flag =(unsigned char)AV_MUTE;
if(AV_MUTE == 1)
display_mute(lcd_mute);
else
display_mute(lcd_unmute);
break;
case Source_Select:
Channel_Select++;
if (Channel_Select >= 3)
Channel_Select = 0;
if (Channel_Select == 0)
{
Volume_Tune(0);
DelayX1ms(255);
C4052_A = 1;
C4052_B = 0;
display_aux2(); //显示
P1_6 = 0;
P3_3 = 1;
P1_7 = 1;
}
else if (Channel_Select == 1)
{
Volume_Tune(0);
DelayX1ms(255);
C4052_A = 0;
C4052_B = 1;
display_main();//显示
P3_3 = 0;
P1_6 = 1;
P1_7 = 1;
}
else if (Channel_Select == 2)
{
Volume_Tune(0);
DelayX1ms(255);
C4052_A = 1;
C4052_B = 1;
display_aux1();//显示
P1_7 = 0;
P1_6 = 1;
P3_3 = 1;
}
Volume_Tune(Current_Volume);
break;
case IPOD_OFF_KEY:
if (Channel_Select == 1)
{
Keypointer = POWER_OFF_TBL;
SendKeyToiPod();
}
break;
case PLAYPAUSE_KEY:
if (Channel_Select == 1)
{
Keypointer = PLAYPAUSE_TBL;
SendKeyToiPod();
}
break;
case PREVIOUS_KEY:
if (Channel_Select == 1)
{
if(fb_key_flag == 1)
{
Need_Button_up = 1;
for(Send_Count = 0; Send_Count < 3; Send_Count++)
{
Keypointer = PREVIOUS_KEY_TBL;
SendKeyToiPod();
}
fb_key_flag = 0;
}
else
{
Keypointer = PREVIOUS_KEY_TBL;
SendKeyToiPod();
}
}
break;
case NEXT_KEY:
if (Channel_Select == 1)
{ if(ff_key_flag == 1)
{
Need_Button_up = 1;
for(Send_Count = 0; Send_Count < 3; Send_Count++)
{
Keypointer = NEXT_KEY_TBL;
SendKeyToiPod();
}
ff_key_flag = 0;
}
else
{
Keypointer = NEXT_KEY_TBL;
SendKeyToiPod();
}
}
break;
/* case FF_KEY:
if (Channel_Select == 1)
{
Need_Button_up = 1;
for(Send_Count = 0; Send_Count < 3; Send_Count++)
{
Keypointer = NEXT_KEY_TBL;
SendKeyToiPod();
}
}
break;
case FB_KEY:
if (Channel_Select == 1)
{
Need_Button_up = 1;
for(Send_Count = 0; Send_Count < 3; Send_Count++)
{
Keypointer = PREVIOUS_KEY_TBL;
SendKeyToiPod();
}
}
break;
*/
case BUTTON_UP_KEY:
if (Channel_Select == 1)
{
Keypointer = KeyBound_TBL;
SendKeyToiPod();
Need_Button_up = 0;
}
break;
default:
break;
}
}
//add ir clock
else if(POWER_Status == 0)
{
if(Current_Key == CLOCK_KEY)
{
clock_flag = 1;
h = hour;
m = minute;
}
while(clock_flag)
{ /*
minute = get_pcf8563(0x03) & 0x7f;//分
minute = (minute >> 4) * 10 + (minute & 0x0f);
hour = get_pcf8563(0x04) & 0x3f;//时
hour = (hour >> 4) * 10 + (hour & 0x0f);
if(hour >= 13) //12小时制调整
hour = hour - 12;
if(hour == 0)
hour = 12;
h = hour;
m = minute;
*/
//set_pcf8563(0x02,0); //清零秒,()
//对时闪烁
if((flash_counter > 0 ) && (flash_counter < 280))
{
display_18(h / 10);
display_28(h % 10);
display_38(m / 10);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -