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

📄 key_unit.c

📁 SDU的字库
💻 C
📖 第 1 页 / 共 2 页
字号:







 /*********************************************************************************************************
** 函数名称: msb to lsb
** 功能描述: 
********************************************************************************************************/ 

uchar  msb_turn_lsb( uchar ml )
{
  mtol_a = ml;
  b0 = a7;
  b1 = a6;
  b2 = a5;
  b3 = a4;
  b4 = a3;
  b5 = a2;
  b6 = a1;
  b7 = a0;
  return( mtol_b );    
}
           

 
/*********************************************************************************************************
** 函数名称: read_key
** 功能描述: 读取楼层键值 
********************************************************************************************************/
/*
void read_key()
{
   uchar key_L;                        
   uchar key_H;
 
   MC573_5 = 1;
   MC573_6 = 1;
   MC573_7 = 1;

   MC573_5 = 0;
   _nop_();
   _nop_();
   _nop_();
   key_L   = DATA_PORT;                // 读键低8位

   MC573_5 = 1;
   MC573_6 = 1;
   MC573_7 = 1;

   MC573_6 = 0;
   _nop_();
   _nop_();
   _nop_();
   key_H   = DATA_PORT;                // 读键高8位
 
   key_L   = ~key_L;
   key_H   = ~key_H;

   key_code =  msb_turn_lsb( key_L );                  // 将6位键码存入key_code中
   key_ctrl =  msb_turn_lsb( key_H );

}
*/

void read_key()
{
   uchar key_L;                        
   uchar key_H;
 
   MC573_5 = 1;
   MC573_6 = 1;
   MC573_7 = 1;

   MC573_5 = 0;
   _nop_();
   _nop_();
   _nop_();
   key_L   = DATA_PORT;                // 读键低8位

   MC573_5 = 1;
   MC573_6 = 1;
   MC573_7 = 1;

   MC573_6 = 0;
   _nop_();
   _nop_();
   _nop_();
   key_H   = DATA_PORT;                // 读键高8位
 
   key_L   = ~key_L;
   key_H   = ~key_H;

   key_L   =  msb_turn_lsb( key_L );   // 交换高底位
   key_H   =  msb_turn_lsb( key_H );


   key_code =  key_L;                  // 将6位键码存入key_code中
   key_code &= 0x3f;
 
   key_ctrl =  key_H & 0x03;
   key_ctrl <<= 2;
   key_ctrl |= key_L>>6;               // 将4位特殊码存入key_ctrl中
                                       // 判有无键输入
   
   if(key_code==0 && key_ctrl==0)      // 无键
    {
       ;
    }                                              // brush dis buffer sw ctrl
   if(key_code_temp_L == key_code && key_code_temp_H == key_ctrl)   
    {                                  // 有键但键码未变
       floor_dis_flash_sw = 0;
    }
   else                                // 有键且键码已变
    {       
      key_code_temp_H = key_ctrl;
      key_code_temp_L = key_code;
	  
	  floor_dis_flash_sw = 1;  
    }
    
}


 
/*********************************************************************************************************
** 函数名称: key_code_doing
** 功能描述: 将楼层键值key_code转换成定义的楼层值floor_h,floor_l; 
********************************************************************************************************/

void key_code_doing( uchar c_to_f )
{
   
  switch( c_to_f )
  {
   case  0  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case  1  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case  2  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case  3  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case  4  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case  5  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case  6  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case  7  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case  8  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case  9  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;

   case 10  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 11  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 12  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 13  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 14  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 15  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 16  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 17  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 18  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 19  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;

   case 20  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 21  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 22  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 23  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 24  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 25  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 26  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 27  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 28  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 29  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;

   case 30  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 31  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 32  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 33  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 34  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 35  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 36  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 37  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 38  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 39  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;

   case 40  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 41  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 42  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 43  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 44  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 45  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 46  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 47  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 48  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 49  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;

   case 50  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 51  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 52  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 53  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 54  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 55  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 56  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 57  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 58  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 59  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;

   case 60  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 61  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 62  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 63  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;
   case 64  :  floor_l = floor_tab[c_to_f*2+1]; floor_h = floor_tab[c_to_f*2]; break;

   default :  floor_l = 0x1;  floor_l = 0x1;   break;
   //default :  floor_l = 0xff; floor_h = 0xff;  break;  // send don't dis data
  }
} 
/*********************************************************************************************************
** 函数名称: key_ctrl_doing
** 功能描述: 将楼层键值key_ctrl转换成特殊信息:上,下箭头,始停,特殊服务 
********************************************************************************************************/

void key_ctrl_doing()
{
   switch( key_ctrl)
   {
    case  0 :  { arrow_roll_flag = 0;  clr_sbwhz_cn();stop(); } break;
    case  8 :  { arrow_roll_flag = 0;  sbwhz_cn(); stop(); }    break;
  
  	//if ( key_ctrl_0 == 0 && key_ctrl_2 == 1 ) { stop(); }
	//if ( key_ctrl_1 == 0 && key_ctrl_2 == 1 ) { stop(); }

	case  1 :  { clr_sbwhz_cn();arrow_roll_flag = 0; up_arrow_stop();   } break; //静态,写一次即可
	case  2 :  { clr_sbwhz_cn();arrow_roll_flag = 0; down_arrow_stop(); } break;

	case  5 :  { clr_sbwhz_cn();arrow_roll_flag = 1; arrow_type = 0;} break; //arrow_type=0,it is up arrow                  //动态,需不停刷新故将其

⌨️ 快捷键说明

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