又有几天没有跟咱们碰头啦,真真是有点极为牵挂呢。在上一帖中,我向咱们简略的解说了运用单片机模块化编程给咱们带来的优点。而在实际作业场合,不论是“攻城狮”们仍是“程序猿”们,也不论是软件规划仍是硬件规划,模块化的概念也是咱们常常或许说是有必要运用的思想了。下面针对咱们的51单片机课程的学习,详细给咱们讲讲怎么将模块化编程这一概念运用到单片机实战傍边去。仍是以咱们十分之了解的流水灯为例进行解说吧。(版主下文中敞开严厉教育方式,上课咱们不要说话,上厕所和有问题的请先举手暗示。)
(一)怎样运用模块化编程树立工程
下面以完结一个简略的LED流水灯作为实例进行详细解说。咱们都知道,要想完结简略的LED流水灯(这儿运用延时函数,而不运用定时器中止法),咱们有必要要有以下函数:延时函数、LED初始化函数、和LED流水灯完结函数,这三大类函数。那么,咱们怎样以模块的方式来运用这些函数呢。下文中作者选用了图文并茂的方式进行剖析,这真真是极好的~
(二)LED流水灯例程
1、首要运用Keil uVision新建工程,这儿我选用的是Keil uVision4
2、保存创立的工程
3、挑选所运用的芯片
4、点击ok后,在弹出的对话框中挑选“否”
5、新建文件,用以修改函数和头文件
6、将新建的这些文件别离重命名并保存
7、将xxx.C的文件添加到作业组中。
8、当完结以上步奏之后,咱们就能够进行详细的函数编写了。关于怎么编写一个.C的C言语文件和一个.h的头文件,下面我来详细阐明。首要以主函数main.c为例。如下图:
咱们能够看到,这个流水灯的主函数main.c假如用模块化编程的方法来完结的话,洁净整齐了许多。少了咱们常见的相关的延时函数delay();以及对uint和uchar的宏界说。且在主函数中,直接运用了LED_init();和LED_display();这两个函数。而咱们知道,要想在主函数中运用一个子函数,有必要得在主函数的前面临这几个子函数进行声明,但是本段代码中并没有呈现相关的句子。取而代之的是,在程序段第二行,多了一句#include “LED.h”,这一句话又有什么样的特别功用呢?下面让咱们来研究一下LED.c和LED.h的庐山真面目。
9、LED.c和LED.h的编写
从LED.c这个C文件中,咱们能够看出详细对LED_init();和LED_display();函数怎么完结,在这个文件中有着详细的描绘。那么问题来了~~LED.c和main.c之间是怎样发生联络的呢?换句话说,当咱们在别的一个文件中需求调用其他文件傍边的某个函数的时分,那么咱们该怎么做呢?要想搞清楚这个问题,是时分请出LED.h这位大神了。一般来讲xxx.h格局的文件为头文件,头文件供给了程序内函数被其他函数所调用的接口。咱们也能够把他称为一份“接口描绘文件”。