📄 key.c
字号:
}
swtich(Standard)
{
case 0:
TV_total_turn=turn_pal_uhf2; /////有待定义参数
Fre_tab=0;
m_cStandard=S_PAL;
m_cChroma=S_PAL;
break;
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
}
SetSignalStd();
////写高频头
}
/**********************************************************************
自动搜查参数处理
**********************************************************************/
void auto_turn_set(void)
{ ////全频段搜查
if(!auto_turn)
{
CB_tvnum=0; ////从最低起点搜查
hand_turn = 1; ////在Tmier0和meun中清0
auto_turn = 0;
}
}
/**********************************************************************
自动搜查TV台
**********************************************************************/
void auto_turn_go(void)
{
CB_tvnum++;
if(CB_tvnum>TV_total_turn)
{
auto_turn = 0;
CB_tvnum = 0;
break;
}
////初始化Tmier0 /////搜查TV时时间较长,不可关OSD
////写高频头
////读状态
if(TV_found) ////在Tmier0和meun中清0
{
////保存频道
////台号加????
////OSD_show
}
}
/**********************************************************************
手动搜查TV台
**********************************************************************/
void hand_turn_up_go(void)
{
CB_tvnum++;
if(CB_tvnum>TV_total_turn)
{
hand_turn = 0;
CB_tvnum = 0;
break;
}
if(!TV_found) //// 搜查到有台,不动,没台时或继续搜查时才执行下面
{
////初始化Tmier0 //// 搜查TV时时间较长,不可关OSD
////写高频头
////读状态
}
if(TV_found) //// 应在主程序处理处清0
////OSD_show
}
/***********************************************************************
手动搜查参数处理(UP)
***********************************************************************/
void hand_turn_up_set(void)
{
if(!hand_turn) //// 判断是否已经在手动搜查
{
hand_turn = 1; //// 不是,置手动搜查已执行标志,在Tmier0和meun中清0
auto_turn = 0; //// 清自动搜查标志
switch(CB_Fre) //// 选择锁设定的频率段值 ////CB_Fre保存值
{
case 0: //// 高频段
CB_tvnum=0;
break; //// 从头开始搜查(高频段起始地址
case 1: //// 甚高频段
switch(m_cStandard) //// 判断所选择的信号制式
{
case S_PAL: //// 不同的制式,搜查的起点不同
CB_tvnum=turn_apl_vhf1; ////vhfl1/vhf2__vhfh1/vhfh2__uhf1/uhf2
break;
case S_PAL_N:
CB_tvnum=turn_pal_n_vhf1;
break;
case S_PAL_M:
CB_tvnum=turn_pal_m_vhf1;
break;
case S_NTSC:
CB_tvnum=turn_ntsc_vhf1;
break;
}
break;
case 2: //// 超高频
switch(m_cStandard)
{
case S_PAL:
CB_tvnum=turn_pal_uhf1;
break;
case S_PAL_N:
CB_tvnum=turn_pal_n_uhf1;
break;
case S_PAL_M:
CB_tvnum=turn_pal_m_uhf1;
break;
case S_NTSC:
CB_tvnum=turn_ntsc1_uhf1;
break;
}
break;
}
}
else
{
again_go = 1;
}
}
/***********************************************************************
加键处理程序
***********************************************************************/
void Key_upEvent(void)
{
if(power_control&&(hand_turn|auto_turn)) //// 待机状态下及审查TV时无效
break;
//初始化Tmier0
if(OSD_open) //// 如果菜单打开,则调节相应参数和设置
{
switch(Menu_OSD) //// 不同的菜单设置不同
{
case 0: //// 菜单1
switch(Menu_row) //// 不同的调节项,调节不同
{
case 0: //// 调节项1:亮度
bright++;
if(bright>adjust_max1)
{
bright=adjust_max1;
}
////写T112
////OSD_show
break;
case 1: //// 调节项2:对比度
comp++;
if(comp>adjust_num1)
{
comp=adjust_max1;
}
////写T112
////OSD_show
break;
case 2: //// 调节项3:色度
color++;
if(color>adjust_num1)
{
color=adjust_max1;
}
////写T112
////OSD_show
break;
case 3: //// 调节项4:色调
hue++;
if(hue>adjust_num2)
{
hue=adjust_max2;
}
////写T112
////OSD_show
break;
default:
break;
}
break;
case 1: //// 菜单2
switch(Menu_row)
{
case 0: //// 选台/用于排台、微调
TV_num++;
if(TV_num>TV_total) //// 注意,没定义
{
TV_num = 0;
}
////写高频头
////OSD_show //// 主要显示该调节参数
break;
case 1: //// 频段设置,用于搜查TV
CB_Fre++;
if(CB_Fre>2);
{
CB_Fre=0;
}
////OSD_show
break;
case 2: //// 微调
////读出当前台的台频DB_Fre=readEProm(TV_num)
DB_Fre+=small_turn_step;
////写高频头 //// 注意,当调节好时如等待菜单退出时,则保存该值
////OSD_show
break;
case 3:
hand_turn_up_set(); //// 设定手动搜查参数及开其搜查标志位
break;
case 4:
auto_turn_set(); //// 设定自动搜查参数及开其搜查标志位
break;
case 5:
felt_set(); //// 制式选择处理
break;
default:
break;
}
break;
case 2:
switch(Menu_row)
{
switch(Menu_row)
{
case 0:
left_right=~left_right;
if(left_right)
{
Dis_Mode=TOP_LEFT;
}
else
{
Dis_Mode=TOP_RIGHT;
}
///OSD_show
SET_Dismod();
break;
case 1:
top_down=~top_down;
if(top_down)
{
Dis_Mode=BOTTOM_LEFT;
}
else
{
Dis_Mode=BOTTOM_RIGHT;
}
///OSD_show
SET_Dismod();
break;
case 2:
auto_power=~auto_power;
break;
default:
break;
}
}
break;
case 3:
///退出OSD
break;
default:
break;
}
}
else
{
vol_num++;
if(vol_num>vol_max)
{
vol_num=vol_max;
}
////OSD_show
////控制音量
}
}
/***********************************************************************
菜单处理程序
***********************************************************************/
void MenuEvent(void)
{
if(power_control) //// 待机状态下无效
break;
else
{
power_key_unlock = 0; //// 非待机下清power/avt键锁态
atv_key_unlock = 0;
if(!meum_key_unlock) //// menu键在非锁态才有效
{
//初始化Tmier0
Menu_OSD++; //// 菜单界面选择及停止TV搜查
OSD_open = 1; //// OSD打开标志
if(source_gate==0) //// 判断锁选择的视频源
{ //// TV
if(Menu_OSD==1&&(hand_turn|auto_turn)) //// 当当前的是第二个菜单时,并且正在搜查TV
{
hand_turn = 0; //// 停止搜查TV
aotu_turn = 0;
TV_found = 0; //// 但是这里不保存该频道
Menu_OSD--; //// 返回原值
///OSD_show //// tingzi
}
else //// 否则,执行菜单切换
{
if(Menu_OSD>3) //// 包括空的有4个
{
Menu_OSD=0;
}
}
}
else //// AV1/AV2
{
if(Menu_OSD==1) //// 当选择了第二个菜单时跳到第三个菜单
{
Menu_OSD=2;
}
if(Menu_OSD>3)
{
Menu_OSD=0;
}
}
//显示相应的菜单 //// 显示相应的菜单,应线确定是否为菜单切换
}
if(~(key_data|0xf7)) //// 一直按线,设定在锁态
meum_key_unlock = 1;
else
meum_key_unlock = 0; //// 否则非锁
}
}
/***********************************************************************
AV_TV切换程序
***********************************************************************/
void TAvEvent(void)
{
if(power_control&&(hand_turn|auto_turn)) //// 待机状态下及审查TV时无效
{
break;
}
//初始化Tmier0 //// 重新设置Tmier0,有键动作
OSD_open = 0; //// 菜单开标志清0
power_key_unlock = 0; //// 清楚相应键锁态
meum_key_unlock = 0;
if(!atv_key_unlock) //// 在非锁态执行下面步骤
{
source_gate++; //// 通道循环加
if(source_gate>2) //// 最多3路通道
{
source_gate=0;
}
//“关屏” //// 首先关屏?,
//写T112选择相应的通道 //// 选择相应设置通道
//显示通道OSD //// 显示相应通道OSD(右上角)
//“开屏” //// 开屏
}
if(~(key_data|0xbf)) //// 判断键是否放开
atv_key_unlock = 1; //// 没有,锁住键
else
atv_key_unlock = 0; //// 有,放开键
}
/***********************************************************************
电源键处理程序
***********************************************************************/
void PowerEvent(void)
{ //// 待机,应初始化相应的参数,以便再开机初始化
//禁止Tmier0
OSD_open = 0; //// OSD没开
Menu_OSD = 0; //// 菜单回到0
meum_key_unlock = 0;
atv_key_unlock = 0;
hand_turn = 0; //// 手动搜查禁止
auto_turn = 0; //// 自动搜查禁止
if(!power_key_unlock) //// 该键是否锁住
{
power_control = ~power_control; //// 不是,控制电源
}
if(~(key_data|0xfe)) //// 再读该键是否还按下
power_key_unlock = 1; //// 是,锁住
else
power_key_unlock = 0; //// 不是,开锁
}
/***********************************************************************
键盘扫描程序
***********************************************************************/
void key_scan(void)
{
oldkey = key_data&0x7f; ////读键值
twdDelay1(1800); ////延时20ms,防振,时间应根据实际相应调整
oldkey = key_data&0x7f; ////再读值
if((oldkey=newkey) && (newkey!=0x7f)) ////两次读写值相等,并有键按下
{
switch(newkey)
{
case 0x7e:
PowerEvent();
break;
case 0x7d:
Key_upEvent();
break;
case 0x7b:
Key_downEvent();
break;
case 0x77:
MenuEvent();
break;
case 0x6f:
Ch_inEvent();
break;
case 0x5f:
Ch_deEvent();
break;
case 0x3f:
TAvEvent();
break;
default: break;
}
}
}
/************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -