微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 通常延时函数在前还是主函数在前?

通常延时函数在前还是主函数在前?

时间:10-02 整理:3721RD 点击:
在写51程序的时候,通常是延时函数在主函数前还是后面?我是刚学的单片机,也许这个问题有点菜鸟,教程里貌似都是延时函数在主函数前,下面是刚写的一个流水灯的程序,有个问题想请教大家的是,延时函数可以写在主函数后面吗?
所写的程序如下:
#include <reg52.h>
#include <intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;
void delay(u16 t)
{
        u16 i,j;
                for(i=t;i>0;i--)
                        for(j=400;j>0;j--);
}
void main()
{
                u8 temp;
                temp=0xfe;
                while(1)
                        {
                        P0=temp;
                        delay(250);
                        temp=_crol_(temp,1);
                        }
}

这里面延时函数可以写在主函数后面吗?如果延时函数写在主函数后面,要怎么写,又该怎么声明?请高手多多指教,谢谢!

可以写在后面,但是必须在主函数前先声明一下,即void delay(u16 t);其他子函数的用法也是一样的。可以写在前面,也可以现在主函数前先声明,再写在主函数后面。

写在后面时候程序要怎么写呢?
见谅!这个问题确实有点菜鸟,小弟才学这个一个多星期,对程序的结构和写程序的步奏还不是很清楚;程序是这样吗?但改过之后编译通不过,又该怎么修改呢?谢谢!
#include <reg52.h>
#include <intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;
void delay(u16 t)
void main()
{
                u8 temp;
                temp=0xfe;
                while(1)
                        {
                        P0=temp;
                        delay(250);
                        temp=_crol_(temp,1);
                        }
}
{
        u16 i,j;
                for(i=t;i>0;i--)
                        for(j=400;j>0;j--);
}

#include <reg52.h>
#include <intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;
void delay(u16 t);//申明好像需要冒号!
void main()
{
                u8 temp;
                temp=0xfe;
                while(1)
                        {
                        P0=temp;
                        delay(250);
                        temp=_crol_(temp,1);
                        }
}
{
        u16 i,j;
                for(i=t;i>0;i--)
                        for(j=400;j>0;j--);

问题已经解决了,已经搞清楚了
子程序写在主函数后声明的时候 void delay(u16 t);要加这个分号,没错的
还有就是就算写在主函数后面,还是要重新把子函数写出来,把程序编译了一下试过了,没有写子函数编译时会出现错误提示,不过重写子函数不需要加那个分号:
#include <reg52.h>
#include <intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;
void delay(u16 t);
void main()
{
                u8 temp;
                temp=0xfe;
                while(1)
                        {
                        P0=temp;
                        delay(250);
                        temp=_crol_(temp,1);
                        }
}
void delay(u16 t)
{
        u16 i,j;
                for(i=t;i>0;i--)
                        for(j=400;j>0;j--);
}

我那个分号你可能没看清楚

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

网站地图

Top