当前位置:首页 > 单片机 > 单片机
[导读]一个大的单片机程序往往包含很多模块,我是这样组织的: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:包含头文件调用。


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

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭