第八章 单片机程序设计编程规范.pdfVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机程序设计编程规范 本规范适用于松翰科技8-bitMCU 部门汇编程序编写准则,同样适用于代理商及重要客户工 程师编程规范参考。本规范的目的为统一编程风格,保证程序编写质量,提高程序的可移植 性和维护性。 大部分的规范严格,品质要求高的软件公司对员工编写代码的风格都有硬性规定,例如缩排的 使用,TAB 的长度,函数变量的命名方式. 这些规定的明显好处是可以统一规范不同程序员所 编制的代码,提升程序代码的可读性与可维护性,同时统一格式的编程风格也为 code review 提供方便. 目录 一、 设计总则 二、排版风格 三、程序可读性及可维护性 四、注释 五、变量命名规则 六、常量命名规则 七、标号命名规则 八、文件命名规则及文件分割 九、标准程序模块 十、附录 一、设计总则 一、设计总则 一一、、设设计计总总则则 1 1 11.程序质量的评估 程序的优劣可以从两个方面进行评估,定量指标和定性指标。 定量指标包括: 1) 程序代码执行效率; 2) 程序占用资源多少。 定性指标包括: 1) 可调试性,即是否方便排除程序语法错误; 2) 可测试性,即是否方便验证程序功能的正确性; 3) 可维护性,即是否方便程序的修改和升级; 4) 可移植性; 5) 可读性。 2 2 22、程序架构 为了便于维护和移植,推荐使用层次化的软件设计方法。可把整个软件分为三层:应用层、 界面层和底层驱动层。各层之间的关系如下图所示。 层次化设计说明: 1) 底层驱动层主要包含直接和硬件相关的驱动程序,如数码管显示、按键、峰鸣器、 继电器和电机控制等。底层的各个模块间要保持各自的独立性,不产生直接的数据交互,底 层也不直接访问应用层,如果有需要,都要通过界面层进行数据交互。 2) 界面层主要提供数据交互,为应用层和底层驱动之间以及底层驱动层各模块之间提 供数据的交互。 3) 应用层主要完成具体功能的实现,它要通过界面层控制底层驱动层各模块来完成所 需功能,而不能越过界面层直接访问底层驱动层。所有的用户接口要在应用层来实现. 4) 一个好的架构必须将底层硬件包装起来, 为应用程序提供一组丰富的函数操作 (bufferor parameter) , 例如在中断的处理中, 应用程序不需要资料中断的堆栈如何保护不 需要知道地址操作, 只需要读取中断产生的旗标动作. 5) 在即时性软件系统里面,对达到高效率的实时性与反应力, 所以程序使用大量的事 件触发方式来设计任务.事件有可能来自外部的触发(key , rx data , sensordetect, …) 也可 能是系统内部自行产生的(Timer, alarm, flag),与事件触发方式相对应的是定时查询方式 (polling), 一般来说polling 效率较差 因为有多余的动作而且系统反应时间与查询polling时 间间隔有关, 但是在小型的MCU 系统里面用Polling 方式反而简单许多 3 3 33、设计基本原则 1) 尽量减少各个子程序功能模块间的耦合度(耦合度是指一个程序的执行对另一个程 序的影响力),保证各自的独立性。一般情况下,建议子程序模块功能的划分要尽可能细化, 功能尽量单一,减少子程序模块间的数据交互。 2) 在满足功能需求的情况下,可适当牺牲代码的执行速度,以保证程序的透明度。 3) 主要子程序模块间的交互,要通过特定的界面跟应用层进行沟通,可使用 FIFO (Firstin,Firstout)或是Buffer两种方式。每种子程序模块都可以有自己的FIFO。例如: 2 就按键来说,一般有Key buffer、Key FIFO或直接进入AP FIFO 三种设计方式。 Key buffer Key buffer KKeeyy bbuuffffeerr:一般用于保存数字按键信息。例如:在电话机的设计中,需要记录按 键内容用于 LCD 显示、最后数字确认、数字存储等,这时候需要把按键值的信息 (0123456789*#)记录在Key buffer中; KeyFIFO KeyFIFO KKeeyyFFIIFFOO:一些功能按键可以将相应信息列入到Key FIFO中,等待应用层的取用, 这样可根据不同的工作模式进行不同的处理及动作。

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档