微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 估计是延时出问题了!

估计是延时出问题了!

时间:10-02 整理:3721RD 点击:
用一位数组编写了个流水灯程序,开始一直出错误,看了一下I/O口的状态,确实有问题:
#include<reg51.h>
#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<reg51.h>
#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);
                }
        }
}
改过以后,运行是没问题了,可就是搞不明白上边哪个问题出哪了!希望有人指点指点!谢谢

for(j=110;j>0j--);
你确定这个函数通过编译了?

是的,编译没有错误!

不可能没有错误。for(j=110;j>0j--);,,,第二、三个表达式之间缺少一个分号。

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top