?? key_c.c
字號:
#include "key_h.h"
extern void Send_order (uchar CMD_fun, uchar Cam_add, uchar Speed_data);
//uchar code PELCOD_auto [ ] = {0xff, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00};
//uchar code PELCOD_stop [ ] = {0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
/*=============================
== 函數(shù)名稱:delayNOP
== 函數(shù)功能:delay 1.085us*5=5.425us
==入口參數(shù):
==出口參數(shù): delayNOP( )
==============================*/
void delay_us (uchar i)
{
while (--i);
return ;
}
/*=============================
== 函數(shù)名稱:delay_ms()
== 函數(shù)功能:ms delay process.
==入口參數(shù): INT16U time
==出口參數(shù):
==============================*/
void delay_ms (uchar time)
{
uint Temptime = time * 2;
while (Temptime != 0)
{
delay_us(236);
Temptime--;
}
}
//=================================
//Scan A/D key and get Key A/D value
//=================================
uchar KeyScan (void)
{
uchar ADC_Temp = 0;
ADCCTRL = 0;
delay_ms (10);
delay_us(100);
ADCCTRL = 0x81; //open ADC function & select AD0 enable
delay_us(100);
if ((ADCDATA & 0x3f) < 0x3f)
{
ADCCTRL = 0;
delay_ms(10);
ADCCTRL = 0x81; //open ADC function & select AD0 enable
delay_us(100);
if ((ADCDATA & 0x3f) < 0x3f)
{
_nop_ ( );
ADC_Temp = (ADCDATA & 0x3f);
ADCCTRL = 0;
_nop_ ( );
return ADC_Temp;
}
else
{
ADCCTRL = 0;
return 0;
}
}
else
{
ADCCTRL = 0;
delay_us(100);
ADCCTRL = 0x82; //open ADC function & select AD1 enable
delay_us (100);
if ((ADCDATA & 0x3f) < 0x3f)
{
ADCCTRL = 0;
delay_ms (10);
ADCCTRL = 0x82; //open ADC function & select AD0 enable
delay_us (100);
if ((ADCDATA & 0x3f) < 0x3f)
{
ADC_Temp = ((ADCDATA & 0x3f) | 0x40);
ADCCTRL = 0;
return ADC_Temp;
}
else
{
ADCCTRL = 0;
return 0;
}
}
ADCCTRL = 0;
return 0;
}
}
//=================================
// convert A/D value convert to int value
//=================================
void KeyValue (void)
{
uchar TempValue;
TempValue = KeyScan ( );
if (!(TempValue & 0xc0))
{
TempValue = (TempValue & 0x3f);
if (TempValue == 0)
{
Key_value = 0xff;
Key_value_back = 0xff;
return;
}
else if (TempValue < 7)
{
Key_value = 1;
return;
}
else if (TempValue < 12)
{
Key_value = 2;
return;
}
else if (TempValue < 17)
{
Key_value = 3;
return;
}
else if (TempValue < 22)
{
Key_value = 4;
return;
}
else if (TempValue < 27)
{
Key_value = 5;
return;
}
else if (TempValue < 32)
{
Key_value = 6;
return;
}
else if (TempValue < 37)
{
Key_value = 7;
return;
}
else if (TempValue < 42)
{
Key_value = 8;
return;
}
else if (TempValue < 47)
{
Key_value = 9;
return;
}
else if (TempValue < 55)
{
Key_value = 10;
return;
}
else
{
Key_value = 0xff;
Key_value_back = 0xff;
return;
}
}
else if ((TempValue & 0xc0) == 0x40)
{
TempValue &= 0x3f;
if (TempValue == 0)
{
Key_value = 0xff;
Key_value_back = 0xff;
return;
}
else if (TempValue < 7)
{
Key_value = 11;
return;
}
else if (TempValue < 12)
{
Key_value = 12;
return;
}
else if (TempValue < 17)
{
Key_value = 13;
return;
}
else if (TempValue < 22)
{
Key_value = 14;
return;
}
else if (TempValue < 27)
{
Key_value = 15;
return;
}
else if (TempValue < 32)
{
Key_value = 16;
return;
}
else if (TempValue < 37)
{
Key_value = 17;
return;
}
else if (TempValue < 42)
{
Key_value = 18;
return;
}
else if (TempValue < 47)
{
Key_value = 19;
return;
}
else if (TempValue < 55)
{
Key_value = 20;
return;
}
else
Key_value = 0xff;
Key_value_back = 0xff;
return;
}
else
Key_value = 0xff;
Key_value_back = 0xff;
}
//===============================
//pannel key process function
//===============================
void KeyProcess ( )
{
if (Key_value_back == Key_value)
{
/* if ((Key_value == kLEFT)||(Key_value == kRIGHT)||\
(Key_value == kUP) ||(Key_value == kDOWN))
goto KEY_PROCESS;
else
*/
return;
}
else
{
//KEY_PROCESS:
Key_value_back = Key_value;
switch (Key_value)
{
case kFUN:
// USB_HALT = !USB_HALT;
// break;
case kNEXT:
// break;
case kPRE:
// break;
case kEJECT:
// break;
case kSTOP:
// WriteSPIData (0x69,0x55);
// ALARM_CANCLE ( );
// break;
case kPLAY:
// break;
case kLEFT:
// WriteSPIData (0x73,0x55);
// Send_order (P_left, PAddr, PSpeed);
// break;
case kRIGHT:
// WriteSPIData (0x72,0x55);
// Send_order (P_right, PAddr, PSpeed);
// break;
case kDOWN:
// WriteSPIData (0x71,0x55);
// Send_order (P_down, PAddr, PSpeed);
// break;
case kUP:
// WriteSPIData (0x70,0x55);
// Send_order (P_up, PAddr, PSpeed);
// break;
case kALL:
// CH_Status = 0xff;
// ScalePosition ( );
// break;
case kCH1:
// CH_Status = 0x01;
// FullPosition ( );
// break;
case kCH2:
// CH_Status = 0x02;
// FullPosition ( );
// break;
case kCH3:
// CH_Status = 0x04;
// FullPosition ( );
// break;
case kCH4:
// CH_Status = 0x08;
// FullPosition ( );
// break;
case kCH5:
// CH_Status = 0x10;
// FullPosition ( );
// break;
case kCH6:
// CH_Status = 0x20;
// FullPosition ( );
// break;
case kCH7:
// CH_Status = 0x40;
// FullPosition ( );
// break;
case kCH8:
// CH_Status = 0x80;
// FullPosition ( );
// break;
case kMENU:
WriteSPIData (Key_value, kCMD_Tr);
// Send_order (P_up, PAddr, PSpeed);
break;
default:
Key_value = 0xff;
Key_value = 0xff;
break;
}
}
}
//==============
//key file.c end
//==============
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -