为什么我这程序下到板子上按下键盘数码管数字不断快速...

2019-07-16 04:32发布

为什么我这程序下到板子上按下键盘数码管数字不断快速无规律变化?求大哥大姐帮忙看一下,无限感激
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
1742929082
2019-07-16 08:19
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit LE1=P2^0;
sbit LE2=P2^1;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar keyvalue,num,shi,ge;
void delayms(uint);
void display(uchar,uchar);
keyhadle();
keyscan()
{
  P3=0xff;
  if((P3&0xff)!=0xff)
  {
    delayms(10);
    if((P3&0xff)!=0xff)
    {
       keyvalue=(P3&0xff);
    }
  }
}
void main()
{
  while(1)
  {
     keyscan();
         delayms(10);
         keyhadle();
          delayms(10);
         display(shi,ge);
          delayms(10);
  }

}

void display(uchar shi,uchar ge)
{
  LE1=1;
  P1=0xfe;
  LE1=0;
  P1=0xff;
  delayms(30);
  LE2=1;
  P1=table[shi];
  LE2=0;
  

  LE1=1;
  P1=0xfd;
  LE1=0;
  P1=0xff;
  delayms(30);
  LE2=1;
  P1=table[ge];
  LE2=0;

}

keyhadle()
{
  switch (keyvalue)
  {
     case 0x7f:
         num--;
     shi=num/10;
     ge=num%10;
         return shi,ge;
     break;

     case 0xf7:
          num++;
     shi=num/10;
     ge=num%10;
         return shi,ge;
     break;
  }
  if(num==60)
       num=0;
}
void delayms(uint xms)
{
  uint i,j;
  for(i=xms;i>0;i--)
     for(j=110;j>0;j--);
}

一周热门 更多>