模块化编程
(keil)
前言:看过小编前段时间上传的那份有关C51程序书写,介绍#include指令两种写法的区别和使用typedef声明新类型名等方面知识的文档,可能会对#include 指令的两种写法不是很明白。比如,什么时候适合用“#include<>”,什么时候又适合用“#include""”。本次小编将通过介绍如何在keil软件里面进行模块化编程来详细说明。
为什么要进行模块化编程:
一般而言,一个小程序只包含一个源程序文件,在这个源程序文件中又包含若干个函数(其中有一个是main函数)。刚开始写程序,很多读者在keil里面
编程,几乎都是一个程序一个源程序文件(小编刚开始写程序也是一样滴)。
当然,刚开始写的程序都是些小程序,所以进行模块化编程也没这个必要。不过随着编程者知识的积累,当尝试着去写大程序时就会发现,当程序规模较大时,所包含的函数的数量较多,如果把所有的函数都放在同一个源程序文件中,则此文件显得太大,不便于编译和调试。而且有时连自己都会被弄得稀里糊涂的,那就更不用说把程序拿个别人看了。所以为了便于调试和管理,可以使一个程序包含若干个源程序文
件,每个源程序文件又包含若干个函数。(一个源程序文件就是一个程序模块,即将一个程序分成若干个程序模块。)
接下来小编将通过介绍“数码管模拟时钟”这个程序来给大家详细的介绍三种模块化编程方法:
(提示:此次小编介绍的这三种模块化编程方法相互之间是存在着一定的联系的,所以读者最好按照从前及后的顺序浏览,免得看到后面的内容时会很模糊。另外,虽然文章篇幅很长,但信息量不多,需要注意的知识点可能“藏在了”某些不起眼的地方。这点小编今后会逐渐完善。此外,keil版本为UV4,与UV5的不同文中会具体细节具体说明。)
方法一:一个“.c”文件对应一个“.h”文件。
步骤一:(建立源程序文件)
新建一个工程后,我们新建一个源程序文件,保存时我们不能像往常那样直接保存在之前建的那个文件夹里面,而是在之前建的那个文件夹里再建一个文件夹。新建的这个文件夹是用来专门放“.c”“.h”文件的,所以我们就给它命名为“ch”(或其它合法文件名)。如下图c51中字符串函数
图1
然后进入刚新建的这个“ch”文件夹,把要保存的“.c”或者“.h”文件保存在这里面。如下图
图2
刚我们保存的是一个“.c”文件,然后我们按照“数码管模拟时钟”需要的几大模块(主函数、初始化函数、显示函数)再新建几个源程序文件,按照刚才的方法依次保存在“ch”文件夹里面。下图中小编又新建和
保存了两个“.c”源程序文件,及其对应的“.h”文件。如下图
图3
图4
其中“.h”文件与“.c”新建和保存方法一样,唯一不同就是把“.c”中的“c”改为“h”。这样我们就完成了第一步,接下来我们就开始第二步。(打字好累啊,还有那么多)
步骤二:(对各类工程目录文件进行分类——UV5自动设置生成故不需要此步)
首先,点击工具栏类似于一个魔法棒的按钮。如下图
图5
以前我们写程序都是在检查程序没错误后,才点击此按钮,把生成hex文件选项勾上。这里我们可以“顺便”提前把这个选项勾上,就可以避免写完程序后总是忘勾此选项了。之所以称为顺便,是因为我们点击这个按钮的主要目的不是为了去勾上hex文件生成选项,而是为了在编译的时候让各类工程目录文件进行自动分类。比如,输出类文件归类在一个文件夹里,清单类文件归类在一个文件夹里。具体操作如下:
点击进入后,我们点击对话框里面“output”这个按钮。然后勾上hex文件生成选项。如下图
图6
【说明:以下两步在UV5版本不需要手动操作,软件会自动设置并生成分类文件。如图13】
然后我们点击“Select Folder for Objects”按钮。如下图
图7
出现一个对话框(图8)。我们点击新建文件按钮(或者在空白处单击右键新建一个文件夹),就在此对话框里新建了一个文件夹。由于我们开始点击的是“Output”,我么就给此文件夹命名为“Output”(或其他合法文件名)。重命名后一定要记得进入这个文件夹,单击“OK”自动退出才行(图9),否则工程目录文件中的输出类文件(这里就指出了,此文件夹是用来装输出类文件,比如说hex文件)在编译时是不会被自动分类到里面的。
图8

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。