我的這個程序為什么按鍵不起作用?我的數(shù)碼管是分開的,用了兩組 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;
- }
- }
- }
- }
- }
復制代碼
|