EMS-模块化编程的分层设计经验.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
EMS-模块化编程的分层设计经验

模块化编程的分层设计经验 操作要点: 1、每一层直接对下一层操作,尽量避免交叉调用或越级调用 2、某些器件会把硬件驱动层合并成一个文件时,则归于较高的层 3、相同功能的外部函数尽量一致,尽量保证通用性 4、对于初次编程的模块,要严格保证中间各层的正确性好处: 1、对于后期维护扩展,只需修改应用层和物理层,根据需要扩展功能层 2、一个新项目只需把要用到的文件加入工程,简单修改调试就出来了 3、随着模块的不断积累,新的项目将越来越容易完成,后期的维护扩展也变得非常简单了 4、对于C语言编程,只需简单修改物理层就可完成不同单片机间的移植一般分为以下几层: ?? ---应用层--面向用户 软|???? ↓ 件|---协议层--现成的协议栈、软件包、标准库,大多是移植,不自己写,如FAT、TCPIP、OS、GAME等 相|???? ↓ 关|???? ↓ ?? ---功能层--实现器件无关性,实现器件的各种功能扩展和器件通用性处理,如LCD的线、圆、矩形等功能,如EEPROM的块写,自己的print 硬|???? ↓????? 件|---器件层--实现硬件无关性,保证IO无关性,只提供器件的基本功能,如字节读写、点 驱|???? ↓ 动 ---物理层--IO相关,直接操作硬件,实现硬件连接的多种方案 对应文件举例1: ?? ---应用层--面向用户的主程序 软|???? ↓ 件|---协议层--如FAT、TCPIP、OS等现成的协议栈、算法、游戏等 相|???? ↓ 关|???? ↓ ?? ---功能层--如文件lcd.c;led.c;eeprom.c;time.c;ir.c;keybord.c;harddisk.c;引出LCD的线、圆、矩形、填充等功能 硬|???? ↓???????????? ↓ 件|---器件层--文件lcd61202.c;lcd1520.c;lcd6963.c;lcd133x.c;lcd44780.c;lcd162x.c;lcd856x.c或者lcd1602.c;lcd12864.c;lcd320240.c等,引出基本的初始化、定位、写点、写字节函数 驱|???? ↓???????????? ↓ 动 ---物理层--文件lcd61202_io.c;lcd61202_bus.c;引出器件的基本读写函数 对应文件应用举例2: ?? ---应用层--面向用户的主程序 软|???? ↓ 件|---协议层--如FAT、TCPIP、OS等现成的协议栈、算法、游戏等 相|???? ↓ 关|???? ↓ ?? ---功能层--如文件lcd.c;led.c;eeprom.c;time.c;ir.c;keybord.c;harddisk.c;如EEPROM的块写统一化 硬|???? ↓???????????????????????? ↓ 件|---器件层--文件ee24xx.c;ee93xx.c;ee_sdcard.c;ee29xx.c;ee28f.c;ee39xx.c;等 驱|???? ↓???????????? ↓ 动 ---物理层--文件bus_i2c.c;bus_spi.c等一个大的单片机程序往往包含很多模块,我是这样组织的 1。每一个C源文件都要建立一个与之名字一样的H文件,里面仅仅包括该C文件的函数的声明,其他的什么也不会有,比如变量的定义啊等等不应该有。 2。建立一个所有的文件都要共同使用的头文件,里面当然就是单片机的管脚使用的定义,还有里面放那些需要的KEIL系统的头文件,比如 #includereg52.h,#includeabsacc.h等等,把这个文件命名为common.h, 或者干脆就叫main.h 3,每个C源文件应该包含自己的头文件以及那个共同的使用的头文件,里面还放自己本文件内部使用的全局变量或者以extern定义的全局变量 4。主文件main.c里面包含所有的头文件包括那个共同使用的文件,main.c里面的函数可以再做一个头文件,也可以直接放在文件的开头部分声明就可以了,里面一般还有中断服务程序也放在main.c里面 5。对于那些贯穿整个工程的变量,可以放在那个共同的使用的头文件里面,也可以用extern关键字在某个C源文件里面定义,哪个文件要使用就重复定义一下 6.建立工程的时候,只要把C源文件加到工程中,把H文件直接放到相应的目录下面就可以了,不需要加到工程里。 单片机系统模块化编程的一些想法51核类型单片机是目前应用较为广泛的一款MCU,编写单片机程序常常成为嵌入式软件开发软件入门级的训练。一般而言,51程序代码量少,考虑模块化程序相对较少。一种常规做法就是主程序采用while循环,再者通过中断中设置一些标志位;笔者在51单片机程序开发过程,发现公司的单片机程序更新很快,基本每个人都要修改一点,

文档评论(0)

cwhs + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档