标题: 关于单片机按键程序问题 [打印本页]

作者: 摇头玩    时间: 2021-6-5 11:32
标题: 关于单片机按键程序问题
这是四个按键的单片机程序,其他三个按键执行完程序后都保持常亮,为什么第四个按键(k4)的程序执行完后没有保持全亮?
我该怎么改让每个的程序执行完后都保持全亮?
  1. #include <REGX52.H>
  2. sbit k1=P3^0;
  3. sbit k2=P3^1;
  4. sbit k3=P3^2;
  5. sbit k4=P3^3;
  6. void y(int t)               
  7. {
  8.         while(--t);               
  9. }
  10. code smg[]={0xe7,0xc3,0x81,0x00,};
  11. code xx[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,//8
  12.                                          0x7e,0xbe,0xde,0xee,0xf6,0xfa,0xfc,//7
  13.                                          0x7c,0xbc,0xdc,0xec,0xf4,0xf8,0x78,0xb8,//8
  14.                                          0xd8,0xe8,0xf0,0x70,0xb0,0xd0,0xe0,0x60,//8
  15.                                          0xa0,0xc0,0x40,0x80,0x00,};//5

  16. void main()
  17. {
  18.         char m;
  19.         char i;
  20.         while(k1==0){P0=0x5b;y(60000);//左移
  21.         P2=0xfe;
  22.                 for(i=0;i<8;i++)
  23.                 {
  24.                 y(6000);
  25.                         P2=P2<<1;
  26.                 }
  27.         }
  28.         
  29.         while(k2==0){P0=0x06;y(60000);//右移
  30.                 P2=0x7f;
  31.                 for(i=0;i<8;i++)
  32.                 {
  33.                 y(6000);
  34.                         P2=P2>>1;
  35.                 }}
  36.         //k3=0;
  37.         while(k3==0){P0=0x4f;y(60000);
  38.         P2=0xff;
  39.                 for(m=0;m<4;m++)
  40.                 {
  41.                 y(6000);
  42.                         P2=smg[m];
  43.                 }}

  44.         while(k4==0){P0=0x66;y(60000);//叠加
  45.         P2=0xff;
  46.                 for(i=0;i<36;i++)
  47.                 {
  48.                 y(6000);
  49.                         P2=xx[i];
  50.                 }
  51.         }
  52. }

复制代码

作者: xianfajushi    时间: 2021-6-5 17:17
测试没发现问题




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1