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

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);
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
LOVEBABY
1楼-- · 2020-02-01 19:58
没道理啊,奇怪,搞了好几天了,那位帮我看看,问题出在哪里
jswd0810
2楼-- · 2020-02-01 23:19
你把switch语句里面的每个case后加一个break;如下:
               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;
                      default:break;
                                }
LOVEBABY
3楼-- · 2020-02-02 05:09
jswd0810 发表于 2012-12-8 15:57
你把switch语句里面的每个case后加一个break;如下:
               switch(key_code)
                   ...

额忘记把这个写上去,不过试了还是不能用,你能不能在编译器里帮我看下
meirenai
4楼-- · 2020-02-02 07:06
while(one)      
skylilin
5楼-- · 2020-02-02 13:01
 精彩回答 2  元偷偷看……
blue003
6楼-- · 2020-02-02 16:41
没有while

一周热门 更多>