📄 key.c
字号:
/**************************************************************************************************************************************
key_scan
***************************************************************************************************************************************/
#include "reg51.h"
#include "math.h"
#include "common.h"
#include "struct.h"
#include "system.h"
#include "twowire.h"
#include "T101_Util.h"
#include "TW10xReg.h"
#include "turn.h"
#include "key.h"
#define uchar uCHAR
#define key_data P2
#define adjust_max1 63
#define adjust_max2 31
#define vol_max 63
extern bit power_key_unlock; ////power/menu/atv键锁态标志
extern bit meum_key_unlock;
extern bit atv_key_unlock;
extern bit OSD_open; ////菜单栏打开标志
extern bit TV_found; ////找到台标志
extern bit again_go; ////继续找到台标志
extern bit again_go1; ////继续找到台标志
extern bit power_control; ////待机控制
extern bit hand_turn; ////手动搜查TV标志
extern bit hand_turn1; ////手动搜查TV标志
extern bit auto_turn; ////自动搜查TV标志
extern bit left_right; ////镜象标志1
extern bit top_down; ////镜象标志2
extern bit auto_power; ////自动关机标志
extern uchar Dis_Mode;
extern uchar TV_num;
extern uchar m_cStandard;
uchar oldkey;
uchar newkey;
uchar source_gate; ////信号通道变量
uchar Menu_OSD; ////菜单选择变量
uchar Menu_row; ////对应菜单调节项变量
uchar vol_num; ////音量变量
uchar TV_total; ////总有效节目数
uchar TV_total_turn; ////搜查节目总数
uchar bright;
uchar comp;
uchar color;
uchar hue;
uchar CB_Fre; ////频段变量
uWORD DB_Fre; ////频点变量
uchar Fre_tab; ////搜查频率表变量
uchar CB_tvnum; ////搜查频点起始值
uchar Standard; /////信号切换
/********************************************************************************************************************************************************
*********************************************************************************************************************************************************
键盘处理程序
*********************************************************************************************************************************************************
********************************************************************************************************************************************************/
/**********************************************************************
***********************************************************************/
void Ch_deEvent(void)
{
if((source_gate==0)&&(OSD_open==0))
{
if(TV_num==0)
{
TV_num=TV_total;
}
else
{
TV_num--;
}
////OSD_show
////读出节目
////写高频头
}
else if(OSD_open==1)
{
if(Menu_row==0)
{
switch(Menu_OSD)
{
case 0:
Menu_row=4;
///osd_show
break;
case 1:
Menu_row=5;
///osd_show
break;
case 2:
Menu_row=3;
///osd_row
break;
}
}
else
{
Menu_row--;
}
}
}
/**********************************************************************
***********************************************************************/
void Ch_inEvent(void)
{
if((source_gate==0)&&(OSD_open==0))
{
TV_num++;
if(TV_num>TV_total)
TV_num=0;
////OSD_show
////读出节目
////写高频头
}
else if(OSD_open==1)
{
Menu_row++;
switch(Menu_OSD)
{
case 0:
if(Menu_row>4)
Menu_row=0;
///osd_show
break;
case 1:
if(Menu_row>5)
Menu_row=0;
///osd_show
break;
case 2:
if(Menu_row>3)
Menu_row=0;
///osd_row
break;
}
}
}
/**********************************************************************
手动搜查TV台
**********************************************************************/
void hand_turn_down_go(void)
{
CB_tvnum--;
if(CB_tvnum==0)
{
hand_turn1 = 0;
CB_tvnum = 0;
return;
}
if(!TV_found) //// 搜查到有台,不动,没台时或继续搜查时才执行下面
{
TV_found=1; ////tiaoshi
////初始化Tmier0 //// 搜查TV时时间较长,不可关OSD
////写高频头
////读状态
}
if(TV_found) //// 应在主程序处理处清0
{
TV_found=0; ///tiaoshi
}
////OSD_show
}
/******************************************************************************************************
手动搜查参数处理(down)
******************************************************************************************************/
void hand_turn_down_set(void)
{
if(!hand_turn1) //// 判断是否已经在手动搜查
{
hand_turn1 = 1; //// 不是,置手动搜查已执行标志,在Tmier0和meun中清0
auto_turn = 0; //// 清自动搜查标志
switch(CB_Fre) //// 选择锁设定的频率段值 ////CB_Fre保存值
{
case 0:
switch(m_cStandard) //// 判断所选择的信号制式
{
case S_PAL: //// 不同的制式,搜查的起点不同
CB_tvnum=turn_pal_vhfl2;
break;
case S_PAL_N:
CB_tvnum=turn_pal_n_vhfl2;
break;
case S_PAL_M:
CB_tvnum=turn_pal_m_vhfl2;
break;
case S_NTSC:
CB_tvnum=turn_ntsc_vhfl2;
break;
}
break; //// 高频段
case 1: //// 甚高频段
switch(m_cStandard) //// 判断所选择的信号制式
{
case S_PAL: //// 不同的制式,搜查的起点不同
CB_tvnum=turn_pal_vhfh2;
break;
case S_PAL_N:
CB_tvnum=turn_pal_n_vhfh2;
break;
case S_PAL_M:
CB_tvnum=turn_pal_m_vhfh2;
break;
case S_NTSC:
CB_tvnum=turn_ntsc_vhfh2;
break;
}
break;
case 2: //// 超高频
switch(m_cStandard) //// 判断所选择的信号制式
{
case S_PAL: //// 不同的制式,搜查的起点不同
CB_tvnum=turn_pal_uhf2;
break;
case S_PAL_N:
CB_tvnum=turn_pal_n_uhf2;
break;
case S_PAL_M:
CB_tvnum=turn_pal_m_uhf2;
break;
case S_NTSC:
CB_tvnum=turn_ntsc_uhf2;
break;
}
break;
}
}
else
{
again_go1 = 1;
}
}
/******************************************************************************************************
减键处理程序
******************************************************************************************************/
void Key_downEvent(void)
{
if(power_control&&(hand_turn|auto_turn)) //// 待机状态下及审查TV时无效
return;
//初始化Tmier0
if(OSD_open) //// 如果菜单打开,则调节相应参数和设置
{
switch(Menu_OSD) //// 不同的菜单设置不同
{
case 0: //// 菜单1
switch(Menu_row) //// 不同的调节项,调节不同
{
case 0: //// 调节项1:亮度
if(bright<1)
{
bright=0;
}
else
{
bright--;
}
////写T112
////OSD_show
break;
case 1: //// 调节项2:对比度
if(comp<1)
{
comp=0;
}
else
{
comp--;
}
////写T112
////OSD_show
break;
case 2: //// 调节项3:色度
if(color<1)
{
color=0;
}
else
{
color--;
}
////写T112
////OSD_show
break;
case 3: //// 调节项4:色调
if(hue<1)
{
hue=0;
}
else
{
hue--;
}
////写T112
////OSD_show
break;
default:
break;
}
break;
case 1: //// 菜单2
switch(Menu_row)
{
case 0: //// 选台/用于排台、微调
if(TV_num==0) //// 注意,没定义
{
TV_num =TV_total;
}
else
{
TV_num--;
}
////写高频头
////OSD_show //// 主要显示该调节参数
break;
case 1: //// 频段设置,用于搜查TV
if(CB_Fre==0)
{
CB_Fre=2;
}
else
{
CB_Fre--;
}
////OSD_show
break;
case 2: //// 微调
////读出当前台的台频DB_Fre=readEProm(TV_num)
DB_Fre-=small_turn_step;
////写高频头 //// 注意,当调节好时如等待菜单退出时,则保存该值
////OSD_show
break;
case 3:
hand_turn_down_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
{
if(vol_num==0)
{
vol_num=0;
}
else
{
vol_num--;
}
////OSD_show
////控制音量
}
}
/**********************************************************************
制式设定
**********************************************************************/
void felt_set(void)
{
Standard++;
if(Standard>6)
{
Standard=6;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -