C51的模块化设计方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C51的模块化设计方法

C51的模块化设计方法

一个大的单片机程序往往包含很多模块,我是这样组织的:1、每一个C源文件都要建立一个与之名字一样的H文件(头文件),里面仅仅包括该C文件的函数的声明,其他的什么也不会有,比如变量的定义啊等等不应该有。

2、建立一个所有的文件都要共同使用的头文件,里面当然就是单片机的管脚使用的定义,还有里面放那些需要的KEIL系统的头文件,比如#i nclude,#i nclude等等,把这个文件命名为common.h,或者干脆就叫main.h

3、每个C源文件应该包含自己的头文件以及那个共同的使用的头文件,里面还放自己本文件内部使用的全局变量或者以extern定义的全局变量

4、主文件main.c里面包含所有的头文件包括那个共同使用的文件,main.c里面的函数可以再做一个头文件,也可以直接放在文件的开头部分声明就可以了,里面一般还有中断服务程序也放在main.c里面

5、对于那些贯穿整个工程的变量,可以放在那个共同的使

用的头文件里面,也可以用extern关键字在某个C源文件里面定义,哪个文件要使用就重复定义一下

6、建立工程的时候,只要把C源文件加到工程中,把H文件直接放到相应的目录下面就可以了,不需要加到工程里面。

第一章概述

本手册介绍ASM51宏汇编器及用汇编语言开发MCS-51系列单片机软件的过程。本章概述ASM51宏汇编器及用法。

1.1 模块化程序设计

ASM51宏汇编器允许用户以模块方式编程,以适应用户模块化的程序设计。模块是具有相对独立功能的程序,它能独立进行汇编或编译。模块化程序设计是将一个大的或复杂的程序分成小的功能模块,每个模块程序单独编写、汇编和调试,最后再将这些模块连接起来,形成一个完整的用户程序。这样做比单块程序更易编写、调试和修改。

模块程序的开发只需根据模块的输入及输出定义,按其所需的输入并检查其输出以校核模块的正确性。由于程序具有良好的模块接口,可以把问题限定在模块内,一旦识别出有毛病的模块,解决这个问题就相当简单了。当每个模块都测试完毕即可将各模块连接起来,最后再测试全模块。

模块化程序的另一个好处是程序共享,即一个模块中的程序

可以被其他模块引用。由于模块化程序是可重新定位的,因而也就允许在满足其输入及输出要求是被调用。

1.2 MCS-51模块程序的开发过程

本节简要讨论使用可重定位的汇编器(ASM51),连接/重新定位程序(RL51)及代码转换程序(OH)来开发程序的过程。

1.2.1 段、模块及程序

段是一块程序代码或数据存贮器。段是可重新定位的或绝对的。一个可重新定位的段有一个名字、类型及其属性。具有相同段名,但在不同模块的各个段,将由RL51把它们合并在一起。绝对段没有名字因而也不能与其它段结合。

一个模块有一个或多个段。模块有用户指定的名字。模块的定义决定局部符号的作用域。一个目标文件有一个或多个模块。

把全部输入模块的所有绝对的及可重新定位的段连接起来,最后能形成单一的绝对模块,即完整的用户应用程序。

1.2.2 源程序编辑

完成上述模块化设计后,使用文本编辑器编写源程序。若在开发过程中检测到错误,再回到文本编辑器以修改源程序。

1.2.3 汇编

宏汇编器(ASM51)把源程序翻译成目标代码产生一个目标文件(当至少有一个输入段是可重新定位的段时称为可重新

定位的目标文件,否则是绝对的目标文件)以及表明汇编结果的一个列表文件。当ASM51的启动中有DEBUG控制项的,该目标文件将包含符号表及其他符号调试的信息。

汇编器能以可重新定位的目标代码格式产生各目标文件。不过,如果该模块仅有绝对段而无外部访问,形成的该目标文件是绝对的。

列表文件提供的正常记录既有源程序又有目标代码。汇编器也在该列表文件中提供语法及其它出错的诊断信息。例如,为一条仅能使用八位值的指令规定一个16位值,汇编器会指出该值超出了范围。此外,也可以把一个符号表加到列表文件后面,该符号表列出全部符号及其属性。

1.2.4 连接及重新定位

在对程序的各个模块汇编之后,用RL51连接各目标模块文件。RL51程序通过把具有相同段名及类型的各段连接起来,并为重定位段分配相应的绝对存贮器。RL51也解决所有模块间的访问。RL51输出一个绝对模块文件和一个连接/定位过程的列表文件。

此主题相关图片如下:

图1-1 汇编程序与连接/重新定位程序的输出

1.3 开发MCS-51汇编程序过程

*FILTER.EXE 过滤程序

过滤源程序文件,使其编辑格式符合AEDIT格式。

*ASM51.EXE 汇编程序

对MCS-51源文件汇编。源文件扩展名推荐使用.ASM 或.A51,输出文件产生目标文件.OBJ和列表文件.LST。*RL51.EXE 连接定位程序

将多个浮动目标文件连接定位成一个绝对目标文件,输入文件为.OBJ文件或库.LIB文件。输出用TO指定生成.ABS,同时也产生.M51符号文件。

*LIB51.EXE 库管理程序

将调试好的模块装入库中,使之可以被共享,提高调试效率。*OH.EXE 十六进制格式目标代码转换

将.ABS绝对目标文件代码转换成.HEX文件。

第一章完

求助,生成Keil c51的库文件

尝试把一些函数编译成库文件,一直失败,而且找不到这方面的资料

我的步骤:

1.项目中选择生成.lib文件

2.编译编辑好的函数

3.把生成的.lib文件拷贝到keil默认的/lib/文件夹下面,或者

是保留在原来的文件夹下面

4.把头文件放进/inc/文件夹下面

5.在其他项目中包含头文件

答:把生成的.lib加入你的工程就行了。

关于c51模块化设计的一些建议:

不要在主程序中写入过长的代码;

B 为每个子程序编写头文件;

C 将相似功能的子程序写在同一个源文件里。

子程序调用方法:

方法A:将各个子程序保存为*.c,声明函数后调用;

方法B:包含头文件调用。

百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网,您的在线图书馆

相关文档
最新文档