admin 管理员组文章数量: 887021
2023年12月24日发(作者:github 网站)
单片机C语言学习之模块化编程完结篇
单片机C语言学习之模块化编程
单片机模块化编程是针对编写容量较大的程序的一种编程方法,这种编程会更好的管理自己所建的工程文件。下面是模块化编程的一般步骤:
1.新建工程文件夹(如:C:模块化编程),具体步骤略。另外在此文件夹下新建四个文件,分别命名为output、src、inc和listing。
2.新建工程(直接命名为模块化编程并保存在工程文件夹下),具体步骤略。
3.设置Target
Options对话框
在Target窗口下做出如下图1、图2修改与设置。
图1
图2
之后还将做出如下步骤(图3、图4):
图3
图4
4.设置Components对话框
将图6的两个红色箭头处改为图7那样(也可根据个人的情况来命名),如果想新建或删除已有的文件,可以点击1,2位置来进行新建或删除。
图5
之后弹出图6所示的界面。
图6
5.新建源文件(.c文件和.h文件)
下;在建其他.c文件(如delay.c、led.c),将它们保存在src文件夹下;最后建.h文件(如delay.h、led.h、common.h),将它们保存在inc文件夹下。
6.添加源文件(.c文件)到工程
具体方法如下图:
先建main.c文件,直接将其保存在工程文件夹(C:模块化编程)
图8
图9
添加成功后可以看到左栏如下图所示:
图10
图10
那么接下来应该怎样在里面编写源程序就是非常关键的问题了。.c文件一般是用来放函数和定义的变量的,如主函数放在main.c中,延时函数放在delay.c中,.h文件是对各个模块的声明,也就是对相应的函数进行封装,在封装的过程中不能包含任何实质性的函数代码。如用模块化编程来编写一个简单的单向流水灯程序,需要新建main.c、delay.c和led.c三个源文件以及common.h、delay.h和led.h三个.h
文件。具体代码如下:
//main.c文件
#include
#include"led.h"
//包含该头文件,是因为主函数调用了流水灯函数
void main()
{
led_flash();
//调用流水灯函数
}
//delay.c文件
#include"delay.h"
void delay(uintz)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//led.c文件
#include"led.h"
uchar temp;//定义一个字符型的变量
void led_flash()
{
temp=0xfe;
P1=temp;
while(1)
{
temp=_crol_(temp,1);//循环左移
delay(1000);//延时约1000ms
P1=temp;
}
}
//common.h文件
#ifndef_COMMON_H_
#define_COMMON_H_
typedef unsigned int uint;
//宏定义
typedef unsigned char uchar;
//宏定义
#endif
//delay.h文件
#ifndef_DELAY_H_
#define_DELAY_H_
#include"common.h"
//由于delay.c文件中用到了宏定义uint,所以在这里要包含
common.h
extern void delay(uint z);
#endif
//led.h文件
#ifndef _LED_H_
#define _LED_H_
#include"delay.h"
//包含delay.h是由于led.c文件调用了delay()函数
#include
//在这里包含51头文件是因为led.c中用到了P1口
#include
//包含循环移位的头文件
extern void led_flash();//在头文件中声明函数需冠以extern关键字
#endif
通俗的讲,一个模块化程序里面包含硬件驱动模块和软件功能模块。比如上面的例子里面led.c文件是用来驱动(可以理解为点亮)LED灯的。像这样的模块属于硬件驱动模块。而main.c是用来调用各个子函数的;delay.c是用来延时的。这些模块没有与之对应的硬件模块,只是起特定的功能,因此它们属于软件功能模块。
当上面所有的工作都做好了之后,我们开始编译,但发现了许多错误,如下图:
图11
出现这些错误的原因是我们没有完成源文件路径的添加,具体添加方法如下:
图12
图13
图14
图15
接着便可生成.HEX文件了。
完成上述路径的添加,在编译源文件,就不会出现上面的错误了,这便是一个简单的模块化编程实例。实际中遇到这样一个程序并不需要模块化编程,因为它使编程的流程变得更加复杂了。但模块化编程确实有很大用处,当我们遇到的问题比较复杂时,要编写的程序的量也相对较大,这时模块化编程便是手中的一把利器,它会为你开辟一条宽敞而光明的大道。
版权声明:本文标题:单片机C语言学习之模块化编程完结篇 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1703430184h451022.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论