CC2530 키 인터럽트 - 인터럽트 벡터

/*************************************************
*    :Zigbee——  
*    :key_led.c
*    :key1      led 
*    :  Zigbee   
*    :
*          LED1   P1_0       
*          KEY1   P0_4       
*
*    :2013.5.11
*   :  ***
*   :   
**************************************************/


#include 

//      
#define uchar unsigned char
#define uint unsigned int

//     
#define LED1 P1_0  //LED1    
#define LED2 P1_1  //LED2    
#define KEY1 P0_4  //   


//     
void delayms(uint);  //    
void InitLed();   //P1    
void InitKey();   //       --    
uchar KeyValue = 0;//

uint flag = 0;
uint key_flag = 1;
//     

/**************************
*    :delayms(uint ms)
*    :    
*    : 
*    : 
*     : 
**************************/
void delayms(uint ms)
{
  uint i = 0;
  uint j = 0;
  
  for(i = 0; i < ms; ++i)
    for(j = 0; j < 586; ++j);
}

/**************************
*    :InitLed()
*    :LED   
*    : 
*    : 
*     : 
**************************/
void InitLed()
{
  P1SEL &= ~0x02;//  P1_0   IO 
  P1DIR |= 0x02;//  P1_0   
  //LED1 = 1;//   LED1  
  LED2 = 0;//   LED2  
}

/**************************
*    :InitKey()
*    :       
*    : 
*    : 
*     : 
**************************/
void InitKey()
{
#if key_flag
//    
  flag = 0;
  P0IEN |= 0x10;//P0_4       
  PICTL |= 0x01;//     
  IEN1  |= 0x20;//  P0   
  P0IFG =  0x00;//        
  EA = 1;//    

#else
//    
  flag = 1;
  P0SEL &= ~0x10;//  p0_4   IO 
  P0DIR &= ~0x10;//  P0_4   
  P2INP &= ~0x11;//  P0      
  P0INP &= ~0x10;//  P0_4   /  
  
#endif
}

/**************************
*    :ScanKey()
*    :        
*    : 
*    : 
*     :    
                 1
                 0
**************************/
#pragma vector = P0INT_VECTOR //  :#pragma vector =     
__interrupt void P0_ISR(void)
{
  delayms(20);//    
  //LED1 = ~LED1;//  LED1   
  LED2 = ~LED2;//  LED2   
  P0IFG = 0;//      
  P0IF = 0;//      
}
/**************************
*    :ScanKey()
*    :      
*    : 
*    : 
*     :    
                 1
                 0
**************************/
uchar ScanKey()
{
  if(0 == KEY1)//       
  {
    delayms(20);//         
    if(0 == KEY1)//          
    {
      while(!KEY1);//      
      return 1;//     1
    }
  }
  return 0;//         0
}
/**************************
*    :main()
*    :   
*    : 
*    : 
*     : 
**************************/
void main()
{
  InitLed();
  InitKey();
#if flag
  while(1)
  {
    if(ScanKey())
    {
      LED1 = ~LED1;//LED  
    }
  }
#else
  while(1);//      
#endif
}


좋은 웹페이지 즐겨찾기