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

📄 key.c

📁 LCDTV的source code,含周邊ic的driver code ,scaler ,
💻 C
字号:
/*******************************************************************************
  KEY.C
  Copyright (c) SmartASIC, Inc. All rights reserved.
*******************************************************************************/
#include <MTV230.H>
#include <DEFINE.H>
#define CHANNEL0 0x01
#define CHANNEL1 0x02
/*==============================================================================

==============================================================================*/
unsigned char Key_Scan(unsigned char channel) {

  unsigned char Previous=0x00, Now=0xff;

  ADC=0x80|channel;

  do{
    Previous=ADC;
    DelayX1ms(3);
    Now=ADC;
    }while(Previous!=Now);

  return Now&0x3f;

  }


/*==============================================================================

==============================================================================*/
void Get_Key(void) {

  unsigned KeyValue;

  bkey_code_now=0;
  
  //kkkkkkkkkkkkkkkkkkkkkkk Keyboard Detect kkkkkkkkkkkkkkkkkkkkkkkkk//
  KeyValue=Key_Scan(CHANNEL0);
  if(KeyValue<4)
    bsw6=1;
  if((KeyValue<24)&&(KeyValue>16))
    bsw5=1;
  if((KeyValue<36)&&(KeyValue>28))
    bsw4=1;

  KeyValue=Key_Scan(CHANNEL1);
  if(KeyValue<4)
    bsw3=1;
  if((KeyValue<24)&&(KeyValue>16))
    bsw2=1;
  if((KeyValue<36)&&(KeyValue>28))
    bsw1=1;

  bsw7=(!SOFT_POWER);

  //---------------key fast detection------------//
  if(bkey_code_now==bkey_code_repeat) {//same key pressed
    if((bkey_code_now==KEY_VOL_MINUS)||(bkey_code_now==KEY_VOL_PLUS)) {
      if(!bkeyfast) {
        KeyRepeat++;
        if(KeyRepeat>80) {
          bkeyfast=1;
          }
        }
      }
    }
  else {
    bkey_code_repeat=bkey_code_now;
    KeyRepeat=bkeyfast=0;
    }

  //---------------all key released---------------//
  if(bkey_code_now==0) {
    bkey_code_pre=bkey_code_now=bkey_code_repeat=KeyPadTimer=0;
    }

  //---------------at least one key pressed-------//
  else {
    Timer0Counter=Timer0Second=0;//clear osd off timer
    if(bkey_code_now==bkey_code_pre) {//same key pressed
      bkey_code_now=0;
      }
    else {//different key pressed
      bkey_code_pre=bkey_code_now;
      KeyPadTimer=0;
      }
    }

  //rrrrrrrrrrrrrrrrrrrrrrrr Remote Detect rrrrrrrrrrrrrrrrrrrrrrrrrr//
  if(Remote_Code.ir_rdy==1) {
    RemoteMapping();
    Remote_Code.ir_rdy=0;
    EX0=1;
    }

  }


/*==============================================================================

==============================================================================*/
void RemoteMapping(void) {

  if((Remote_Code.ir_sys==REMOTE_SYS1)||(Remote_Code.ir_sys==REMOTE_SYS2)) {
    SysNow=Remote_Code.ir_sys;    
    if(SysPre!=SysNow) {//different remote pressed
      SysPre=SysNow;
      Remote=Remote_Code.ir_cmd;
      switch(Remote) {
        case(REMOTE_STDBY):
          bkey_code_now=KEY_POWER; 
        break;
        case(REMOTE_MENU):
          if((Page==0)||(Page==100))
            bkey_code_now=KEY_MENU;          
        break;
        case(REMOTE_SELECT):
          if(!((Page==0)||(Page==100)||(bhotosd)))
            bkey_code_now=KEY_MENU;
        break;
        case(REMOTE_UP):
          if(!((Page==0)||(Page==100)))//disable remote 4-directions
            bkey_code_now=KEY_CH_PLUS;
        break;
        case(REMOTE_DOWN):
          if(!((Page==0)||(Page==100)))//disable remote 4-directions
            bkey_code_now=KEY_CH_MINUS;
        break;
        case(REMOTE_LEFT):
          if(badjust)
            bkey_code_now=KEY_VOL_MINUS;
        break;
        case(REMOTE_RIGHT):
          if(badjust)
            bkey_code_now=KEY_VOL_PLUS;
        break;
        case(REMOTE_OPT4):
          bkey_code_now=KEY_SOURCE;
        break;
        case(REMOTE_EXIT):
          Page=Item=0;
          OSD_Show(0,0,0,0,0);
        break;
        default:
          bkey_code_now=KEY_NULL;
        break;
        }
      }
    else {//same remote pressed
      //SysPre=SysNow;
      Remote=Remote_Code.ir_cmd;
      if((Remote==REMOTE_VOLUP)||(Remote==REMOTE_VOLDN)||
         (((Remote==REMOTE_LEFT)||(Remote==REMOTE_RIGHT))&&badjust)) {
        SysPre=REMOTE_NULL;
        }
      else {
        Remote=REMOTE_NULL;
        }
      }
    }
  else {
    SysPre=SysNow;
    Remote=REMOTE_NULL;      
    }

  }

⌨️ 快捷键说明

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