自己做了个简单的两位数码管按键计数;效果不太好,按键时十位数码管一闪一闪的,晃眼。应该是程序问题。发出来大家看看。下面是程序:
#include
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴数码管0~9段码
***it K1=P1^6;
***it K2=P1^7;
void delayms(uint);
void key();
void display();
uchar num;
/********主函数**********/
void main()
{
while(1)
{
key();
display();
}
}
/*******按键函数*******/
void key()
{
if(K2==0)
{
delayms(10);
if(K2==0)
{
if(num==0)
num=100;
num--;
while(!K2);
}
}
if(K1==0)
{
delayms(10);
if(K1==0)
{
num++;
if(num==100)
num=0;
while(!K1);
}
}
}
/******延时函数******/
void delayms(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
/**********显示函数**********/
void display(uchar shi,uchar ge)
{
shi=num/10;
ge=num%10;
P3=0xfe;
P2=table[shi];
delayms(5);
P3=0xfd;
P2=table[ge];
delayms(5);
}