📄 main.c
字号:
#include <macros.h>
#include <iom163.h>
#include <eeprom.h>
#include "..\bu2624\bu2624.h"
#include "..\main.h"
#include "..\key.h"
#include "..\uicc_def.h"
#include "..\io.h"
#include "..\key_lut.h"
#define SLEEP_TIME_TAG 30
#define SLEEP_MAX_CNT 4
extern NV_SETTINGS gps;
extern unsigned int info;
extern unsigned char amfm_flag;
unsigned char display_type=0,g_avtv;
extern unsigned char radio_is_muted, rds_display_type;
extern unsigned int g_ui_timing_cnt;
unsigned char led_val=0;
extern unsigned int g_vfd_grid_buffer[];
//unsigned char display_default_type = 0;
unsigned char tick_flag=0;
unsigned int key_buff=0xffff;
unsigned char uicc_code,last_key;
unsigned int dvd_key=0xffff;
unsigned char g_ui_tmp_msg_cnt=0;
extern unsigned char repeat,muted;
extern unsigned char Mchvol,Bassvol,Treblevol,Balanceval,Loudnessval;
extern unsigned char Cchvol,SWchvol,Schvol;
extern unsigned char is_autosearching;
unsigned char work_mode=0,work_mode1;
extern unsigned char *err_msg;
extern const UI_KEY_MAP key_map[];
unsigned char get_uicc_key(unsigned int key)
{
unsigned char i,j;
for(i=0;i<MAX_KEY_CNT;i++)
if(key_map[i].input_key == key)
{
return key_map[i].uicc_key;
}
return 0xff;
}
void DEC_power(unsigned char val)
{
if(val)
led_val |= 0x10;
else
led_val &= 0x0f;
VFD_LL_RefreshLED(led_val);
}
void Set_AVTV(void)
{
if(g_avtv)
Set_TV();
else
Set_AV();
}
void ui_input_handler(void)
{
unsigned int tmp;
if(work_mode == POWER_OFF_MODE)
{
if(uicc_code== UICC_POWER)
{
g_avtv = 0;
Set_AV();
work_mode = work_mode1;
work_mode_convert();
led_val &= 0x1e;
// delay_ms(100);
// muted = 0;
//MCU_mute();
}
else
{
#ifdef CLOCK_STANDBY
clock_operator();
#endif
};
}
else
{
switch(uicc_code)
{
case UICC_POWER:
#ifndef TEST_KEY
g_ui_timing_cnt = 0;
work_mode1=work_mode;
work_mode = POWER_OFF_MODE;
work_mode_convert();
muted = 1;
MCU_mute();
#endif
break;
case UICC_WORK_MODE:
work_mode++;
#ifdef AV3_EXIST
if(work_mode >4)
#else
#ifdef NO_AV2
if(work_mode>2)
#else
if(work_mode>3)
#endif
#endif
work_mode = 0;
work_mode_convert();
break;
/*
case UICC_DVD:
if(work_mode!=DVD_MODE)
{
work_mode = DVD_MODE;
work_mode_convert();
};
break;
case UICC_AV1:
if(work_mode!=AV1_MODE)
{
work_mode = AV1_MODE;
work_mode_convert();
};
break;
case UICC_AV2:
if(work_mode!=AV2_MODE)
{
work_mode = AV2_MODE;
work_mode_convert();
}
break;
case UICC_AV3:
if(work_mode!=AV3_MODE)
{
work_mode = AV3_MODE;
work_mode_convert();
};
break;
case UICC_AM:
EEPROMwrite((int)&(gps.ps_amfm_flag),1);
if(work_mode!=TUNER_MODE)
{
work_mode = TUNER_MODE;
work_mode_convert();
}
else
{
if(!amfm_flag)
work_mode_convert();
}
break;
case UICC_FM:
EEPROMwrite((int)&(gps.ps_amfm_flag),0);
if(work_mode!=TUNER_MODE)
{
work_mode = TUNER_MODE;
work_mode_convert();
}
else
{
if(amfm_flag)
work_mode_convert();
}
break;
*/
case UICC_VOLUME_UP:
g_ui_tmp_msg_cnt = 20;
switch(display_type)
{
case DISPLAY_VOL:
if(Mchvol < 60)
{
Mchvol++;
pt2320_vol();
};
dvd_key = D_VOLUME_KEY|Mchvol;
break;
#ifndef NO_SIX_CHANNEL_OUTPUT
case DISPLAY_SVOL:
if(Schvol<15)
{
Schvol++;
pt2320_Sch();
};
dvd_key = D_SURR_VOL_KEY|Schvol;
break;
case DISPLAY_SWVOL:
if(SWchvol<15)
{
SWchvol++;
pt2320_SWch();
};
dvd_key = D_SW_VOL_KEY|SWchvol;
break;
case DISPLAY_CVOL:
if(Cchvol<15)
{
Cchvol++;
pt2320_Cch();
};
dvd_key = D_CENT_VOL_KEY|Cchvol;
break;
#endif
#ifdef BASS_ONE_KEY
#ifndef BASS_TWO_KEY
case DISPLAY_BASS:
if(Bassvol < 14)
{
Bassvol++;
pt2320_bass();
};
dvd_key = D_BASS_KEY | Bassvol;
break;
#endif
#endif
#ifdef TREBLE_ONE_KEY
#ifndef TREBLE_TWO_KEY
case DISPLAY_TREBLE:
if(Treblevol < 14)
{
Treblevol++;
pt2320_treble();
};
dvd_key = D_TREBLE_KEY|Treblevol;
break;
#endif
#endif
#ifdef BALANCE_ONE_KEY
#ifndef BALANCE_TWO_KEY
case DISPLAY_BALANCE:
if(Balanceval <14)
{
Balanceval++;
set_balance();
}
dvd_key = D_BALANCE_KEY | Balanceval;
break;
#endif
#endif
default:
display_type = DISPLAY_VOL;
dvd_key = D_VOLUME_KEY|Mchvol;
break;
};
radio_is_muted = 0;
mute_radio();
break;
case UICC_VOLUME_DOWN:
g_ui_tmp_msg_cnt = 20;
switch(display_type)
{
case DISPLAY_VOL:
if(Mchvol > 0)
{
Mchvol--;
pt2320_vol();
};
dvd_key = D_VOLUME_KEY | Mchvol;
break;
#ifndef NO_SIX_CHANNEL_OUTPUT
case DISPLAY_SVOL:
if(Schvol>0)
{
Schvol--;
pt2320_Sch();
};
dvd_key = D_SURR_VOL_KEY|Schvol;
break;
case DISPLAY_SWVOL:
if(SWchvol>0)
{
SWchvol--;
pt2320_SWch();
};
dvd_key = D_SW_VOL_KEY|SWchvol;
break;
case DISPLAY_CVOL:
if(Cchvol>0)
{
Cchvol--;
pt2320_Cch();
};
dvd_key = D_CENT_VOL_KEY|Cchvol;
break;
#endif
#ifdef BASS_ONE_KEY
#ifndef BASS_TWO_KEY
case DISPLAY_BASS:
if(Bassvol > 0)
{
Bassvol--;
pt2320_bass();
};
dvd_key = D_BASS_KEY | Bassvol;
break;
#endif
#endif
#ifdef TREBLE_ONE_KEY
#ifndef TREBLE_TWO_KEY
case DISPLAY_TREBLE:
if(Treblevol > 0)
{
Treblevol--;
pt2320_treble();
};
dvd_key = D_TREBLE_KEY | Treblevol;
break;
#endif
#endif
#ifdef BALANCE_ONE_KEY
#ifndef BALANCE_TWO_KEY
case DISPLAY_BALANCE:
if(Balanceval >0)
{
Balanceval--;
set_balance();
};
dvd_key = D_BALANCE_KEY | Balanceval;
break;
#endif
#endif
default:
display_type = DISPLAY_VOL;
dvd_key = D_VOLUME_KEY | Mchvol;
}
radio_is_muted = 0;
mute_radio();
break;
#ifndef D_NO_6CHANNEL_OUTPUT
case UICC_VOLUME_MODE:
if(work_mode!=DVD_MODE)
break;
g_ui_tmp_msg_cnt = 20;
display_type++;
if((display_type<DISPLAY_VOL)||( display_type>DISPLAY_SWVOL))
display_type = DISPLAY_VOL;
tmp = D_AMODE_KEY|((display_type-5)<<6);
switch(display_type)
{
case DISPLAY_VOL:
dvd_key = tmp|Mchvol;
break;
case DISPLAY_SVOL:
dvd_key = tmp|Schvol;
break;
case DISPLAY_CVOL:
dvd_key = tmp|Cchvol;
break;
case DISPLAY_SWVOL:
dvd_key = tmp|SWchvol;
break;
};
break;
#endif
#ifdef BASS_ONE_KEY
case UICC_BASS:
g_ui_tmp_msg_cnt = 20;
display_type = DISPLAY_BASS;
dvd_key = D_BASS_KEY | Bassvol;
break;
#endif
#ifdef TREBLE_ONE_KEY
case UICC_TREBLE:
g_ui_tmp_msg_cnt = 20;
display_type = DISPLAY_TREBLE;
dvd_key = D_TREBLE_KEY | Treblevol;
break;
#endif
#ifdef BALANCE_ONE_KEY
case UICC_BALANCE:
g_ui_tmp_msg_cnt = 20;
display_type = DISPLAY_BALANCE;
dvd_key = D_BALANCE_KEY | Balanceval;
break;
#endif
/*
case UICC_LOUDNESS:
g_ui_tmp_msg_cnt = 20;
if(display_type!=DISPLAY_LOUDNESS)
{
display_type = DISPLAY_LOUDNESS;
}
else if(Loudnessval)
Loudnessval=0;
else
Loudnessval = 1;
#ifdef USE_PT2314
pt2314_loudness(Loudnessval);
#endif
dvd_key = D_LOUDNESS_KEY|Loudnessval;
break;
*/
#ifdef BASS_TWO_KEY
case UICC_BASS_UP:
if(dislay_type == DISPLAY_BASS)
{
if(Bassvol<14)
{
Bassvol++;
PT2320_bass();
}
}
else
{
display_type = DISPLAY_BASS;
}
dvd_key = D_BASS_KEY | Bassvol;
g_ui_tmp_msg_cnt = 20;
break;
case UICC_BASS_DOWN:
if(dislay_type == DISPLAY_BASS)
{
if(Bassvol>0)
{
Bassvol--;
PT2320_bass();
}
}
else
{
display_type = DISPLAY_BASS;
}
dvd_key = D_BASS_KEY | Bassvol;
g_ui_tmp_msg_cnt = 20;
break;
#endif //bass_two_key
#ifdef TREBLE_TWO_KEY
case UICC_TREBLE_UP:
if(dislay_type == DISPLAY_TREBLE)
{
if(Treblevol<140)
{
Treblevol++;
PT2320_treble();
}
}
else
{
display_type = DISPLAY_Treble;
}
dvd_key = D_TREBLE_KEY | Treble_vol;
g_ui_tmp_msg_cnt = 20;
break;
case UICC_TREBLE_DOWN:
if(dislay_type == DISPLAY_TREBLE)
{
if(Treblevol>0)
{
Treblevol--;
PT2320_treble();
}
}
else
{
display_type = DISPLAY_Treble;
}
dvd_key = D_TREBLE_KEY | Treble_vol;
g_ui_tmp_msg_cnt = 20;
break;
#endif //treble_two_key
case UICC_MUTE:
if(work_mode == DVD_MODE)
{
dvd_key = IRKC_MUTE;
break;
}
if(radio_is_muted)
radio_is_muted = 0;
else
radio_is_muted = 1;
mute_radio();
break;
case UICC_TIMING:
tmp =( g_ui_timing_cnt/(300*SLEEP_TIME_TAG)); //10m*60*5
if((g_ui_timing_cnt%(300*SLEEP_TIME_TAG))>2)
tmp++;
if(display_type== DISPLAY_TIMING )
{
tmp =(tmp + 1)%SLEEP_MAX_CNT;
g_ui_timing_cnt =(300*SLEEP_TIME_TAG)*tmp;
}
else
display_type = DISPLAY_TIMING;
g_ui_tmp_msg_cnt = 20;
tmp = g_ui_timing_cnt/300;
if(g_ui_timing_cnt%10>10)
tmp++;
dvd_key = D_TIMING_KEY|tmp;
//key_pressed_type = 4;
break;
case UICC_AVTV:
if(g_avtv)
{
g_avtv=0;
Set_AV();
}
else
{
g_avtv=1;
Set_TV();
}
break;
default:
if(g_ui_tmp_msg_cnt >1)
g_ui_tmp_msg_cnt = 1;
switch(work_mode)
{
case TUNER_MODE:
radio_action();
break;
//case :
// tape_operator();
// break;
//case AV2_MODE:
// break;
case DVD_MODE:
dvd_key = key_buff;
break;
}; //work_mode
}//uicc_code
} //if
last_key=uicc_code;
}
void main(void)
{
unsigned char i=0;
init_io();
init_timer();
spi_init() ;
SEI();
decoder_power_off();
g_avtv = 0;
Set_AV();
led_val = 00;
delay_ms(150);
decoder_power_off();
//SEI();
#ifndef TEST_KEY
work_mode = DVD_MODE;
#else
work_mode = AV1_MODE;
#endif
for(i=0;i<12;i++)
g_vfd_grid_buffer[i] = 0;
Set_String(" DVD");
ui_fp_update_handler();
delay_ms(200);
delay_ms(200);
ui_fp_update_handler();
delay_ms(300);
delay_ms(200);
work_mode_convert();
while(1)
{
if(tick_flag&TICK_20MS)
{
tick_flag &=(~TICK_20MS);
fp_key_scan2();
fp_vol_scan();
if(work_mode==TUNER_MODE)
{
if(is_autosearching) tuner_autosearch();
#ifdef SGJM_RDS
rds_handler();
#endif
}
}
if(tick_flag&TICK_200MS)
{
tick_flag &=(~TICK_200MS); //clear 200msflag
repeat++; //key repeat
if(key_buff!=0xffff)
{
#ifdef TEST_KEY
info = key_buff;
display_type = DISPLAY_KEY;
#endif
uicc_code = get_uicc_key(key_buff);
//key_buff = 0xffff;
if(uicc_code!=0xff)
{
ui_input_handler();
}
else
dvd_key = key_buff;
key_buff = 0xffff;
}
ui_fp_update_handler();
if(g_ui_tmp_msg_cnt)
{
g_ui_tmp_msg_cnt--;
if(!g_ui_tmp_msg_cnt)
{
#ifdef SGJM_RDS
display_type = rds_display_type;
#else
display_type = 0;
#endif
last_key = 0xff;
clear_vol_cnt();
};
}
if(g_ui_timing_cnt)
{
g_ui_timing_cnt--;
if(!g_ui_timing_cnt)
{
work_mode1= work_mode;
work_mode = POWER_OFF_MODE;
//work_mode1 = work_mode;
work_mode_convert();
//muted = 1;
//MCU_mute();
//delay_ms(200);
//decoder_power_off();
//delay_ms(200);
};
}
};
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -