此段程序可以實現按鍵計分,但是按下按鍵key0后,數碼管(共陰)1由0變?yōu)?。
但是其余數碼管也會同時閃爍,求解
#include <AT89X51.h>
#include <stdio.h>
sbit key0=P1^0;
sbit key1=P1^1;
sbit key2=P1^2;
sbit key3=P1^3;
sbit key4=P1^4;
sbit key5=P1^5;
sbit key6=P1^6;
sbit key7=P1^7;
sbit led0=P2^0;
sbit led1=P2^1;
sbit led2=P2^2;
sbit led3=P2^3;
sbit led4=P2^4;
sbit led5=P2^5;
sbit led6=P2^6;
sbit led7=P2^7;
unsigned char yi=0,er=0,san=0,si=0,wu=0,liu=0,qi=0,ba=0;
unsigned char code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//"0","1","2","3","4","5","6","7","8","9"
void display();
void delay(unsigned int);
void main(void)
{
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
IT0=0;
EA=1;
ET0=1;
EX0=1;
{
while(1)
{
EA=0;
if(key0==0)
{
delay(20000);
yi++;
}
// 羲壽0偌狟ㄛ1瘍杅鎢奪樓1
if(key1==0) /*羲壽1偌狟*/
{
delay(20000);
er++;
}
// 羲壽1偌狟ㄛ2瘍杅鎢奪樓1
if(key2==0) /*羲壽2偌狟*/
{
delay(20000);
san++;
}
// 羲壽2偌狟ㄛ3瘍杅鎢奪樓1
if(key3==0) /*羲壽3偌狟*/
{
delay(20000);
si++;
}
// 羲壽3偌狟ㄛ4瘍杅鎢奪樓1
if(key4==0) /*羲壽4偌狟*/
{
delay(20000);
wu++;
}
// 羲壽4偌狟ㄛ5瘍杅鎢奪樓1
if(key5==0) /*羲壽5偌狟*/
{
delay(20000);
liu++;
}
// 羲壽5偌狟ㄛ6瘍杅鎢奪樓1
if(key6==0) /*羲壽6偌狟*/
{
delay(20000);
qi++;
}
// 羲壽6偌狟ㄛ7瘍杅鎢奪樓1
if(key7==0) /*羲壽7偌狟*/
{
delay(20000);
ba++;
}
// 羲壽7偌狟ㄛ8瘍杅鎢奪樓1
display();
}
}
}
//晊喧滲杅
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--);
for(y=110;y>0;y--);
}
//珆尨滲杅懂珆尨1~8瘍腔杅趼
void display(void)
{
P2=0xfe;
P0=table[yi];
delay(2);
P2=0xfd;
P0=table[er];
delay(2);
P2=0xfb;
P0=table[san];
delay(2);
P2=0xf7;
P0=table[si];
delay(2);
P2=0xef;
P0=table[wu];
delay(2);
P2=0xdf;
P0=table[liu];
delay(2);
P2=0xbf;
P0=table[qi];
delay(2);
P2=0x7f;
P0=table[ba];
delay(2);
}
|