我的这个程序为什么按键不起作用?我的数码管是分开的,用了两组 I/O口。 就是仿真的时候它直接就开始倒计时了。按键不管用。谢谢大神帮助
单片机源码:
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- uint i,j,m,n,flag1,flag2;
- sbit key_1 = P1^0;
- sbit key_2 = P1^1;
- uchar code aa[]={ 0x3F, //"0"
- 0x06, //"1"
- 0x5B, //"2"
- 0x4F, //"3"
- 0x66, //"4"
- 0x6D, //"5"
- 0x7D, //"6"
- 0x07, //"7"
- 0x7F, //"8"
- 0x6F //"9"
- };
- void delay(uint z)
- {
- uint x,y;
- for(x = z; x > 0; x--)
- for(y = 114; y > 0 ; y--);
- }
- void show()
- {
- for(i = 9;i<10;--i)
- {
- for(j = 9;j<10;--j)
- {
- P3 = aa[j];
- P2 = aa[i];
- delay(250);
- }
- }
-
- }
- void key()
- {
- if(!key_1)
- {
- delay(10);
- if(!key_1)
- {
- flag1 = 1;
- }
- }
- if(!key_2)
- delay(10);
- if(!key_2)
- {
- flag2 = 1;
- }
- }
- void main()
- {
- while(1)
- {
- P3 = P2 = 0x00;
- key();
- if(flag1 = 1)
- {
- show();
- key();
- if(flag2 = 1)
- {
- flag1 == 0;
- break;
- }
- }
- if(flag2 = 1)
- {
- while(1)
- {
- i = m;
- j = n;
- P3 = aa[n];
- P2 = aa[m];
- key();
- if(flag1 = 1)
- {
- flag2 == 0;
- break;
- }
- }
- }
- }
- }
复制代码
|