单片机程序设计编程规范.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文档。上传文档
查看更多
单片机程序设计编程规范 本规范适用于松翰科技8-bit MCU部门汇编程序编写准则,同样适用于代理 商及重要客户工程师编程规范参考。本规范的H的为统一编程风格,保证程序编 写质量,提高程序的可移植性和维护性。 大部分的规范严格,品质要求高的软件公司对员工编写代码的风格都有硬 性规定,例如缩排的使用,TAB的长度,函数变量的命名方式。这些规定的明显 好处是可以统一规范不同程序员所编制的代码,提升程序代码的可读性与可维护 性,同时统一格式的编程风格也为code review提供方便。 目录 一、 设计总则 二、 排版风格 三、 程序可读性及可维护性 四、 注释 五、 变量命名规则 六、 常量命名规则 七、 标号命名规则 八、 文件命名规则及文件分割 九、 标准程序模块 十、附录 一、设计总则 程序质量的评估 程序的优劣可以从两个方面进行评估,定量指标和定性指标。 定量指标包括: 1) 程序代码执行效率; 2) 程序占用资源多少。 定性指标包括: 1) 可调试性,即是否方便排除程序语法错误; 2) 可测试性,即是否方便验证程序功能的正确性; 3) 可维护性,即是否方便程序的修改和升级; 4) 可移植性; 5) 可读性。 2、程序架构 为了便于维护和移植,推荐使用层次化的软件设计方法。可把整个软件分为三层: 应用层、界面层和底层驱动层。各层之间的关系如下图所示。 层次化设计说明: 1) 底层驱动层主要包含直接和硬件相关的驱动程序,如数码管显示、按键、 峰鸣器、继电器和电机控制等。底层的各个模块间要保持各自的独立性,不产生 直接的数据交互,底层也不直接访问应用层,如果有需要,都要通过界面层进行 数据交互。 2) 界面层主要提供数据交互,为应用层和底层驱动之间以及底层驱动层各 模块之间提供数据的交互。 3) 应用层主要完成具体功能的实现,它要通过界面层控制底层驱动层各模 块来完成所需功能,而不能越过界面层直接访问底层驱动层。所有的用户接口要 在应用层来实现。 4) 一个好的架构必须将底层硬件包装起来,为应用程序提供一组丰富的函 数操作(buffer or parameter),例如在中断的处理中,应用程序不需要资料中 断的堆栈如何保护不需要知道地址操作,只需要读取中断产生的旗标动作。 在即时性软件系统里面,对达到高效率的实时性与反应力,所以程序使 用大量的事件触发方式来设计任务。事件有可能来自外部的触发(key, rxdata , sensor detect,…)也可能是系统内部自行产生的(Timer, alarm, flag),与事 件触发方式相对应的是定时查询方式(polling), 一般来说polling效率较差因 为有多余的动作而且系统反应时间与查询polling时间间隔有关,但是在小型 的MCU系统里面用Polling方式反而简单许多。 3、设计基本原则 尽量减少各个子程序功能模块间的耦合度(耦合度是指一个程序的执行 对另一个程序的影响力),保证各自的独立性。一般情况下,建议子程序模块功 能的划分要尽可能细化,功能尽量单一,减少子程序模块间的数据交互。 在满足功能需求的情况下,可适当牺牲代码的执行速度,以保证程序的 透明度。 主要子程序模块间的交互,要通过特定的界面跟应用层进行沟通,可使 用FIFO (First in, First out)或是Buffer两种方式。每种子程序模块都可 以有自己的FIFOo例如:就按键来说,一般有Key buffer. Key FIFO或直接 进入AP FIFO三种设计方式。 Key buffer: 一般用于保存数字按键信息。例如:在电话机的设计中,需要记录 按键内容用于LCD显示、最后数字确认、数字存储等,这时候需要把按键值的 信息(0123456789*#)记录在 Key buffer 中。 Key FIFO: 一些功能按键可以将相应信息列入到Key FIF0中,等待应用层的取 用,这样可根据不同的工作模式进行不同的处理及动作。 这些类似的观念可以应用在许多周边中: 输入类:Key、RF Data input、UART data input、Switch input 等。 输出类:LCD display LED display、UART data output 等。 APP FIFO (应用界面层人主要是将发生的事件储存在APP FIFO里面等待适当的 时间依序处理,不然有可能造成系统在某一程序物件里面循环,从而降低系统的 实时性(Real-Time) 每个子程序模块只能有唯一一个程序入口地址在程序的首部,只能有唯 一一个程序出口地址在程序的尾部。 例如: 以下的写法是不规范的(两个RET出口,存在调试时不易设立断点,程序可读性 降低等问题): lable: bObtsO fz clr y

文档评论(0)

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

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

1亿VIP精品文档

相关文档