单片机/MCUwilliam hill官网
直播中

lxfh2012

12年用户 120经验值
擅长:电源/新能源 模拟技术 EDA/IC设计
私信 关注
[文章]

估计是延时出问题了!!

用一位数组编写了个流水灯程序,开始一直出错误,看了一下I/O口的状态,确实有问题:
#include
#define uint unsigned int
#define uchar unsigned char
uchar  num;
uchar code table[]={
                                            0xff,0xfe,0xfd,0xfb,0xf7,0xef,
                                        0xdf,0xbf,0x7f,0xbf,0xdf,0xef,
                                        0xf7,0xfb,0xfd,0xfe,0xff
                   };
void delay(uint z)
{
        uint i,j;
       for(i=z;i>0;i--)
            for(j=110;j>0j--);
}
void main()
{
        while(1)
        {
                for(num=0;num<17;num++)
                {
                        P0=table[num];
                        delay(300);
                }
        }
}

程序就是这样的,I/O口的状态开始是乱的,我想是延时出问题了,但又搞不清楚具体是什么问题。然后把程序改成这样:
#include
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={
                                            0xfe,0xfd,0xfb,0xf7,0xef,
                                        0xdf,0xbf,0x7f,0xbf,0xdf,
                                        0xef,0xf7,0xfb,0xfd,0xfe
                   };
void delay(uint i)
{
        while(i--);
}
void main()
{
        uchar i=0;
        while(1)
        {
                for(i=0;i<15;i++)
                {
                        P0=table[i];
                        delay(30000);
                }
        }
}

改过以后,运行是没问题了,可就是搞不明白上边哪个问题出哪了!!希望有人指点指点!谢谢

回帖(4)

王祎博

2013-4-26 16:32:11
for(j=110;j>0j--);
你确定这个函数通过编译了?
举报

lxfh2012

2013-4-28 08:35:20
引用: wyb0104 发表于 2013-4-26 16:32
for(j=110;j>0j--);
你确定这个函数通过编译了?

是的,编译没有错误!!
举报

longdeng84

2013-4-28 11:19:55
不可能没有错误。。for(j=110;j>0j--);,,,第二、三个表达式之间缺少一个分号。
举报

lxfh2012

2013-5-2 13:36:05
引用: longdeng84 发表于 2013-4-28 11:19
不可能没有错误。。for(j=110;j>0j--);,,,第二、三个表达式之间缺少一个分号。 ...

那个是在往上写的时候忘了这个,在Keil中肯定不会有这样的问题!!关键这都不是要点!!!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分