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