key scan

/***************************************************************************************************** 
* Copyright (c) 2011,ÉîÛÚÊÐÖеÛÍþ¿Æ¼¼ÓÐÏÞ¹«Ë¾
* All rights reserved. 
*  
* ÎļþÃû³Æ£ºmain.c 
* Îļþ±êʶ£ºHDC708
* Õª	Òª£ºÕû¸ö¹¤×÷µÄÖ÷Ì岿·Ö
* »·    ¾³: IDE Keilc4.20  ¾§Õñ 27MHZ  MCU RTD2120L
*  
* µ±Ç°°æ±¾£º1.1 
* ×÷	ÕߣºÐì½­Â×
* Íê³ÉÈÕÆÚ£º2012Äê02ÔÂ4ÈÕ 
* 
* È¡´ú°æ±¾£º1.0   
* Ô­×÷Õß  £ºxjl
* Íê³ÉÈÕÆÚ£º20XXÄêXÔÂXÈÕ 
* ¸ü¶àÐÅÏ¢£ºwww.DeviceWell.com
*****************************************************************************************************/ 
#ifndef _MAIN_H
#define _MAIN_H


#include <REG52.H>
#include "intrins.h"
#include "main.h"
#include "timer.h"
#include "IrCommodProcess.h"






bit g_systTime2Ms=0;     //¶¨Òåʱ¼ä±ê־λ
bit g_time10Ms=0; 
int g_num;


void Timer0Init(void);
void KeyInit(void);


/* 
*  º¯Êý½éÉÜ£º main
*  ÊäÈë²ÎÊý£º NULL
*  
*  ·µ»ØÖµ  £º NULL
*/ 




void main()
{
    unsigned char KeyValue = KEY_NULL;
    unsigned char temp = 0 ;




	
	DelayMs(2000); 
	Init_MCU();		


	Send_RS232_Byte(0XAA);
	Send_RS232_Byte(0X55);






/*    
	LED_CS11 = 1 ; //Á÷Ë®µÆÊä³öÔÊÐí
    LED_SEG = 0 ;
    LED_DIG = 0 ;
*/
    Timer0Init() ;
    KeyInit() ;
    EA = 1 ;


	
	while(1){
	 Send_RS232_Byte(0XB2);
	   if(g_systTime2Ms)   //ÿ2msɨÃèÏÔʾ
	   {
	    g_systTime2Ms=0;
//	    DsipNum();
	   }
	   if(g_time10Ms) //ÿ10msɨÃèÒ»´Î°´¼ü
	   {
	    g_time10Ms=0;
	    switch (GetKey())
	    {
	     case (KEY_VALUE_1|KEY_DOWN):
	      Send_RS232_Byte(0X01);
	      break;
	     case (KEY_VALUE_1|KEY_LONG):
	      Send_RS232_Byte(0X02);
	      break;
		 case (KEY_VALUE_1|KEY_CONTINUE):
	      Send_RS232_Byte(0XA2);
	     break;
		 case (KEY_VALUE_1|KEY_UP):
	      Send_RS232_Byte(0XB2);
	     break;


	     case (KEY_VALUE_2|KEY_DOWN):
	      Send_RS232_Byte(0X03);
	      break;
	     case (KEY_VALUE_2|KEY_LONG):
	      Send_RS232_Byte(0X04);
	      break;
		 case (KEY_VALUE_2|KEY_CONTINUE):
	      Send_RS232_Byte(0XA4);
	     break;
		 case (KEY_VALUE_2|KEY_UP):
	      Send_RS232_Byte(0XB4);
	     break;




	     case (KEY_VALUE_3|KEY_DOWN):
	      Send_RS232_Byte(0X05);
	      break;
	     case (KEY_VALUE_3|KEY_LONG):
	      Send_RS232_Byte(0X06);
	      break;
         case (KEY_VALUE_3|KEY_CONTINUE):
	      Send_RS232_Byte(0XA6);
	     break;
		 case (KEY_VALUE_3|KEY_UP):
	      Send_RS232_Byte(0XB6);
	     break;   		 




	     case (KEY_VALUE_4|KEY_DOWN):
	      Send_RS232_Byte(0X07);
	      break;
	     case (KEY_VALUE_4|KEY_LONG):
	      Send_RS232_Byte(0X08);
	      break;
		 case (KEY_VALUE_4|KEY_CONTINUE):
	      Send_RS232_Byte(0XA8);
	     break;
		 case (KEY_VALUE_4|KEY_UP):
	      Send_RS232_Byte(0XB8);
	     break;
	    }
	   }




	}
}


void Timer0Init(void)
{
    TMOD &= 0xf0 ;
    TMOD |= 0x01 ;      //¶¨Ê±Æ÷0¹¤×÷·½Ê½1
    TH0  =  0xfc ;      //¶¨Ê±Æ÷³õʼֵ
    TL0  =  0x66 ;
    TR0  = 1 ;
    ET0  = 1 ;
}






/* 																		  s
*  º¯Êý½éÉÜ£º Init_MCU MCU³õʼ»¯
*  ÊäÈë²ÎÊý£º NULL
*  
*  ·µ»ØÖµ  £º NULL
*/
void Init_MCU()
{
		IE = 0x00;                   // Disable all interrupts
		
		MCU_PIN_SHARE1_FF01 = 0x44;  //P3.0/P3.1 is GPIO
		MCU_PORT6_OE_FF04   = 0xf0;  //P6.4,P6.5,P6.6,P6.7 output,others is input
		MCU_PORT1_TYPE_FF09 = 0xfd;  //P11 is standard IO,others is  push-pull output
		MCU_OPTION_FF38     = 0x81;  //bit0=1 select ClockOut=PLL
		
		T2CON = 0x00;
		TH2 = 0;
		TL2 = 0;
		TR2 = 1;                     // Enable Timer2 
		RCAP2L = 0x1c;               //0x10000-0xa81c=0x57e4=22500,22500 X 27/12 =10000 ,10MS 
		RCAP2H = 0xa8; 		
}






void KeyInit(void)
{
	    Key1 = 1 ;
	    Key2 = 1 ;
	    Key3 = 1 ;
	    Key4 = 1 ;            
}


void Timer0() interrupt 1     //ÖжϺ¯Êý
{
	static s_countFor10Ms=0;
	TH0=0XF8;
	TL0=0XCC;
	g_systTime2Ms=1;
	if(++s_countFor10Ms>=5)
	{
	s_countFor10Ms=0;
	g_time10Ms=1;
	} 
}








#endif










/***************************************************************************************************** 
* Copyright (c) 2011,ÉîÛÚÊÐÖеÛÍþ¿Æ¼¼ÓÐÏÞ¹«Ë¾
* All rights reserved. 
*  
* ÎļþÃû³Æ£ºbus.c 
* Îļþ±êʶ£ºHDC708
* Õª	Òª£ºÄ£Äâ´®¿Ú·¢ËͲ¿·Ö
* »·    ¾³: IDE Keilc4.20  ¾§Õñ 27MHZ  MCU RTD2120L
*  
* µ±Ç°°æ±¾£º1.1 
* ×÷	ÕߣºÐì½­Â×
* Íê³ÉÈÕÆÚ£º2012Äê02ÔÂ4ÈÕ 
* 
* È¡´ú°æ±¾£º1.0   
* Ô­×÷Õß  £ºxjl
* Íê³ÉÈÕÆÚ£º20XXÄêXÔÂXÈÕ 
* ¸ü¶àÐÅÏ¢£ºwww.DeviceWell.com
*****************************************************************************************************/ 

#include "reg52.h"
#include "intrins.h"
#include "main.h"





void Send_SONY_Byte_BaudRate(unsigned char wdata)
{
	bit b0,b1,b2,b3,b4,b5,b6,b7;
	
	b0=wdata&0x01;
	b1=wdata&0x02;
	b2=wdata&0x04;
	b3=wdata&0x08;
	b4=wdata&0x10;
	b5=wdata&0x20;
	b6=wdata&0x40;
	b7=wdata&0x80;
	
	SONY=0;  ///start bit
	Delay_52us();
	SONY=b0;
	Delay_52us();
	SONY=b1;
	Delay_52us();
	SONY=b2;
	Delay_52us();
	SONY=b3;
	Delay_52us();
	SONY=b4;
	Delay_52us();
	SONY=b5;
	Delay_52us();
	SONY=b6;
	Delay_52us();
	SONY=b7;
	Delay_52us();
	SONY=1; //stop bit
	Delay_52us();
	SONY=1; 
	Delay_52us();
}
/* 
*  º¯Êý½éÉÜ£º Send_RS232_Byte  pc 115200
*  ÊäÈë²ÎÊý£º unsigned char wdata
*  
*  ·µ»ØÖµ  £º NULL
*/
void Send_RS232_Byte(unsigned char wdata)
{
	bit b0,b1,b2,b3,b4,b5,b6,b7;
	
	b0=wdata&0x01;
	b1=wdata&0x02;
	b2=wdata&0x04;
	b3=wdata&0x08;
	b4=wdata&0x10;
	b5=wdata&0x20;
	b6=wdata&0x40;
	b7=wdata&0x80;
	
	Send=0;  ///start bit
	Delay_8us();
	Send=b0;
	Delay_8us();
	Send=b1;
	Delay_8us();
	Send=b2;
	Delay_8us();
	Send=b3;
	Delay_8us();
	Send=b4;
	Delay_8us();
	Send=b5;
	Delay_8us();
	Send=b6;
	Delay_8us();
	Send=b7;
	Delay_8us();
	Send=1; //stop bit
	Delay_8us();
	Send=1; 
	Delay_8us();
}


void Delay_52us()
 {
	unsigned char i;
//	for(i=0;i<7;i++)   _nop_();  _nop_();_nop_();_nop_(); _nop_(); //24M
//	for(i=0;i<7;i++)   _nop_();  _nop_();_nop_();_nop_(); _nop_(); //24.576M
	//for(i=0;i<6;i++)   _nop_();  _nop_();_nop_();_nop_(); _nop_(); //27M P5/P6/P7
/*9600 104us*/
	for(i=0;i<112;i++)   _nop_();  _nop_();_nop_();_nop_(); _nop_(); //27M P3

/*19200 52us*/
   //for(i=0;i<55;i++)   _nop_(); _nop_();_nop_(); _nop_();_nop_();_nop_(); _nop_(); //27M P3


/*38400 26us*/
 //  for(i=0;i<26;i++)  _nop_(); _nop_();  _nop_();_nop_();_nop_(); _nop_(); //27M P3


//	for(i=0;i<7;i++)   _nop_(); _nop_();_nop_(); //27M P0/P1/P2/P3

 }



void Delay_8us()
 {
	unsigned char i;
//	for(i=0;i<7;i++)   _nop_();  _nop_();_nop_();_nop_(); _nop_(); //24M
//	for(i=0;i<7;i++)   _nop_();  _nop_();_nop_();_nop_(); _nop_(); //24.576M
	//for(i=0;i<6;i++)   _nop_();  _nop_();_nop_();_nop_(); _nop_(); //27M P5/P6/P7
	/*115200 8us*/
	//for(i=0;i<6;i++)   _nop_();  _nop_();_nop_();  _nop_();_nop_(); _nop_();_nop_();	 _nop_();_nop_();//27M  P3

	/*38400 26us*/
	//for(i=0;i<26;i++)  _nop_(); _nop_();  _nop_();_nop_();_nop_(); _nop_(); //27M P3

	/*9600 104us*/
	//for(i=0;i<112;i++)   _nop_();  _nop_();_nop_();_nop_(); _nop_(); //27M P3

	
   	for (i = 0; i < 46; i++)
		_nop_(); 	//22.1184M P1,2,3 52us 19200

	/*19200 52us*/
   //for(i=0;i<55;i++)   _nop_(); _nop_();_nop_(); _nop_();_nop_();_nop_(); _nop_(); //27M P3

   //for(i=0;i<7;i++)   _nop_(); _nop_();_nop_(); //27M P0/P1/P2/P3

 }
Public/
void DelayMs(int ms)
{
int ii,j;
for(j=0;j<ms;j++)
   {
   for(ii=0;ii<580;ii++)
      _nop_();
   }
}
Public/
/*
void DelayUs(unsigned char us)
{
unsigned char i;
for(i=0;i<us;i++)
   _nop_();
} */


/***************************************************************************************************** 
* Copyright (c) 2011,ÉîÛÚÊÐÖеÛÍþ¿Æ¼¼ÓÐÏÞ¹«Ë¾
* All rights reserved. 
*  
* ÎļþÃû³Æ£ºIrCommodProcess.c 
* Îļþ±êʶ£ºHDC708
* Õª	Òª£ººìÍâ½âÂëµÄ´¦Àí²¿·Ö
* »·    ¾³: IDE Keilc4.20  ¾§Õñ 27MHZ  MCU RTD2120L
*  
* µ±Ç°°æ±¾£º1.1 
* ×÷	ÕߣºÐì½­Â×
* Íê³ÉÈÕÆÚ£º2012Äê02ÔÂ6ÈÕ 
* 
* È¡´ú°æ±¾£º1.0   
* Ô­×÷Õß  £ºxjl
* Íê³ÉÈÕÆÚ£º20XXÄêXÔÂXÈÕ 
* ¸ü¶àÐÅÏ¢£ºwww.DeviceWell.com
*****************************************************************************************************/ 
#ifndef _KEY_H
#define _KEY_H

#include <REG52.H>
#include "main.h"
#include "IrCommodProcess.h"




bit bOsdFlag   = 0;                      /*OSD¿ªÆô±êÖ¾¿ªÊ¼Îª0¹Ø±Õ*/
bit bChangFlag = 0;
unsigned char ucReslutionIndex = 0;


/* 
*  º¯Êý½éÉÜ£º ½«°´½¡IDת»¯Îª¶ÔÓ¦µÄÏûÏ¢±êÖ¾
*  ÊäÈë²ÎÊý£º NULL
*  Êä³ö²ÎÊý£º NULL
*  ·µ»ØÖµ  £º NULL
*/ 
void KeyMsgProcess()
{


}


static unsigned char KeyScan(void)
{
    if(Key1 == 0) return KEY_VALUE_1 ;
    if(Key2 == 0) return KEY_VALUE_2 ;
    if(Key3 == 0) return KEY_VALUE_3 ;
    if(Key4 == 0) return KEY_VALUE_4 ;

    return KEY_NULL ;
}



unsigned char GetKey()
{
unsigned char keyRetu=0,KeyTemp=KEY_NULL;    //·µ»ØµÄ°´¼üÖµ,°´¼üÇé¿ö
static unsigned char s_u8KeyState=KEY_STATE_INIT,s_u8KeyTimeCount=0,s_u8LastKey=KEY_NULL; //°´¼ü״̬,°´¼ü°´ÏµÄʱ¼ä¼ÆÊýÆ÷£¬Éϴΰ´¼üÖµ

KeyTemp=KeyScan();


switch(s_u8KeyState)
{
case KEY_STATE_INIT :
{
if(KEY_NULL != (KeyTemp))
{
s_u8KeyState = KEY_STATE_WOBBLE ;
}
}
break ;

case KEY_STATE_WOBBLE :      //Ïû¶¶
{
s_u8KeyState = KEY_STATE_PRESS ;    
}
break ;

case KEY_STATE_PRESS :
{
if(KEY_NULL != (KeyTemp))
{
s_u8LastKey = KeyTemp ; //±£´æ¼üÖµ,ÒÔ±ãÔÚÊÍ·Å°´¼ü״̬·µ»Ø¼üÖµ
KeyTemp |= KEY_DOWN ;  //°´¼ü°´ÏÂ
s_u8KeyState = KEY_STATE_LONG ;
}
else
{
s_u8KeyState = KEY_STATE_INIT ;
}
}
break ;

case KEY_STATE_LONG :
{
if(KEY_NULL != (KeyTemp))
{
if(++s_u8KeyTimeCount > KEY_LONG_PERIOD)
{
    s_u8KeyTimeCount = 0 ;
    KeyTemp |= KEY_LONG ;  //³¤°´¼üʼþ·¢Éú
    s_u8KeyState = KEY_STATE_CONTINUE ;
}
}
else
{
s_u8KeyState = KEY_STATE_RELEASE ;
}
}
break ;

case KEY_STATE_CONTINUE :
{
if(KEY_NULL != (KeyTemp))
{
if(++s_u8KeyTimeCount > KEY_CONTINUE_PERIOD)
{
    s_u8KeyTimeCount = 0 ;
    KeyTemp |= KEY_CONTINUE ;
}
}
else
{
s_u8KeyState = KEY_STATE_RELEASE ;
}
}
break ;

case KEY_STATE_RELEASE :
{
s_u8LastKey |= KEY_UP ;
KeyTemp = s_u8LastKey ;
s_u8KeyState = KEY_STATE_INIT ;
}
break ;

default : break ;
}

return KeyTemp;
}








#endif


//¶¨Ò峤°´¼üµÄTICKÊý,ÒÔ¼°Á¬_·¢¼ä¸ôµÄTICKÊý
#define KEY_LONG_PERIOD        100
#define KEY_CONTINUE_PERIOD    25

//¶¨Òå°´¼ü·µ»Øֵ״̬(°´ÏÂ,³¤°´,Á¬_·¢,ÊÍ·Å)
#define KEY_DOWN                0x80
#define KEY_LONG                    0x40
#define KEY_CONTINUE            0x20
#define KEY_UP                  0x10

//¶¨Òå°´¼ü״̬
#define KEY_STATE_INIT            0
#define KEY_STATE_WOBBLE            1
#define KEY_STATE_PRESS            2
#define KEY_STATE_LONG            3
#define KEY_STATE_CONTINUE      4
#define KEY_STATE_RELEASE        5



#ifdef _KEY_H




unsigned char KeyIn, KeyOld;
unsigned char Sys_Msg;
unsigned char ucKeyValue;

void KeyMsgProcess(void);
unsigned char Get_KeyValue(void);





//extern unsigned char ucMainMenuFlag;

unsigned char GetKey();
#else

extern bit bChangFlag ;



extern unsigned char KeyIn, KeyOld;

extern unsigned char GradeNumber;
extern unsigned char ucKeyValue;
extern  unsigned char Sys_Msg;
extern void KeyMsgProcess(void);
extern unsigned char Get_KeyValue(void);
extern unsigned char GetKey();

#endif




//sbit SONY=0xb5;
//sbit SONY=0xb0;
sbit SONY=0xb1;

sbit Send=0xb2;

sbit Led = 0x92;


#define KEY_VALUE_1                0x0e
#define KEY_VALUE_2                0x0d
#define KEY_VALUE_3                0x0b
#define KEY_VALUE_4                0x07
#define KEY_NULL                   0x0f


#define    Key1                       P51
#define    Key2                       P52
#define    Key3                       P53
#define    Key4                       P54	

//¶¨Ò峤°´¼üµÄTICKÊý,ÒÔ¼°Á¬_·¢¼ä¸ôµÄTICKÊý
#define KEY_LONG_PERIOD        100
#define KEY_CONTINUE_PERIOD    25
//¶¨Òå°´¼ü·µ»Øֵ״̬(°´ÏÂ,³¤°´,Á¬_·¢,ÊÍ·Å)
#define KEY_DOWN                0x80
#define KEY_LONG                0x40
#define KEY_CONTINUE            0x20
#define KEY_UP                  0x10
//¶¨Òå°´¼ü״̬
#define KEY_STATE_INIT          0
#define KEY_STATE_WOBBLE        1
#define KEY_STATE_PRESS         2
#define KEY_STATE_LONG          3
#define KEY_STATE_CONTINUE      4
#define KEY_STATE_RELEASE       5






//#define KEY_LONG_PERIOD        50    //¶¨Ò峤°´¼üµÄTICKÊý,ÒÔ¼°Á¬·¢¼ä¸ôµÄTICKÊý
#define KEY_CONTINUE_PERIOD    25






#ifdef _MAIN_H  






    #define Send_PC         P55

	sbit sbIrPin=0xb2;


	unsigned char ucStatKeyValue;
	
	static void PWE_Check();

	void Init_MCU(void);	
	void Send_RS232_Byte(unsigned char wdata);

//	void Send_SONY_Byte(unsigned char wdata);
	void Delay_8us(void);
	void DelayMs(int ms);
	void DelayUs(unsigned char us);

    unsigned char xdata P77       _at_ 0xFF61; //p7.6
    unsigned char xdata P76       _at_ 0xFF60; //p7.6
	unsigned char xdata P50       _at_ 0xFF50; //p5.0
    unsigned char xdata P51       _at_ 0xFF51; //p5.1
	unsigned char xdata P52       _at_ 0xFF52; //p5.2
    unsigned char xdata P53       _at_ 0xFF53; //p5.3
    unsigned char xdata P54       _at_ 0xFF54; //p5.4
	unsigned char xdata P55       _at_ 0xFF55; //p5.5
	unsigned char xdata P56       _at_ 0xFF56; //p5.6
	unsigned char xdata P57       _at_ 0xFF57; //p5.7

    unsigned char xdata P67       _at_ 0xFF5f; //P6.7 ff58+7
    unsigned char xdata P66       _at_ 0xFF5e; //P6.6 ff58+6
    unsigned char xdata P65       _at_ 0xFF5d; //P6.5 ff58+5
    unsigned char xdata P64       _at_ 0xFF5c; //P6.4 ff58+4
    unsigned char xdata P63       _at_ 0xFF5b; //P6.7 ff58+3
    unsigned char xdata P62       _at_ 0xFF5a; //P6.6 ff58+2
    unsigned char xdata P61       _at_ 0xFF59; //P6.5 ff58+1
    unsigned char xdata P60       _at_ 0xFF58; //P6.4 ff58+0

   unsigned char xdata MCU_PIN_SHARE0_FF00      _at_ 0xFF00;
   unsigned char xdata MCU_PIN_SHARE1_FF01      _at_ 0xFF01;
   unsigned char xdata MCU_PIN_SHARE2_FF02      _at_ 0xFF02;
   unsigned char xdata MCU_PORT5_OE_FF03        _at_ 0xFF03;
   unsigned char xdata MCU_PORT6_OE_FF04        _at_ 0xFF04;
   unsigned char xdata MCU_PORT7_OE_FF05        _at_ 0xFF05;
   unsigned char xdata MCU_PORT1_TYPE_FF09      _at_ 0xFF09;
	unsigned char xdata MCU_PLL_CTRL_FF10        _at_ 0xFF10;
	unsigned char xdata MCU_PLL_FILTER_CTRL_FF11 _at_ 0xFF11;
	unsigned char xdata MCU_PLL_M_N_DIV_FF12     _at_ 0xFF12;
	unsigned char xdata MCU_REGULATOR_CTRL_FF13  _at_ 0xFF13;
	unsigned char xdata MCU_OPTION_FF38          _at_ 0xFF38;

	unsigned char xdata MCU_FC_PAGE_ERASE_FF39 _at_ 0xFF39;

	volatile unsigned char xdata  ucResolutionValue _at_  0x400;


	void Delay_52us();

 	void Init_Var();

	void Send_SONY_Byte_BaudRate(unsigned char wdata);
	void Erase_Eprom_Page(unsigned char page);
	void Send_RS232_PC_Byte(unsigned char wdata);



#else
	extern	void Erase_Eprom_Page(unsigned char page);
	extern	unsigned char ucStatKeyValue;
    extern	volatile unsigned char xdata  ucResolutionValue ;	
	extern  void Send_SONY_Byte_BaudRate(unsigned char wdata);
	extern  void Delay_52us();
	extern  void Init_MCU();
	extern	void DelayMs(int ms);
	extern	void DelayUs(unsigned char us);
	extern	void Send_RS232_Byte(unsigned char wdata);
//	extern	void Send_SONY_Byte(unsigned char wdata);
	extern	void Delay_8us();
	
		
	extern	unsigned char xdata P77; //p7.7
	extern	unsigned char xdata P76; //p7.6
	extern  unsigned char xdata P50; //p5.0
	extern  unsigned char xdata P51; //p5.1
	extern  unsigned char xdata P52; //p5.2
	extern  unsigned char xdata P53; //p5.3
	extern  unsigned char xdata P54; //p5.4
	extern  unsigned char xdata P55; //p5.5
	extern  unsigned char xdata P56; //p5.6
	extern  unsigned char xdata P57; //p5.7

	extern  unsigned char xdata P67; //P6.7 ff58+7
	extern  unsigned char xdata P66; //P6.6 ff58+6
	extern  unsigned char xdata P65; //P6.5 
	extern  unsigned char xdata P64; //P6.4 
	extern  unsigned char xdata P63; //P6.3 
	extern  unsigned char xdata P62; //P6.2 
	extern  unsigned char xdata P61; //P6.1 
	extern  unsigned char xdata P60; //P6.0 

	extern  unsigned char xdata MCU_PIN_SHARE0_FF00;
	extern  unsigned char xdata MCU_PIN_SHARE1_FF01;
	extern  unsigned char xdata MCU_PIN_SHARE2_FF02;
	extern  unsigned char xdata MCU_PORT5_OE_FF03;
	extern  unsigned char xdata MCU_PORT6_OE_FF04;
	extern  unsigned char xdata MCU_PORT7_OE_FF05;
	extern  unsigned char xdata MCU_PORT1_TYPE_FF09;

	extern  unsigned char xdata PLL10;
	extern	unsigned char xdata PLL11;
	extern	unsigned char xdata PLL12;
	extern	unsigned char xdata MCU_PLL_CTRL_FF10;
	extern  unsigned char xdata MCU_PLL_FILTER_CTRL_FF11;
	extern	unsigned char xdata MCU_PLL_M_N_DIV_FF12;
	extern	unsigned char xdata MCU_REGULATOR_CTRL_FF13;

	
	extern void Send_RS232_PC_Byte(unsigned char wdata);
#endif	
	
	




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用RedisTemplate的scan方法可以遍历Redis中的所有key,如果需要删除特定的key,可以在遍历时进行判断并执行删除操作。 具体操作步骤如下: 1. 获取RedisTemplate对象。 2. 调用RedisTemplate的execute方法,传入RedisCallback回调函数。 3. 在回调函数中调用RedisConnection的scan方法,获取key的游标cursor和当前扫描到的keys。 4. 遍历keys,判断是否需要删除,需要则调用RedisConnection的del方法删除key。 5. 如果游标cursor返回0,则表示遍历完成,退出循环。 示例代码如下: ``` @Autowired private RedisTemplate<String, Object> redisTemplate; public void deleteKeys(String pattern) { redisTemplate.execute((RedisCallback<Void>) connection -> { ScanOptions options = ScanOptions.scanOptions().match(pattern).build(); String cursor = ScanParams.SCAN_POINTER_START; do { ScanResult<byte[]> scanResult = connection.scan(cursor.getBytes(), options); List<byte[]> keys = scanResult.getResult(); for (byte[] key : keys) { String keyStr = new String(key, StandardCharsets.UTF_8); if (needDelete(keyStr)) { connection.del(key); } } cursor = scanResult.getStringCursor(); } while (!"0".equals(cursor)); return null; }); } private boolean needDelete(String key) { // 判断是否需要删除key的逻辑 } ``` 其中,deleteKeys方法接收一个字符串类型的参数pattern,用于指定需要删除的key的模式,例如:"user:*"表示删除以"user:"开头的所有key。needDelete方法用于判断是否需要删除当前遍历到的key,根据实际需求自行实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值