智能车制作

标题: 这个程序不知道那里出了问题,求解!! [打印本页]

作者: SHine。。    时间: 2018-1-19 09:54
标题: 这个程序不知道那里出了问题,求解!!

预期效果是单片机上数码管依次显示0~F,仿真也没问题,但单片机上就只显示数字0.
#include<reg52.h>

typedef unsigned int u16;
typedef unsigned char u8;

u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                                        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay()
{
        int i;
        for(i=0;i<50000;i++);
}
void main()
{
       
        while(1)
        {
                u8 j=0;
          for(;j<16;j++)
                {
                        P1=smgduan[j];
                  delay();
                }
        }
       
}

作者: 神车名为GTR    时间: 2018-1-19 12:19
本帖最后由 神车名为GTR 于 2018-1-19 12:22 编辑

delay函数里i的范围不对

不过这个错误应该不是问题所在…………
还有就是你那个数组里只有16个数,为什么定义数组大小为17呢?

作者: SHine。。    时间: 2018-1-22 19:24
神车名为GTR 发表于 2018-1-19 12:19
delay函数里i的范围不对

不过这个错误应该不是问题所在…………

谢谢,那个是把int i ;改成unsigned int i;就可以了
是i的范围出错了。
至于17 ,改成16 好些,先前我可能是输错了。





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2