如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
CT001V0.4本資料為松翰科技股份有限公司專有之財產,非經書面許可不准透露或使用本資料,亦不准複印複製或轉變成任何其他形式使用。TheinformationcontainedhereinistheexclusivepropertyofSONiXtechnologyCo.,Ltd.andshallnotbedistributed,reproduced,ordisclosedinwholeorinpartwithoutpriorwrittenpermissionofSONiXtechnologyCo.,Ltd.--SONiX8-BitMicroControllerSoftwareCriterion编程规范CT001V0.4Date:2005/07/21REVISIONHISTORYVersionDateDescriptionVER0.02005/06/01初步版本。VER0.12005/07/13部门讨论,针对各章节内容进行订正修改。VER0.22005/07/14参考Albert修改内容进行订正修改。VER0.32005/07/18针对程序可读性、可维护性进行修改。VER0.42005/07/21参考CC_huang修改部分内容,并针对实例说明进行修改。VER0.52006/03/12Albert自行修改部分内容,增加visio圖形并针对实例说明进行修改。说明本规范适用于松翰科技8-bitMCU部门汇编程序编写准则,同样适用于代理商及重要客户工程师编程规范参考。本规范的目的为统一编程风格,保证程序编写质量,提高程序的可移植性和维护性。大部分的規範嚴格,品質要求高的軟件公司對員工編寫代碼的風格都有硬性規定,例如縮排的使用,TAB的長度,函數變量的命名方式.這些規定的明顯好處是可以統一規範不同程序員所編制的代碼,提升程序代碼的可讀性與可維護性,同時統一格式的編程風格也為codereview提供方便.目录设计总则排版风格程序可读性及可维护性注释变量命名规则常量命名规则标号命名规则文件命名规则及文件分割标准程序模块附录标准程序框架设计参考设计总则1.程序质量的评估程序的优劣可以从两个方面进行评估,定量指标和定性指标。定量指标包括:程序代码执行效率;程序占用资源多少。定性指标包括:可调试性,即是否方便排除程序语法错误;可测试性,即是否方便验证程序功能的正确性;可维护性,即是否方便程序的修改和升级;可移植性;可读性。程序架构为了便于维护和移植,推荐使用层次化的软件设计方法。可把整个软件分为三层:应用层、介面层和底层驱动层。各层之间的关系如下图所示。层次化设计说明:底层驱动层主要包含直接和硬件相关的驱动程序,如数码管显示、按键、峰鸣器、继电器和电机控制等。底层的各个模块间要保持各自的独立性,不产生直接的数据交互,底层也不直接访问应用层,如果有需要,都要通过介面层进行数据交互。介面层主要提供数据交互,为应用层和底层驱动之间以及底层驱动层各模块之间提供数据的交互。应用层主要完成具体功能的实现,它要通过介面层控制底层驱动层各模块来完成所需功能,而不能越过介面层直接访问底层驱动层。所有的用户接口要在应用层来实现.一個好的架構必須將底層硬件包裝起來,為應用程序提供一組豐富的函數操作(bufferorparameter),例如在中斷的處理中,應用程序不需要資料中斷的堆疊如何保護不需要知道地址操作,只需要讀取中斷產生的旗標動作.在即時性軟件系統裡面,對達到高效率的即時性與反應力,所以程序使用大量的事件觸發方式來設計任務.事件有可能來自外部的觸發(key,rxdata,sensordetect,…)也可能是系統內部自行產生的(Timer,alarm,flag),與事件觸發方式相對應的是定時查詢方式(polling),一般來說polling效率較差因為有多餘的動作而且系統反應時間與查詢polling時間間隔有關,但是在小型的MCU系統裡面用Polling方式反而簡單許多3.设计基本原则尽量减少各个子程序功能模块间的耦合度(耦合度是指一个程序的执行对另一个程序的影响力),保证各自的独立性。一般情况下,建议子程序模块功能的划分要尽可能细化,功能尽量单一,减少子程序模块间的数据交互。在满足功能需求的情况下,可适当牺牲代码的执行速度,以保证程序的透明度。主要子程序模块间的交互,要通过特定的界面跟应用层进行沟通,可使用FIFO(Firstin,Firstout)或是Buffer两种方式。每种子程序模块都可以有自己的FIFO。例如:就按键来说,一般有Keybuffer、KeyFIFO或直接进入APFIFO三种设计方式。K