12864显示变量

2019-07-15 15:04发布

我这个程序是实现每次按键按一下  数字加一 并在12864上显示   可是每按下一次就会出现加几十减几十的现象   请大神帮我弄解决一下
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit EN=P3^4;
sbit RS=P3^5;
sbit RW=P3^6;
sbit PSB=P3^7;
sbit S=P3^0;
sbit du=P2^6;
sbit we=P2^7;
uchar num=0;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
    for(y=114;y>0;y--);
}
uchar keyscan()
{
  if(S==0)
  {
    delay(10);
        if(S==0)
        {
         while(!S)
          num++;
        }
  }
  return num;
}
void write_com(uchar com)
{
  RS=0;
  RW=0;
  EN=0;
  P0=com;
  delay(5);
  EN=1;
  delay(5);
  EN=0;
}
void write_date(uchar dat)
{
  RS=1;
  RW=0;
  EN=0;
  P0=dat;
  delay(5);
  EN=1;
  delay(5);
  EN=0;
}
void init()
{
  PSB=1;     //并口方式
  EN=0;
  RW=0;
  write_com(0x30);
  delay(5);
  write_com(0x0c);
  delay(5);
  write_com(0x01);
  delay(5);
}
void main()
{
  init();
  du=0;
  we=0;
  delay(10);
  while(1)
  {       
    keyscan();
    write_com(0x90+3);
    write_date(num/100+'0');
    write_com(0x90+4);
    write_date(num%100/10+'0');
    write_com(0x90+5);
    write_date(num%10+'0');
  }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。