这是四个按键的单片机程序,其他三个按键执行完程序后都保持常亮,为什么第四个按键(k4)的程序执行完后没有保持全亮?
我该怎么改让每个的程序执行完后都保持全亮?
- #include <REGX52.H>
- sbit k1=P3^0;
- sbit k2=P3^1;
- sbit k3=P3^2;
- sbit k4=P3^3;
- void y(int t)
- {
- while(--t);
- }
- code smg[]={0xe7,0xc3,0x81,0x00,};
- code xx[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,//8
- 0x7e,0xbe,0xde,0xee,0xf6,0xfa,0xfc,//7
- 0x7c,0xbc,0xdc,0xec,0xf4,0xf8,0x78,0xb8,//8
- 0xd8,0xe8,0xf0,0x70,0xb0,0xd0,0xe0,0x60,//8
- 0xa0,0xc0,0x40,0x80,0x00,};//5
- void main()
- {
- char m;
- char i;
- while(k1==0){P0=0x5b;y(60000);//左移
- P2=0xfe;
- for(i=0;i<8;i++)
- {
- y(6000);
- P2=P2<<1;
- }
- }
-
- while(k2==0){P0=0x06;y(60000);//右移
- P2=0x7f;
- for(i=0;i<8;i++)
- {
- y(6000);
- P2=P2>>1;
- }}
- //k3=0;
- while(k3==0){P0=0x4f;y(60000);
- P2=0xff;
- for(m=0;m<4;m++)
- {
- y(6000);
- P2=smg[m];
- }}
- while(k4==0){P0=0x66;y(60000);//叠加
- P2=0xff;
- for(i=0;i<36;i++)
- {
- y(6000);
- P2=xx[i];
- }
- }
- }
复制代码 |