2015年10月4日星期日

K1-K4 按键状态显示

名称:K1-K4 按键状态显示
说明:K1、K2 按下时 LED 点亮,松开时熄灭, K3、K4 按下并释放时 LED 点亮,再次按下并释放时熄灭;

              #include<reg51.h>
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4        
   5          sbit LED1 = P2^0;
   6          sbit LED2 = P2^1;
   7          sbit LED3 = P2^2;
   8          sbit LED4 = P2^3;
   9        
  10          sbit K1 = P0^0;
  11          sbit K2 = P0^1;
  12          sbit K3 = P0^2;
  13          sbit K4 = P0^3;
  14        
  15          //延时,用来防抖
  16          void delayMS(uint x)
  17          {
  18   1              uchar i;
  19   1              while(x--)
  20   1              {
  21   2                    
  22   2                      for(i = 0; i < 120; i++);
  23   2                    
  24   2              }
  25   1      }
  26          //主程序
  27          main()
  28          {
  29   1              P0 = 0xff;//给P0和P2口赋值;高电平;
  30   1              P2 = 0xff;
  31   1              while(1)
  32   1              {
  33   2                      LED1 = K1;//K1端接地,当按下K,P0^0变为0(低电平)
  34   2                      LED2 = K2;
  35   2                      if(K3 == 0)
  36   2                      {
  37   3                              while(K3==0);//按着k3不放,就循环。等待,什                                                    // 么也不干,一旦放开,继续执                                                      // 行;
  38   3                              LED3 =~ LED3;
  39   3                      }
  40   2                      if(K4 == 0)
  41   2                      {
  42   3                              while(K4 == 0);
  43   3                              LED4 =~ LED4;
  44   3                      }
  45   2                      delayMS(10);
  46   2              }
  47   1            
  48   1      }

        理解if(K3 == 0)
              {
                  while(K3 == 0);
                  LED3 = LED3;
               }


一旦K3 == 0 也就是if 的条件为true,那么必须把if里面的所以东西执行完。

  类比c语言:if(k == 0){
                          k=9;//虽然这步k 已经是9 了,但是还是要把下面的表达式子                               //  执行完
                          led = 1;
                          }

没有评论:

发表评论