想学语言的模块化的同学可进来看看(以51单片机的模块化来讲解)

因为才刚刚接触程序半年,凭着本人有限的知识,只能从单片机来讲解这个模块化的相关知识.      
首先讲讲写这篇博客的初衷,我们第一学期寒假的时候,我们的寒假作业要求就是得用模块化编写,网上看到的一些资料感觉看不懂,找了些大神给我讲解了之后才感觉明白了,自己用的时候还出现了很多的错误.为了让后面的学弟学妹们好好理解模块化写的第一篇博客.

分模块的好处

首先,这是我在写万年历和温度传感器的时候,显然这是我经过收缩函数之后的程序

想学语言的模块化的同学可进来看看(以51单片机的模块化来讲解)

由上图可以看出,当我收缩函数的时候,代码已经到达了451行,而当我打开之后,函数就达到了上千行,你们想想,当你看着这一千多行的代码时,你能够方便的从中找出仅仅是一行的错误吗?这显然是不可能的.既然对于自己这个打代码的人都很难看得懂,更别说别人了!

而让我们来看看下面这个同样的程序
想学语言的模块化的同学可进来看看(以51单片机的模块化来讲解)


想学语言的模块化的同学可进来看看(以51单片机的模块化来讲解)

 


 想学语言的模块化的同学可进来看看(以51单片机的模块化来讲解)
想学语言的模块化的同学可进来看看(以51单片机的模块化来讲解)

怎么样,是不是看得容易了许多.对于学过51单片机的人来说,他能知道:
第一个模块是主函数模块,第二个模块是液晶显示和数码管显示模块,第三个是时间延时模块,第四个是温度传感器模块.
而对于没学过的人来说呢,看我的模块名称他也能知道第一个是主函数模块,第二个是和显示有关的模块,而第三个是和时间有关的模块,最后一个虽然他不知道,但他可以百度对吧,就可以知道这是和温度传感器有关的模块.
这样一看,整个程序就非常的清晰,每个人都能看懂你的程序在哪定义了些什么.而这对于每个人日后的工作来说是至关重要的.想要让别人能看懂你的代码,就要好好的规划自己程序的模块怎么划分,才能让别人看的简单.对于所有想要从事有关于计算机的职业的人,只要你不是那种万中无一IT大佬,你都不可能独自完成整个软件的程序设计,公司里都会把整个程序分成许多的模块,让每个人完成各自的模块,最后再由专门的人员整合起来.对于现在的我们来说,养成写程序分模块的习惯尤为重要.

接下来讲讲干货

首先你得有主函数的模块,(这个最后整合了之后再讲)然后是其他的模块.
先来讲讲分模块.开始你要建立一个工程,对于单片机来说,只要在工程文件下建立就
可以,像这样       想学语言的模块化的同学可进来看看(以51单片机的模块化来讲解)
在自己的工程文件下建立 .c 的文件就可以(名字用小写).

(对于c语言来说主模块和其它模块是不建到一起的,这个本人用的是VS2017而且学的时间不长,所以就是在这随口提一下.)

(以delay模块为例)

创建好了 .c 文件后,我们把.c文件添加进工程中,之后还需要在创建一个 .h 的文件(假如你的.c文件是delay.c那么你的.h文件必须为delay.h的文件,且这个文件要与.c的文件放在同一个文件夹中)类似以下这样

想学语言的模块化的同学可进来看看(以51单片机的模块化来讲解)


接下来就先讲讲.c的文件

想学语言的模块化的同学可进来看看(以51单片机的模块化来讲解)

首先要写的就是  #include"delay.h"   记住这个函数必须要有,它所添加的就是我们刚刚建立的那个.h的文件,通过这个函数我们把它们关联起来(其他的学过c语言的应该都知道,添加需要的库,恒定义,创建一些需要使用的函数)

接下来就是重点的.h文件

想学语言的模块化的同学可进来看看(以51单片机的模块化来讲解)

基本的写法就是

#ifndef  __(你所定义的.h文件的大写)_H__

#define  __(你所定义的.h文件的大写)_H__


这里的东西是你之前在.c文件中定义过的函数(记住不要全部复制,只需复制开头的函数)

#endif

想学语言的模块化的同学可进来看看(以51单片机的模块化来讲解)

大体上就是这样的,只需要复制开头的函数,不过切记,函数后面的分号千万千万千万别忘了

好了这就是一个时间的模块了,其它的模块也一样,接下来就到最重要的一步---整合

想学语言的模块化的同学可进来看看(以51单片机的模块化来讲解)

在main函数也就是主函数当中,当我们需要使用我们之前定义的函数的时候,我们就需要在开头把函数所在的文件添加进去,正如我所写的

#include"display.h"   #include"delay.h"     #include"de18b20.h"   

其余的就是与你的主函数写的程序相关的东西

其它模块的互相关联

其它的模块也可以像主模块那样关联起来的

想学语言的模块化的同学可进来看看(以51单片机的模块化来讲解)

就拿我上面这个ds18b20的.c文件来讲,在它的函数里是需要用到延时的函数的,而延时函数是定义在delay模块里的,因此我们需要添加delay的模块才能使用我们定义延时函数,所以就有了   #include "delay.h"


总结

第一次写博客,写得不好希望大家多多见谅,我会多看多学的,此博客也希望能给那些搞不懂单片机的分模块的方法的同学一些小小的帮助.