[求助] 怎么让动态显示同时显示三位数

吴我样   2018-4-12 18:29 楼主
现在问题是前两位只是闪烁一下就没了然后最后一位一直亮着

#include
int flag,a;
sbit dula=P2^6;
sbit wela=P2^7;
char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07
,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void dispay(int a);
void delayms(int xms)
{
        int i,j;
        for(i=xms;i>0;i--)
         for(j=110;j>0;j--);
}
  void inti()
  {
        TMOD=0x20;
    TH1=0xfd;
        TL1=0xfd;
        TR1=1;
        REN=1;
        SM0=0;
        SM1=1;
        EA=1;
        ES=1;
  }

  void main()
  {
    inti();
          while(1)
        {
                 if(flag==1)
                 {
                          dispay(a);
                         flag=0;
                         ES=1;
                 }
        }
  }
  void dispay(int a)
  {
          int b,s,g;
        b=a/100;
        s=a%100/10;
        g=a%10;
        dula=1;
        P0=table[b];
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xfe;
        wela=0;
        delayms(1);
         dula=1;
        P0=table[s];
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xfd;
        wela=0;
        delayms(1);
         dula=1;
        P0=table[g];
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xfb;
        wela=0;
        delayms(1);

  }
  void ser() interrupt 4
  {
           RI=0;
           a=SBUF;
           flag=1;
  }

回复评论 (3)

点赞  2018-4-12 18:29
flag=0以后没下文了,可能是中断的问题
点赞  2018-4-12 21:37
引用: huo_hu 发表于 2018-4-12 21:37
flag=0以后没下文了,可能是中断的问题

删了flag=0果然可以了
厉害
点赞  2018-4-13 16:06
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复