锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

如何在KEIL中编写模块化的C程序

时间:2024-05-22 19:07:10

模块化编程是C相对汇编的重大优势。看书看了半天,没能实现周立功的的那个复杂的代码。自己在网上百度了下,按步骤要求可以实现,即模块化的代码在PROTUES仿真时成功的。 中的模块化程序写法在使用 KEIL 的时候,我们习惯上在一个 .c 的文件中把自己要写的东西按照自己思路的顺序进行顺序书写。这样是很普遍的写法,当程序比较短 的时候比如几十行或者一百多行,是没有什么问题的。但是当程序很长的时候,比如你要用到 显示数据,就有几个 LCD 相关的函数,然后你 想在 LCD 上显示温度,那么就要有 DS18B20 相关的操作,这又有几个相关的函数,如果你还想加上去 DS1302 的时间显示功能,那么又要多很多函 数。这样的话一个程序下来几百行是很正常的事情,对于自己写的程序可能在自己的脑海中比较清晰,不会太乱,但是当把自己写的程序交给 别人来看的时候,别人往往会看的云里雾里,经常会看着看着就不知道你写的是什么了。


如果大家写过类似电子钟这样的比较长的程序的话,肯定在网上下载过相关的程序看过,有没有觉得别人的程序看起来让自己觉得很郁闷呢? 呵呵。现在我们来介绍一种在KEILC语言的模块写法。这样的写法其实也是很好用的,一些稍长的程序中经常见到。结构如下图所示:
是不是看起来不陌生?这就对了。其实如果学过PC机的C语言的话,对多文件的编译比较熟悉那么这个就不是什么问题了,因为这基本上是相同 的。如果您是高手对此很熟悉的话,那么请略过本文;如果您是对此不是很熟悉并对此有点兴趣,那么本文或许对您有所帮助。如果在本文中有讲的不对的地方请跟帖提出。或者在我的主页给我留言进行交流。

为这个教程不大容易用文字的形式来讲清楚,如果用视频来做的话效果应该好的多,但是俺没这个条件(俺普通话不好怕吓到大家,哈哈) 。可能一帖会写不完,另外打字是件很痛苦的事情,所以这个请见谅。下面正式开始。

我们主的目的是学习模块化的写法,所以功能是次要的,熟悉了这个写法以后功能是大家自己控制的,我们现在将以LED灯的控制为例子讲起。

这样,我们先建立三个.c的文件,分别命名为main.cdelay.cled_on.c,并将在建立文件的时候尽量做到看到文件名即能看出程序的功能, 这样的话比较直观,不容易混乱。然后将这三个文件都添加进工程。(这个不能不会吧?)

delay.c中我们加入如下代码:

void delay1s()
{

unsigned int m,n;
for(m=1000;m>0;m--)
for(n=20;n>0;n--);

}

当然这个延时函数的实际延时时间并不是一秒,我们暂且不用管它,知道他是起延时作用的就可以了。
led_on.c这个文件中我们加入如下代 码:

void led_on()
{

P0=0x00;
delay1s();
P0=0xff;
delay1s();

}

然后在main.c函数中我们添加如下代码:

void main()
{

led_on();

}

这个程序的功能简单的很,就是实现LED的闪烁。

下面问题来了,就是如何将这三个C文件关联起来。

其实在单个.c文件的程序中,我们在写程序的时候第一件事就是写上#include ,如果你是一个好学者,你一定问过为什么要这样写一句话,要是你上过辅导班,老师一定跟你讲reg52.h是头文件,这句话的作用的把头文件包含进来。当然这是很正确的,你可以打开reg52.h ,看一

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章