看了本论坛的按键,写了个可是没反应

2020-02-01 16:33发布

#include"STC12C5620AD.H"
//#include"TIMER0.H"

//sbit  Key5 =P2^2;          //触摸按键引脚
//sbit  Key2 =P2^3;
//sbit  Key3 =P3^0;
//sbit  Key4 =P3^1;

sbit  bell =P2^0;

extern          unsigned char  keyboard();
void delay()
   {
             unsigned char i;
           for(i=0;i<320;i++);
            
          }
   
void main(void)
{        
  Init_Timer0();
//if(systemTime10Ms)
//  {
//  systemTime10Ms=0;
    switch(keyboard())
         {
                  case 1: bell = 0 ;  delay(); delay();
                  case 2: bell = 0 ;  delay(); delay();        delay();
                  case 3: bell = 0 ;  delay(); delay();        delay();delay() ;
                  case 4: bell = 0 ;  delay(); delay();        delay();delay();         delay();
                 }
}         
// }

//独立按键 P10-P13
extern          unsigned char  keyboard()
{
unsigned char key_number =0 ;                 //        按键号
unsigned char key_temp = 0;                         //暂存按键值
static unsigned char key_code = 0; //按键值
static unsigned char key_count = 0;    //电平有效次数
static unsigned char key_flag = 0;   //按键有效标志位

  key_temp = P1&0x0F;
  if(key_temp != 0x0F)
     {
          key_count++;
          if(key_count == 10)
            {
                 key_flag = 1;
         key_code = key_temp;
                }
         }
  else   //松手判断
     {
    key_count = 0;
        if(key_flag==1)
           {
                  key_flag = 0;
                 switch(key_code)
                        {
                                 case 0x0e:    key_number = 1;
                                 case 0x0D:    key_number = 2;
                                 case 0x0b:    key_number = 3;
                                 case 0x07:    key_number = 4;
                                }
           }
         }
   return(key_number);
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
LOVEBABY
2020-02-02 18:01
blue003 发表于 2012-12-10 17:45
没有while

#include"STC12C5620AD.H"

sbit  led1 =P2^0;
sbit  led2 =P2^1;
sbit  led3 =P2^2;
sbit  led4 =P2^3;

extern          unsigned char  keyboard();

void delay()
   {  
    unsigned int i;
        for(i=0;i<920;i++);            
        }
void led()
{
led1=0;           //亮
delay();
delay();
delay();
led1 =1 ;        //灭


}  
void main(void)
{        
//led1 =1;
         while(1)
         {
      switch(keyboard())
         {
                  case 1: led();   break;
                  case 2: led();   break;
                  case 3: led();   break;
                  case 4: led();   break;
                  default:break;
                 }
  }         

        }


//独立按键 P10-P13
extern          unsigned char  keyboard()
{
unsigned char key_number =0 ;                 //        按键号
unsigned char key_temp = 0;                         //暂存按键值
static unsigned char key_code = 0; //按键值
static unsigned char key_count = 0;    //电平有效次数
static unsigned char key_flag = 0;   //按键有效标志位

  key_temp = P1&0x0F;
  if(key_temp != 0x0F)
     {
          key_count++;
          if(key_count == 15)
            {
                 key_flag = 1;
         key_code = key_temp;
                }
         }
  else   //松手判断
     {
    key_count = 0;
        if(key_flag==1)
           {
                  key_flag = 0;
                 switch(key_code)
                        {
                                 case 0x0e:    key_number = 1;        break;
                                 case 0x0D:    key_number = 2;         break;
                                 case 0x0b:    key_number = 3;         break;
                                 case 0x07:    key_number = 4;  break;
                                }

           }
         }
   return(key_number);
}

都吧错无更改了还是不行,头大大大大大大大

一周热门 更多>