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

📄 key_c.c

📁 dvr software control reference origin code dvr software control reference origin code
💻 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};

/*=============================
== 函数名称:delayNOP
== 函数功能:delay 1.085us*5=5.425us
==入口参数: 
==出口参数: delayNOP( ) 
==============================*/

void delay_us (uchar i)	 

{		

	while (--i);
	return ;

}

/*=============================
== 函数名称:delay_ms() 
== 函数功能:ms delay process.
==入口参数: INT16U time
==出口参数:
==============================*/

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
//==============

⌨️ 快捷键说明

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