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

一个大的单片机程序往往包含很多模块,我是这样组织的:

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.2MCS-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模块化设计的一些建议:

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

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

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

子程序调用方法:

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

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


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

摘要:在目前各领域对于电能转换特别是高效变频装置存在迫切需求的背景下,在详细分析模块化的矩阵式变流器的拓扑结构、开关状态和工作原理的基础上,设计了一套矩阵式变流器的控制策略。采用编程实现了数字化控制,并利用PsIM仿真软...

关键字: 模块化设计 直接交交变流 变频器

北京2023年3月1日 /美通社/ -- 随着《中央企业合规管理办法》、《中小企业合规管理体系有效性评价》等一系列法律法规及指导性文件的发布,“合规”作为一个热点话题,频繁出...

关键字: SAAS 数字化 模块化设计 人工智能

单片机内部有很多的特殊功能寄存器,每个寄存器在单片机内部都分配有唯一的地址,一般我们会根据寄存器功能的不同给寄存器赋予各自的名称,当我们需要在程序中操作这些特殊功能寄存器时,必须要在程序的最前面将这些名称加以声明,声明的...

关键字: C51 数据类型 扩充定义

数据元(Data Element),也称为数据元素,是用一组属性描述其定义、标识、表示和允许值的数据单元,在一定语境下,通常用于构建一个语义正确、独立且无歧义的特定概念语义的信息单元。数据元可以理解为数据的基本单元,将若...

关键字: C51 数据类型

北京2022年12月9日 /美通社/ -- 边缘的急剧裂变,会引发整个系统的重建。当边缘计算风生水起,基础设施也必然随需而动。 根据IDC咨询的预测,未来几年,边缘算力的投资增速将远快于核心位置,到2025年,全球边缘...

关键字: 边缘计算 节点 模块化设计 系统架构

摘要:随着数控系统往总线化方向发展,数控系统与伺服驱动器间因总线协议而绑定。在机床动态性能不理想时,无法区分是数控系统运动控制上的原因,还是伺服驱动电机系统响应性的原因。为排除数控系统运动控制算法等的影响,将耦合问题解耦...

关键字: 嵌入式硬件 实时工业总线 模块化设计

摘要:风冷螺杆式冷水机组的机械结构均采用模块化设计,现介绍了模块化设计的定义与目的,并把机组的机械结构划分为几大核心模块:分析了零部件通用性指数和产品族通用性指数:各个模块与机组系统其他部件,通过标准接口连接,完成了风冷...

关键字: 空调机组 模块化设计 机械结构

▼点击下方名片,关注公众号▼欢迎关注【玩转单片机与嵌入式】公众号,回复关键字获取更多免费资料。回复【加群】,限时免费进入知识共享群;回复【3D封装库】,常用元器件的3D封装库;回复【电容】,获取电容、元器件选型相关的内容...

关键字: C51 MDK RealView

摘 要 :视频监控系统是计算机应用中的重要领域之一。数字化摄像头网络化之后,监控系统正在不断引入新的功能,为使现有监控系统能更好地应对复杂环境,满足不同监控要求,就需要追加新功能,在系统架构与设计上进行调整。因此,如何将...

关键字: 智能监控 系统架构 模块化设计 接口设计 数据传输 深度相机

摘 要:NS-3是新一代网络仿真模拟器,文中基于NS-3搭建了RFID系统仿真平台,成功实现了阅读器与标签之间的通 信,并给出了仿真结果。该仿真平台可用于对RFID系统进行深入研究与探讨,有助于缩短系统开发时间,降低开发...

关键字: NS-3 RFID系统 网络仿真 模块化设计
关闭
关闭