k1控制开、关,k2按下加一,k3按下减一,

2019-07-15 09:48发布

k2加一,k3减一之前试过了,可以,但是要k1开的时候,k2、k3才能加一减一,这个没有做到,k1没开的时候,k2也会从零开始加一;现在我改了程序,出现别的问题(但是我懂得改回原先的样子),请问怎样才能k1开的时候k2加一、减一呢?
  1. #include<at89x52.h>
  2. #define uchar unsigned char
  3. sbit k1=P3^0;
  4. sbit k2=P3^2;
  5. sbit k3=P3^4;
  6. uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

  7. void delay1ms(uchar a)  
  8. {
  9.      uchar b,c;
  10.     for(c=1;c>0;c--)
  11.         for(b=142;b>0;b--)
  12.             for(a=2;a>0;a--);
  13. }

  14. void main()
  15. {
  16.   uchar i;
  17.   while(1)
  18.   {

  19.    if(k1==0)
  20.    {
  21.     delay1ms(10);
  22.     if(k1==0)
  23.     {
  24.       P2=0xc0;
  25.     }
  26.     while(!k1);
  27.    }

  28.    if(P2==0xc0)
  29.    {
  30.       if(k2==0)
  31.       {
  32.         delay1ms(10);
  33.         if(k2==0)
  34.        {
  35.          P2=tab[++i];  
  36.        }
  37.          while(!k2);
  38.       }
  39.    }

  40.       if(k3==0)
  41.       {
  42.        delay1ms(10);
  43.        if(k3==0)
  44.        {
  45.          P2=tab[--i];
  46.        }
  47.          while(!k3);
  48.       }
  49.   }
  50. }
复制代码

图.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。