导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→大虾帮我看看这个C51程序[newstary]

 *第14927篇: 大虾帮我看看这个C51程序

  
楼 主:newstary 2003年7月27日22:29
 大虾帮我看看这个C51程序
本小虾最近在用89C51制作一数字触发器,在做显示部分始终有问题存在,困扰多日,我把程序贴出来,大虾们帮我看看问题出在哪里
sbit WDI=P1^1;//max813LWDI输入
sbit first=P1^3;//三位LED显示的片选信号,高电平有效
sbit second=P1^4;
sbit third=p1^5;
//P2接LED数据线
void Delay1ms(uchar);//延时1ms函数

void main(void)
{
     uchar i,discode,k;
     i=0;
    while(1)
    {
           if(++i>  2)i=0;
           switch(i)
            {
               case 0 :
               first=1,second=0,third=0,k=1;
               break;
              case 1 :
              first=0,second=1,third=0,k=2;
               break;
              case 2:
              first=0,second=0,third=1,k=3;
               break;
               default : break;
          }
         discode=disTab[k];//disTab[]为显示段码表,未贴出,测试正确
        P2=discode;
        WDI=!WDI;
        Delay1ms(10);
    }
}
         现在出现的问题是虽然程序中使用了动态刷新LED,但是实际却只能显示最高位,百思不得其解,望大虾指点迷津

  
2楼:zhengjl 2003年7月28日15:09
 更改程序
sbit wdi=p1^1;//max813lwdi输入
sbit first=p1^3;//三位led显示的片选信号,高电平有效
sbit second=p1^4;
sbit third=p1^5;
//p2接led数据线
void delay1ms(uchar);//延时1ms函数

void main(void)
{
     uchar i,discode,k=0;
     i=0;
    while(1)
    {
          discode=distab[++k];//distab[]为显示段码表,未贴出,测试正确
           if(i++>  2) i=k=0;
          else{
           switch(i)
            {
               case 0 :
               {first=1;second=0;third=0;}
               break;
              case 1 :
              {first=0;second=1;third=0;}
               break;
              case 2:
              {first=0;second=0;third=1;}
               break;
               default : break;
          }
           delay1ms(10);
       p2=discode;
        wdi=!wdi;
        }
       
    }
}

  
3楼:zhengjl 2003年7月29日15:55
 更改程序
看错了请把下面两句语句:
  delay1ms(10);
  p2=discode;
对调为:
  p2=discode;
  delay1ms(10);

  
4楼:guest 2003年7月29日08:21
 更改的理由何在?
更改的理由何在?

>>>>>>对该主题发表你的看法

本主题贴数4,分页: [第1页]


[上一篇主题]:关于GAL

[下一篇主题]:请教大侠们,怎样才能将程序写进ram中啊?