昨天晚上调试啦很久没出结果帮帮忙看一下

[复制链接]
2947|11
 楼主| yaoyao1314 发表于 2013-4-3 09:32 | 显示全部楼层 |阅读模式
#include<reg52.h>
sbit DU = P2^6;
sbit WE = P2^7;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
void main(void)
{
unsigned int i,j,k;
while(1)
{
DU = 0;
DU = 1;
P0 =  0x06;
DU = 0;
P0 = 0xff;
WE = 1;
P0=0xfe;
     WE=0;
for(i=0;i<10000;i++);
DU=1;
    P0=table[0];
    DU=0;
    P0=0xff;
    WE=1;
    P0=0xfd;
    WE=0;
for(i=0;i<50000;i++);
  
for(K= 9;K>=0;K--)
{
DU = 0;
  DU = 1;
P0 = table[i];
DU = 0;
P0 = 0xff;
WE = 1;
P0=0xfe;
     WE=0;
for(j=0;j<50000;j++);
}  
}
}
代码如上 为什么while只循环一次呢 也就是说数码管只是从10显示到0 然后就不在重复啦?为什么啊  为什么
joyme 发表于 2013-4-3 09:53 | 显示全部楼层
代码是拷贝的还是敲上去的?
P0 = table[i]越界了,不知道是不是笔误
检查开门狗的配置,如果使能了就要喂狗
ytfdhb 发表于 2013-4-3 10:37 | 显示全部楼层
#include<reg52.h>
sbit DU = P2^6;
sbit WE = P2^7;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
void main(void)
{
    unsigned int i,j,k;
    while(1)
    {
        DU = 0;
        DU = 1;
        P0 = 0x06;    // 显示 “1”
        DU = 0;
        P0 = 0xff;
        WE = 1;
        P0=0xfe;
        WE=0;
        for(i=0;i<10000;i++);
  
        DU=1;
        P0=table[0];
        DU=0;
        P0=0xff;
        WE=1;
        P0=0xfd;
        WE=0;
  
        for(i=0;i<50000;i++); // 延时???延时多长时间
  
        for(K= 9;K>=0;K--)
        {
           DU = 0;
           DU = 1;
           P0 = table;    // 第一次执行 i == 50000 ,p0值是多少?
           DU = 0;
           P0 = 0xff;        
           WE = 1;
           P0=0xfe;
           WE=0;
           for(j=0;j<50000;j++);   // 延时???多长时间??
        }  
    }
}






一、代码缩进不规范,变量命名不规范
二、没注释
三、写代码思路比较混乱
四、写代码不细心
五、慢慢来,沉住气,先理清思路,最好先看一下例程,理解了例程以后再自己慢慢写
六、祝楼主学业进步,事事顺心^_^

 楼主| yaoyao1314 发表于 2013-4-3 11:57 | 显示全部楼层
谢谢楼上两位的帮助 确实有点乱 昨天也很晚啦我想把这个功能的跑出来可是就是不成功
#include<reg52.h>
sbit DU = P2^6;
sbit WE = P2^7;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
void main(void)
{
        unsigned int i,j,k;
        while(1)
        {
          
                //初始化锁存
                DU = 1;
                //段选显示1
                P0 =  table[1];
                DU = 0;
                //清空段选
                P0 = 0xff;
                //初始化位选
                WE = 1;
                //位选显示第一位
                P0=0xfe;
            WE=0;
                //延时
                 for(i=0;i<30000;i++);
                DU=1;
                //显示0        段选
            P0=table[0];
            DU=0;
            P0=0xff;
            WE=1;
                //位选显示第二个
            P0=0xfd;
            WE=0;
                 for(i=0;i<30000;i++);
                 /*以上显示10 一下显示9到0*/
                 for(k= 9;k>=0;k--)
                 {
                         DU = 0;
                         DU = 1;
                        P0 = table[k];
                        DU = 0;
                        P0 = 0xff;
                        WE = 1;
                        P0=0xfe;
                    WE=0;
                        for(j=0;j<30000;j++);
                 }        
        }       
}
 楼主| yaoyao1314 发表于 2013-4-3 16:47 | 显示全部楼层
大家都没遇到这情况吗?高人帮忙看看
xiaoqigai2 发表于 2013-4-3 17:21 | 显示全部楼层
k>=0;改成k>=1;就好了!

评分

参与人数 1威望 +1 收起 理由
wu_npu + 1 很给力!

查看全部评分

yiucing 发表于 2013-4-3 17:37 | 显示全部楼层
for(k= 9;k>=0;k--)
{
    ......
    //或者在这个循环最后加
    if(k == 0)
    {
        break;
    }
}
菜鸟同学 发表于 2013-4-3 17:47 | 显示全部楼层
for(K= 9;K>=0;K--)  // 一直死循环!K你定义的是unsigned int  0-65535
K>= 0 永远都成立! 你可以看看汇编是如何执行的就完全明白了!
 楼主| yaoyao1314 发表于 2013-4-3 18:14 | 显示全部楼层
感谢大家的帮助啊,成功啦!!谢谢今天长见识啦
ivan.21 发表于 2013-4-4 22:57 | 显示全部楼层
for循环里头为什么不用++呢,这样不容易出类似的错误啊。我就喜欢用++

评论

用--指令有,指令效率高,代码少; 51没有++的指令支持。  发表于 2013-4-4 23:20
芯华科技单片机 发表于 2013-4-6 16:05 | 显示全部楼层
平时在跑程序的时候多多动脑,一点一点的修正,结合演示的结果,来调整,这样进步很快的

评分

参与人数 1威望 +1 收起 理由
yaoyao1314 + 1

查看全部评分

moebius.ever 发表于 2013-4-6 17:48 | 显示全部楼层
学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

52

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部