单片机程序设计编程规范
C51编程规范--很好的规范
单片机C51编程规范1单片机C51编程规范-前言为了提高源程序的质量和可维护性,从而最终提高软件产品生产力,特编写此规范。
2 单片机C51编程规范-范围本标准规定了程序设计人员进行程序设计时必须遵循的规范。
本规范主要针对C51编程语言和kei§编译器而言,包括排版、注释、命名、变量使用、代码可测性、程序效率、质量保证等内容。
3 单片机C51编程规范-总则格式清晰注释简明扼要命名规范易懂函数模块化程序易读易维护功能准确实现代码空间效率和时间效率高适度的可扩展性4 单片机C51编程规范-数据类型定义编程时统一采用下述新类型名的方式定义数据类型。
建立一个datatype.h文件,在该文件中进行如下定义:typedef bit BOO§; // 位变量//typedef unsigned char INT8U; // 无符号8位整型变量//typedef signed char INT8S; // 有符号8位整型变量//typedef unsigned int INT16U; // 无符号16位整型变量//typedef signed int INT16S; // 有符号16位整型变量//typedef unsigned §ong INT32U; // 无符号32位整型变量//typedef signed §ong INT32S; // 有符号32位整型变量//typedef f§oat FP32; // 单精度浮点数(32位长度) //typedef doub§e FP64; // 双精度浮点数(64位长度) //5 单片机C51编程规范-标识符命名5.1 命名基本原则§命名要清晰明了,有明确含义,使用完整单词或约定俗成的缩写。
通常,较短的单词可通过去掉元音字母形成缩写;较长的单词可取单词的头几个字母形成缩写。
即"见名知意"。
单片机编程方法
单片机编程方法
单片机(MCU)编程涉及到使用特定的编程语言(如C或汇编)来编写指令,这些指令告诉单片机如何执行特定的任务。
以下是一些单片机编程的基本步骤和注意事项:
1. 选择编程语言:大多数单片机编程使用C语言,因为它易于理解且效率高。
汇编语言也可以使用,但更复杂。
2. 选择开发环境:你需要一个集成开发环境(IDE),如Keil、IAR Embedded Workbench 或 Visual Studio等,这些IDE可以编译你的代码并上传到单片机。
3. 了解单片机的架构和特性:每种单片机都有其自己的指令集、特性和外设。
你需要阅读单片机的数据手册和技术规范,以了解如何编程和使用其外设。
4. 编写代码:根据你的需求,开始编写代码。
这可能涉及到配置单片机的各种外设(如GPIO、UART、SPI、PWM等),以及编写主程序。
5. 编译代码:使用IDE编译你的代码。
如果代码有错误,IDE会提示你。
6. 调试代码:编译成功后,将程序下载到单片机中进行调试。
使用调试器查看程序的运行状态,找出并修正任何错误。
7. 优化代码:根据需要优化代码,以提高其执行效率或减小其占用的存储空间。
8. 测试和部署:在确认代码工作正常后,进行更广泛的测试,然后将其部署到实际应用中。
以上就是单片机编程的基本步骤。
需要注意的是,单片机编程需要对硬件和软件都有深入的理解,因此可能需要一定的学习和实践才能掌握。
单片机程序设计编程规范
单片机程序设计编程规范1. 概述本文将介绍单片机程序设计编程过程中应遵循的一些规范。
这些规范旨在提高程序的可读性、可维护性和可重用性,帮助开发人员编写出高质量的单片机程序。
2. 代码布局2.1 源文件结构每个源文件应包含程序的一个完整模块。
源文件以 `.c` 扩展名结尾。
源文件应包含适当的注释,以说明文件的目的和模块。
2.2 函数布局每个函数应尽可能短小,只完成一项具体的功能。
函数应使用有意义的名称,具有描述性。
函数应尽量避免超过 30 行的代码,如果超过应考虑是否需要进行函数分割。
3. 变量命名规范3.1 命名风格变量名应使用小写字母和下划线的组合,如 `my_variable`。
常量应使用全大写字母和下划线的组合,如 `MY_CONSTANT`。
3.2 变量名长度变量名应该具有描述性,尽量避免使用过于简单或过于复杂的变量名。
变量名长度应控制在 20 个字符以内,以保证可读性。
4. 注释规范4.1 文件注释每个源文件应包含文件注释,用于说明文件的目的和模块。
4.2 函数注释每个函数应包含函数注释,用于说明函数的功能、参数和返回值。
4.3 行内注释行内注释应用于解释代码的特定部分,帮助阅读者理解代码的意图。
5. 常量定义规范常量定义应尽量避免使用魔术数,应该使用有意义的常量名来代替。
6. 编码风格使用正确的缩进和对齐方式,以提高代码的可读性。
使用适当的空格来增强代码的可读性,但避免过多的空格导致代码冗长。
使用适当的命名风格和约定,以提高代码的可读性。
7. 错误处理每个函数应该有清晰的错误处理机制,包括返回值、错误码和异常处理等。
错误消息应清晰、明确,并有助于定位错误。
8. 代码复用尽量避免重复的代码,使用函数和模块的方式来实现代码复用。
开发人员应鼓励制定和使用通用的接口、库和模块,以提高代码复用性。
9. 版本管理定期对代码进行版本管理,并使用版本控制工具来管理代码的修改和更新。
10.本文介绍了单片机程序设计编程规范的一些基本原则。
单片机课程设计pdf
单片机课程设计pdf一、课程目标知识目标:1. 让学生掌握单片机的基本原理和结构,理解其工作流程。
2. 使学生熟悉单片机编程语言,能运用C语言或汇编语言编写简单的单片机程序。
3. 让学生了解单片机在日常生活和工业控制中的应用。
技能目标:1. 培养学生运用单片机解决实际问题的能力,学会设计简单的电路控制系统。
2. 提高学生编程能力,能对单片机程序进行调试和优化。
3. 培养学生团队协作和沟通能力,能在项目中进行有效分工与合作。
情感态度价值观目标:1. 激发学生对单片机及电子技术的兴趣,培养其探索精神和创新能力。
2. 培养学生严谨的科学态度,注重实践操作,养成良好的学习习惯。
3. 增强学生的环保意识,使其关注单片机在节能减排领域的应用。
课程性质:本课程为实践性较强的课程,结合理论教学,注重培养学生的动手能力和实际操作技能。
学生特点:学生具备一定的电子基础和编程知识,对单片机有一定了解,但实践操作能力有待提高。
教学要求:教师应结合课本内容,采用项目驱动的教学方法,引导学生通过实践操作掌握单片机相关知识,将理论知识与实际应用相结合,提高学生的综合素养。
在教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的实现。
通过课程学习,使学生能够具备解决实际问题的能力,为未来的学习和工作打下坚实基础。
二、教学内容根据课程目标,本章节教学内容主要包括以下几部分:1. 单片机原理与结构:介绍单片机的基本组成、工作原理和性能指标,涉及课本第一章内容。
2. 单片机编程语言:讲解C语言和汇编语言在单片机编程中的应用,包括语法、语句和编程规范,对应课本第二章。
3. 单片机程序设计:通过实例讲解单片机程序设计方法,涵盖输入/输出、中断、定时器等应用,涉及课本第三章。
4. 单片机外围设备:介绍常见外围设备的使用方法,如键盘、显示、传感器等,对应课本第四章。
5. 单片机应用案例:分析单片机在实际项目中的应用,如智能家居、自动控制系统等,涉及课本第五章。
单片机程序设计编程规范
单片机程序设计编程规范单片机程序设计编程规范1.文件结构与命名规范1.1 源码文件- 所有源码文件统一使用英文小写字母命名。
- 文件名应简洁明了,能够清晰表达文件的功能。
- 文件名中可以使用下划线 (_) 连接多个单词。
1.2 头文件- 头文件名与源码文件名相同,但使用大写字母命名。
- 头文件应包含必要的宏定义、类型定义、函数声明等。
1.3 项目结构- 源码文件应按功能模块进行组织和管理,每个模块应放在独立的文件夹中。
- 在项目的根目录下添加一个README文件,对项目进行简要说明。
2.编码规范2.1 缩进与空格- 使用4个空格进行缩进,不使用Tab字符。
- 在操作符前后添加空格,增加可读性。
2.2 函数命名- 函数名使用小写字母命名,单词之间使用下划线 (_) 连接。
- 函数名应能够清晰表达函数的功能。
2.3 变量命名- 变量名使用小写字母命名,单词之间使用下划线 (_) 连接。
- 变量名应简洁明了,能够清晰表达变量的用途和含义。
- 全局变量命名应以g_开头。
2.4 常量命名- 常量名使用全大写字母命名,单词之间使用下划线(_) 连接。
2.5 注释规范- 使用注释来解释代码的意图、功能和实现细节。
- 在关键代码处添加注释,并保持注释与代码的同步更新。
- 注释应写在被注释代码的上方,并使用// 或 / /注释符号。
3.函数设计3.1 函数长度- 函数应尽量保持简短,避免超过一页纸的长度。
- 如果函数过长,应考虑将其拆分为多个较小的函数。
3.2 函数参数- 函数参数应尽量少,并且要考虑参数的顺序和类型。
- 不要在函数参数中使用全局变量,尽量使用局部变量。
3.3 函数返回值- 函数的返回值应具有明确的含义,并清晰地传达函数的执行结果。
4.异常处理与错误消息4.1 异常处理- 对可能发生异常的代码块进行适当的异常处理。
- 使用try-catch块捕获异常,并进行相应的处理或记录。
4.2 错误消息- 提供清晰、准确的错误消息,以便于调试和修复问题。
PIC单片机汇编编程规范
PIC汇编编程及审核规范(V1.1)一、程序命名规范程序文件名由两部分构成:一部分为产品型号或功能描述,一部分为软件版本号。
产品型号用字母描述,可为英文或中文拼音。
软件版本号为4位,前一位固定为字母”V”,后3位为数字,编写软件版本号应按照从小到大的顺序递增。
开发阶段版本号从001开始;中试之后版本号从100开始。
例如:光电感烟探测器JTY-GD-G3程序 GDG3V001电子差定温探测器JTW-ZCD-G3N程序 GWG3NV101二、程序头格式在每个文件的开始要有一个对该文件总体功能的描述,软件版本,以及作者及编写时间。
采用模版统一格式。
1.在功能描述中,除了对软件实现的功能做简要描述外,还应包括使用的单片机,晶振频率,以及主要I/O口实现的功能。
2.如果程序升级时应增加如下说明。
1)程序升级后的版本号:例如“版本号:Ver105”2)程序升级的修改作者:例如“更改人:×××”3)程序升级的修改日期:例如“更改日期:01 12 17”4)应对程序升级进行简单修改说明。
5)应给出程序增加、更改、删除项说明,每项总处数。
3.程序头如采用如下统一格式:;**************** ;* 文件名* ;**************** ;* 功能描述:;* 软件版本;* 开始编写—完成日期:;* 作者:三、子程序、标号及变量命名规则(推荐)1.子程序及标号命名规则子程序命名应使用相关含义英文。
子程序入口标号应使用子程序名相关含义、常用的英语单词(拼音)或单词(拼音)缩写。
如果一个英语单词表述不清,应使用多个英语单词缩写表示。
程序里边的标号应与执行该分支功能相关含义、常用的英语单词(拼音)或单词(拼音)缩写,如果没有确切含义,应优先选用子程序入口标号前面字母缩写加两位序号。
2.变量命名规则标志寄存器使用相关含义、常用的英语单词英文+ Flag;暂用寄存器使用:暂存对象英文缩写+Temp;计数寄存器使用暂存对象英文缩写+ Numb;其它寄存器:与存放对象相关含义、常用的英语单词(拼音)或单词(拼音)缩写。
51单片机C语言编程规范
C51程序结构
原码工作室
(3)C51变量的存储模式与标准C中变量的存储模 式不一样,C51中变量的存储模式是与89C51单片机 的存储器紧密相关;
(4)C51与标准C的输入输出处理不一样,C51中 的输入输出是通过89C51串行口来完成的,输入输出 指令执行前必须要对串行口进行初始化;
Int a ;
部变量。在一个函数体 内,要使用一个已在该函数体外或别的程序中定义过的 外部变量时,该变量在该函数体内要用extern说明。外部 变量被定义后分配固定的内存空间,在程序整个执行时 间内都有效,直到程序结束才释放。
3.static:
本章主要以KEIL编译器介绍89C51单片机C语言 程序设计。
C51程序结构
原码工作室
C51的语法规定、程序结构及程序设计方法都与 标准的C语言程序设计相同,但C51程序与标准的C 程序在以下几个方面不一样:
(1)C51中定义的库函数和标准C语言定义的库 函数不同。标准的C语言定义的库函数是按通用微型 计算机来定义的,而C51中的库函数是按89C51单片 机相应情况来定义的;
源码工作室
原码工作室
学习单片机C语言的必要性
随着单片机性能的不断提高,C语言编译调 试工具的不断完善,以及现在对单片机产品辅助 功能的要求、对开发周期不断缩短的要求,使得 越来越多的单片机编程人员转向使用C语言,因 此有必要在单片机课程中讲授“单片机C语言”。
C语言编程的优势
原码工作室
1.语言简洁、紧凑,使用方便、灵活。
signed int数据用补码表示。
原码工作室
51单片机汇编语言程序设计
单片机原理与接口技术
中北大学电子科学技术专业
返回目录
8
4.1.3 汇编语言的规范
2.伪指令
---伪指令 伪指令ORG 伪指令
MCS-51系列单片机的常用伪指令有 ORG、 MCS-51系列单片机的常用伪指令有:ORG、 系列单片机的常用伪指令有: END、EQU、DB、DW、DS和BIT等 END、EQU、DB、DW、DS和BIT等。
23:24
单片机原理与接口技术
中北大学电子科学技术专业
返回目录
9
4.1.3 汇编语言的规范
(2)汇编结束伪指令END 汇编结束伪指令END
格式:[标号:] 格式: 标号:] END [表达式] [表达式 表达式]
---伪指令 伪指令END 伪指令
功能:结束汇编。汇编程序遇到END伪指令后即结束汇 功能:结束汇编。汇编程序遇到END伪指令后即结束汇 编。处于END之后的程序,汇编程序不予处理。 处于END之后的程序 汇编程序不予处理。 之后的程序, ORG 2000H 如: START: MOV A, #00H … END START ;表示标号START开始的程序段结束。 表示标号START开始的程序段结束 开始的程序段结束。
以上伪指令经汇编以后, 以上伪指令经汇编以后,将从 1010H开始的若干内存单元赋值。 1010H开始的若干内存单元赋值。 开始的若干内存单元赋值
23:24
单片机原理与接口技术
中北大学电子科学技术专业
返回目录
12
4.1.3 汇编语言的规范
(5)定义字伪指令 )定义字伪指令DW
[标号:] 标号: DW 16位二进制数表 16位二进制数表
(7)位定义伪指令BIT 位定义伪指令BIT
精品课件-单片机原理及应用系统设计-第4章
;
PUSH
DPL
;
保护现场, 将主程序中
; DPTR的低八位放入堆
MOV
DPTR, #TABLE
; 在子程
第四章 单片机程序设计语言
恢复现场,
MOVC A, @A+DPTR
POP
DPL
将主程序中DPTR
; ;
;的低八位从堆栈中弹出
POP 场, 将主程序中DPTR
DPH
; 恢复现
;的高八位从堆栈中弹出
图 4-8 循环程序的典型形式
第四章 单片机程序设计语言
【例 4-4】 冒泡程序。假设有N个数, 它们依次存放 于LIST地址开始的存储区域中, 将N个数比较大小后, 使它 们按照由小到大的顺序排列,
编写该程序的方法: 依次将相邻两个单元的内容作比较, 即第一个数和第二个数比较,第二个数和第三个数比 较, ……, 如果符合从小到大的顺序则不改变它们在内存 中的位置,否则交换它们之间的位置。如此反复比较, 直到 数列排序完成为止。
LJMP MAIN
;
MAIN: MOV A, X
XRL A, Y
; (X)与(Y)进行异或操作
JB ACC.7, NEXT1
; 累加器A的第7位
为1, 两个数
;符号不同, 转移到
第四章 单片机程序设计语言
MOV
CJNE
转移到NEQUAL
CLR
P1.0置0
S
MOV DXCE1COUNTER, #00H
; 将DXCE1COUNTER赋值为0
而如下的注释则给出了额外有用的信息:
JNZ PC Comm_Err
;
第四章 单片机程序设计语言
(2) 注释应与其描述的代码相近, 对单条语句的注释应 放在其上方或右方相邻位置, 不可放在下面, 如放于上方
单片机程序设计
单片机程序设计单片机(Microcontroller)是一种集成电路芯片,由中央处理器、存储器和输入输出设备组成,可用于控制电子设备的运行。
在现代电子领域中,单片机的应用越来越广泛,因此对单片机程序设计的需求也逐渐增加。
本文将介绍单片机程序设计的一般流程和注意事项。
一、单片机程序设计概述单片机程序设计是指为单片机编写软件,使其能够按照预定的功能和要求进行工作。
它包括程序设计的各个环节,如需求分析、算法设计、程序编写、调试和测试等。
通过合理设计和编写单片机程序,可以实现各种电子设备的控制和功能扩展。
二、单片机程序设计的基本流程1. 需求分析:了解单片机的使用环境、功能需求和性能要求,明确希望实现的功能。
2. 算法设计:根据需求分析结果,设计相应的算法和逻辑流程,确定程序的整体结构。
3. 硬件设计:根据单片机型号和功能需求,设计相应的硬件电路,包括输入输出接口、外设接口等。
4. 程序编写:根据算法设计和硬件设计结果,使用合适的编程语言编写单片机程序。
5. 调试和测试:在真实的硬件环境下,对程序进行调试和测试,确保程序的功能正常运行。
6. 优化和扩展:根据实际应用情况,对程序进行优化和扩展,提高程序的性能和功能。
三、单片机程序设计的注意事项1. 编程语言选择:根据单片机型号、功能需求和开发环境,选择合适的编程语言,如C语言、汇编语言等。
2. 程序结构设计:根据需求分析和算法设计结果,设计合理的程序结构,包括主程序、子程序和中断服务程序等。
3. 代码规范:编写代码时,遵循统一的代码规范,如缩进、命名规则、注释规范等,提高代码的可读性和可维护性。
4. 调试工具使用:使用合适的调试工具,如仿真器、调试器等,对程序进行调试和测试,快速排查错误。
5. 性能优化:针对程序的性能问题,进行适当的优化,如减少程序的存储空间占用、提高程序的执行效率等。
6. 安全性设计:对于涉及到安全性的应用,设计合理的安全机制,如输入检测、密码保护等,确保系统的安全可靠性。
MCS-51汇编语言程序设计
判断正误
ORG 0000 LEN1 DATA 31H LEN2 EQU 32H MOV A, LEN1+1 MOV B,LEN2+1 MOV R1,#LEN1 MOV R2,#LEN2 MOV R2,#LEN2+LEN1 ;CNT1 DATA R5 CNT2 EQU R6 ;CNT EQU ADD MOV R3,#LEN1+1 MOV R4,#LEN2+1 MOV DPTR,#TOEND TOEND:SJMP $ LEN1 DATA 31H LEN2 EQU 32H END
用汇编语言与用高级语言进行程序设计很相似。对于比 较复杂的问题可以先根据题目的要求作出流程图,然后 再根据流程图来编写程序。对于比较简单的问题则可以 不作流程因而直接编程。 两者的差别还是很大的。一个很重要的差别就在于用汇 编语言编程时,对于数据的存放位置,以及工作单元的 安排等都要由编程者自己安排。而用高级语言编程时, 这些问题都是由计算机安排的,编程者则不必过问。 主要知识点:顺序程序;分支程序;循环程序; 查表程序;子程序;运算程序 ;
6
基本语法规则3
对于直接地址direct,有多种选择: (1)直接数据地址(各种进制),如MOV A、30H等; (2)标号地址,如MOV A,SUM等, SUM应该在程序中 某处加以定义; (3)带有加减的表达式,设SUM为已定义的标号地址, 如MOV A,SUM十13; (4)特殊功能寄存器名,如MOV A,P2等。
24
程序框架
1. ORG 0000H 2. LJMP MAIN
;跳转至主程序
中断入口地址
3. ORG 0003H 4. LJMP INT0_INT ;跳转至外部中断0的中断服务程序
基于c51单片机课程设计
基于c51单片机课程设计一、课程目标知识目标:1. 掌握C51单片机的基本结构、工作原理及编程方法;2. 熟悉并运用C语言进行单片机程序设计;3. 了解并掌握单片机外围电路的连接与调试;4. 掌握利用仿真软件对单片机程序进行调试与优化。
技能目标:1. 能够运用C语言编写简单的单片机程序,实现基础功能;2. 能够分析并解决单片机程序运行过程中出现的问题;3. 能够设计并搭建简单的单片机外围电路;4. 能够运用仿真软件对单片机程序进行调试,提高程序运行效率。
情感态度价值观目标:1. 培养学生对电子技术及编程的兴趣,激发学生的创新意识;2. 培养学生动手实践、团队协作的能力,提高学生解决问题的自信心;3. 培养学生严谨、细致的学习态度,养成良好的编程习惯;4. 培养学生关注科技发展,了解单片机在现代科技中的应用。
分析课程性质、学生特点和教学要求,本课程旨在让学生通过学习C51单片机的基本知识,掌握编程技能,培养实际操作能力。
课程目标具体、可衡量,便于教师进行教学设计和评估。
在教学过程中,注重理论与实践相结合,充分调动学生的积极性,提高学生的实际操作能力。
通过本课程的学习,使学生能够独立完成简单的单片机项目设计,为后续深入学习打下坚实基础。
二、教学内容根据课程目标,教学内容主要包括以下几部分:1. C51单片机基础知识:- 单片机概述、发展及应用;- C51单片机的结构、工作原理;- C51单片机的引脚功能及内部资源。
2. C语言编程基础:- C语言基本语法、数据类型;- 控制语句、函数、数组、指针;- 单片机C语言编程规范。
3. 单片机程序设计:- I/O口编程;- 定时器/计数器编程;- 中断系统编程;- 串行通信编程。
4. 单片机外围电路设计:- 常用电子元器件的选型与应用;- 单片机与外围电路的连接;- 电路原理图绘制与PCB设计。
5. 仿真软件的使用:- Keil软件的安装与使用;- 仿真软件的调试技巧;- 程序下载与硬件调试。
单片机课程设计指导书
Part Four
单片机硬件设计
单片机最小系统设计
单片机最小系统包括:单 片机、电源、晶振、复位 电路
电源:为单片机提供稳定 的电源电压
晶振:为单片机提供稳定 的时钟信号
复位电路:在系统启动时, 将单片机复位到初始状态
单片机最小系统设计需要 考虑的因素:稳定性、可 靠性、成本、可扩展性等
单片机外围电路设计
硬件调试技巧: 使用断点、单 步执行、观察
波形等
硬件调试注意 事项:注意安 全、注意保护 设备、注意记
录数据等
Part Five
单片机软件设计
单片机程序设计语言概述
C语言:广泛应用于单片机编程, 具有高效、简洁的特点
BASIC语言:简单易学,适用于初 学者
添加标题
添加标题
添加标题
添加标题
汇编语言:直接操作硬件,适用于 对硬件性能要求较高的场合
添加项标题
规范性:是否符合课程设计的规范和标准,包括文档格式、代码风格等
添加项标题
团队协作:是否体现了良好的团队协作精神和沟通能力
Part Three
单片机基础知识
单片机的概念和特点
添加项标题
概念:单片机是一种集成电路芯片,将微处理器、存储器、输 入/输出接口等集成在一起,可以独立完成特定的任务。
Part One
单击添加章节标题
Part Two
课程设计概述
课程设计的目的和意义
提高学生的实践能力
培养学生的创新思维和解 决问题的能力
帮助学生理解理论知识在 实际中的应用
提高学生的团队合作和沟 通能力
课程设计的任务和要求
任务:完成一个具体的单片机项目,如智能家居、智能小车等 要求:掌握单片机的基本原理和编程方法,能够独立完成项目的设计和 实现 设计过程:包括需求分析、方案设计、硬件设计和软件设计等环节
单片机C语言编程规范和范例
1.7.3 “!”、“~”、“++”、“--”、“&”(地址运算符)等单目操作符前后不加空格。 示例:规范书写 p->id = ++pid; // “->”指针和“++”前后不加空格 1.7.4 if、for、while、switch 等与后面的括号间加空格,使 if 等关键字更为突出、明显。 示例:规范书写 if (a>=b && c>d)
2.6
全局变量要有较详细的注释,包括对其功能、取值范围、存取时注意事项 等的说明。
示例:规范书写 /************************************************************************ * Description: * * The Error Code when SCCP translate Global Title failure * * Define: * * 0: Success * * 1: GT Table error * * 2: GT error * * others: no use * * Notes: * * Only function SCCPTranslate() in this modual can modify it * * Other module can visit it through call the function * * GetGTTransErrorCode() * ************************************************************************/ BYTE g_GTTranErrorCode;
示例:规范书写 void ExampleFun(void) { /* code one comments */ Code Block One /* 与上面的代码用空行阁开 */ /* code two comments */ Code Block Two } 2.4.3 避免在一行代码或表达式的中间插入注释。 说明:除非必要,不应在代码或表达式中间插如注释,否则容易使代码可理解性变差。 2.4.4 注释应整齐、统一,放于代码右边的注释,应左对齐。 示例:规范书写 Code Block One; /* code one comments */ Code Block Tow; /* code Tow comments */ Code Block Three; /* code Three comments */ 2.4.5 在程序块的结束行右方加注释标记,以表明某程序块的结束。 说明:当代码段较长,特别是多重嵌套时,这样做可以是代码更清晰,更便于阅读。 示例:规范书写 if (...) { ... // program code while (index < MAX_INDEX) { ... // program code } /* end of while (index < MAX_INDEX) */ ... // program code } /* end of if (...) */
单片机程序设计编程规范
单片机程序设计编程规范单片机程序设计编程规范1.引言单片机程序设计编程规范旨在提高程序的可读性、可维护性和可移植性,确保程序的质量和稳定性。
本文档详细介绍了单片机程序设计的各个方面,包括编码规范、命名规范、代码注释规范、模块化设计规范等。
2.编码规范2.1 代码缩进使用空格进行代码缩进,每级缩进为4个空格,不使用Tab键进行缩进。
2.2 命名规范a. 变量和函数命名变量和函数的命名采用小驼峰命名法,即首字母小写,后续单词首字母大写,如:myVariable、myFunction。
b. 常量命名常量的命名采用全大写,并用下划线分隔单词,如:MAX_VALUE。
2.3 注释规范a. 单行注释使用双斜线(//)进行单行注释,注释内容应简明扼要,解释代码的用途和含义。
b. 块注释使用斜线和星号(/)进行块注释,注释内容应对代码块进行详细的描述,包括输入输出信息以及注意事项。
3.模块化设计规范3.1 函数规范a. 函数功能单一性每个函数只负责完成一个具体的功能,避免函数功能冗杂,提高代码的复用性。
b. 函数命名规范函数的命名应准确地描述函数的功能,采用小驼峰命名法,如:calculateSum、printData。
3.2 模块规范a. 模块划分根据功能的不同,将相关函数组织成独立的模块,便于代码的管理和维护。
b. 模块间接口定义清晰规范的模块间接口,包括输入参数、返回值以及可能的异常处理,确保模块之间的协作正确有效。
4.异常处理规范4.1 错误码定义定义统一的错误码,便于错误的识别和处理。
4.2 异常处理a. 异常捕捉对可能发生的异常进行捕捉,并根据具体情况进行处理,避免程序崩溃或数据丢失。
b. 异常日志记录记录异常的相关信息,包括发生异常的时间、位置、原因等,便于排查问题和分析原因。
附件:1.示例代码:包含了一个遵循单片机程序设计编程规范的示例代码,供参考和学习。
法律名词及注释:1.著作权:指作品创作人对其所创作的作品享有的权利。
关于单片机的课程设计
关于单片机的课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本结构、工作原理及功能特点,理解其在工程实践中的应用。
2. 使学生了解单片机编程的基本语法和编程技巧,能运用C语言或汇编语言进行简单程序设计。
3. 帮助学生掌握单片机外围电路的设计方法,能够进行基本的电路连接和调试。
技能目标:1. 培养学生运用单片机解决实际问题的能力,提高学生的动手实践能力。
2. 培养学生具备基本的程序调试和排错能力,能够分析并解决程序运行中的问题。
3. 培养学生团队协作和沟通能力,能够在项目实践中与他人共同完成任务。
情感态度价值观目标:1. 培养学生对单片机及电子技术的兴趣,激发学生的学习热情和求知欲。
2. 培养学生严谨、细致的学习态度,养成良好的学习习惯。
3. 增强学生的创新意识,鼓励学生勇于尝试、敢于实践,培养其创新精神。
课程性质:本课程属于电子技术领域,以实践操作为主,理论讲解为辅,注重培养学生的动手能力和创新能力。
学生特点:学生为初中或高中年级,具备一定的电子技术基础和编程能力,对单片机有一定了解,但对实际应用和编程技巧掌握不足。
教学要求:教师需结合学生特点,采用讲解、示范、实践相结合的教学方法,注重引导学生主动探究、合作学习,提高学生的综合运用能力。
在教学过程中,关注学生的学习反馈,及时调整教学策略,确保课程目标的达成。
二、教学内容1. 单片机基础知识:介绍单片机的概念、发展历程、分类及特点。
以教材第二章内容为基础,讲解单片机的内部结构、工作原理及性能指标。
2. 单片机编程语言:讲解单片机编程的基础知识,包括C语言和汇编语言的语法、编程规范及编程技巧。
参考教材第三章,通过实例分析,使学生掌握编程方法。
3. 单片机外围电路设计:以教材第四章内容为参考,介绍常用外围元器件的功能、选型及应用,使学生能够设计简单的单片机外围电路。
4. 单片机程序设计:结合教材第五章,通过案例教学,让学生学会编写简单的控制程序,如流水灯、温度控制等。
MCU-C程序基本编程规范
注释语言必须准确、易懂、简洁。 边写代码边注释,修改代码同时修改相应的注释,不再有用的注释要删除。
汇编和 C 中都用"//",取消";" 不使用段注释" /* */ "(调试时可用)
3.2 文件注释
文件注释必须说明文件名、函数功能、创建人、创建日期、版本信息等相关信息。 修改文件代码时,应在文件注释中记录修改日期、修改人员,并简要说明此次修改的目的。所有修改记录必须 保持完整。 文件注释放在文件顶端,用"/*……*/"格式包含。 注释文本每行缩进4个空格;每个注释文本分项名称应对齐。 /*********************************************************** 文件名称: 作 者: 版 本: 说 明: 修改记录: ***********************************************************/
} 嵌套越少越好,{}不准超过3层
5.6 switch 语句
1) 每个 case 和其判据条件独占一行。 2) 每个 case 程序块需用 break 结束。特殊情况下需要从一个 case 块顺序执行到下一个 case 块的时候除外,但 需要花括号在交界处明确注释如此操作的原因,以防止出错。 3) case 程序块之间空一行,且只空一行。 4) 每个 case 程序块的执行语句保持4个空格的缩进。 5) 一般情况下都应该包含 default 分支。 Switch ( ) { case x:
6.程序结构 6.1 基本要求
1) 有 main()函数的.c 文件应将 main()放在最前面,并明确用 void 声明参数和返回值。 2) 对由多个.c 文件组成的模块程序或完整监控程序,建立公共引用头文件,将需要引用的库头文件、标准寄存 器定义头文件、自定义的头文件、全局变量等均包含在内,供每个文件引用。通常,标准函数库头文件采用尖 角号< >标志文件名,自定义头文件采用双撇号″″标志文件名。 3) 每个.c 文件有一个对应的.h 文件,.c 文件的注释之后首先定义一个唯一的文件标志宏,并在对应的.h 文件中 解析该标志。 在.c 文件中: #define FILE_FLAG 在.h 文件中: #ifdef FILE_FLAG #define XXX #else #define XXX extern #endif 4) 对于确定只被某个.c 文件调用的定义可以单独列在一个头文件中、单独调用。
单片机汇编语言编程规范
单片机汇编程序编码规范排版1.程序使用缩进方式;tab默认宽度设为8个空格;2.在指令和操作数之间,使用tab进行间隔,使代码清晰易读;3.不同代码段之间使用空行间隔;4.一行最多写一条指令;5.定义寄存器和标志位时,保持对齐,便于阅读和检查内存的使用情况。
注释1.注释在必要的地方必须有注释;注释要简洁,准确,易懂;2.注释应放在指令的上方或右方相邻位置,不可放在下方;如放在上方要用空行与上面的代码隔开;3.文件的头部,必须进行注释。
注释内容:文件名,作者,目的,功能,注意点,修改日志;4.子程序头部必须进行注释。
注释内容:目的,功能,输入参数,输出参数,涉及到的寄存器,调用的其他子程序,修改日志;5.对重要代码段的功能,意图进行注释,提供有用的,额外的信息;并在该代码段结束的地方加入注释标明该段代码结束;6.对应常量,寄存器的命名,如果其命名不能充分自注释的,要加入注释,说明其含义;7.保持代码和注释的一致性,调整代码时,更新相应的注释,删除无用的注释;命名1.标识符的缩写:a)缩写方法:i.取每个单词的头一个或几个字母;ii.使用变量名中有典型意义的单词;如count of failure 写成FailCount;iii.去掉无用的单词后缀;iv.使用标准的或通用的缩写;如int(中断),i2c(双线通信);b)缩写原则:i.缩写应保持一致;ii.在文件头部加入注解来说明非通用的缩写;2.变量名命名:<前缀>+主体;注释i.原则:简单,直观,不易混淆,能够望文知义;ii.单词的首字母大写,余下小写;不同单词词组之间最好用下划线隔开;3.常量命名:同上4.子程序命名:动词+名词;5.目前采用的统一命名前缀:i.寄存器名:R_;ii.子程序名:F_;iii.子程序中的标号:S_;iv.主程序中的标号:L_;v.位标志:B_;可维护性1.子程序中关系较为紧密的代码应该尽可能相邻;2.每个子程序的代码原则上少于200行;3.语句嵌套不得超过5层;4.避免相同的代码在多个地方出现;多用子程序;5.每个子程序完成单一的功能,不设计面面俱到的子程序;6.在子程序的说明中,应该指出使用的单片机型号;7.使用专门的初始化头文件对所有的端口和寄存器进行初始化。
单片机程序设计编程规范
单片机程序设计编程规范单片机程序设计编程规范1. 编程风格和规范1.1 代码命名规范1.1.1 变量和函数名使用小驼峰命名法1.1.2 常量名使用大写字母和下划线1.1.3 类名使用大驼峰命名法1.2 代码缩进和格式化规范1.2.1 使用四个空格进行缩进1.2.2 在适当的地方使用空行来提高代码的可读性1.2.3 使用代码格式化工具保持一致的代码风格1.3 注释规范1.3.1 使用注释来解释代码的目的和实现方式1.3.2 在必要的地方添加注释,但要注意不要过度注释 1.3.3 注释要与代码保持一致,即时更新1.4 错误处理规范1.4.1 使用合适的错误处理机制,如返回错误码或抛出异常1.4.2 在适当的地方添加错误处理代码,保证程序的稳定性和可靠性2. 程序结构和模块化2.1 主函数结构2.1.1 初始化操作2.1.2 主循环2.1.3 退出程序操作2.2 模块化设计2.2.1 将功能相似的代码块封装成函数2.2.2 使用头文件将相关函数和变量声明集中管理2.2.3 将各个模块分开编写,并在主函数中进行调用3. 嵌入式系统开发规范3.1 中断处理规范3.1.1 中断函数中应尽量减少执行时间3.1.2 使用适当的同步机制保证数据的正确性3.1.3 在处理中断前禁止其他中断3.2 低功耗设计规范3.2.1 合理使用睡眠模式和待机模式3.2.2 关闭不必要的外设以降低功耗3.2.3 使用定时器唤醒系统时,应确保精确性和可靠性4. 调试和测试规范4.1 代码调试4.1.1 使用一种可靠的调试工具4.1.2 在关键代码处增加日志信息以便调试4.1.3 避免使用过多的断点以提高调试效率4.2 系统测试4.2.1 对关键功能进行全面的测试4.2.2 编写完善的测试用例并进行模拟测试4.2.3 持续监控和优化系统性能5. 文档管理规范5.1 文档命名规范5.1.1 使用简洁明了的文档名称5.1.2 在文件名中包含版本号和日期信息5.1.3 使用统一的命名规则,方便查找和归档 5.2 文档书写规范5.2.1 使用简洁明了的语言表达清楚的意思 5.2.2 文档内容要完整、准确、可读性强5.2.3 在文档中引用必要的资料和来源本文档涉及附件:- 附件1:代码示例- 附件2:模块设计图本文所涉及的法律名词及注释:- 法律名词1:注释1- 法律名词2:注释2。
单片机开发版课程设计
单片机开发版课程设计一、课程目标知识目标:1. 学生能理解单片机的基本原理和结构组成,掌握其工作流程。
2. 学生能掌握单片机编程的基本语法和编程技巧,具备编写简单程序的能力。
3. 学生能了解单片机开发板的基本功能,熟悉相关外围设备的连接和使用。
技能目标:1. 学生能够运用所学知识,设计并实现具有实际功能的小型单片机系统。
2. 学生能够通过编程,实现单片机对外围设备的控制和数据交互。
3. 学生能够解决在单片机开发过程中遇到的问题,具备一定的调试和优化能力。
情感态度价值观目标:1. 学生培养对单片机技术及电子工程的兴趣,激发创新意识。
2. 学生在团队合作中,学会沟通、协作,培养团队精神和责任感。
3. 学生通过单片机开发,认识到科技对社会发展的作用,增强社会责任感和使命感。
分析课程性质、学生特点和教学要求:本课程为单片机开发板课程设计,旨在让学生通过实际操作,掌握单片机的基本知识和技能。
课程性质为实践性、综合性。
学生特点为具备一定的电子技术基础和编程能力,求知欲强,喜欢动手实践。
教学要求注重理论与实践相结合,培养学生的动手能力和创新能力。
课程目标分解为具体学习成果:1. 学生能够独立完成一个具有实际功能的小型单片机系统设计。
2. 学生能够编写程序,实现单片机对外围设备的控制和数据交互。
3. 学生能够在课程结束后,对单片机技术有更深入的了解,具备进一步学习和研究的能力。
二、教学内容1. 单片机原理概述:介绍单片机的概念、发展历程、基本组成和功能特点。
- 教材章节:第一章 单片机概述- 内容列举:单片机的发展历程、结构组成、工作原理。
2. 单片机编程基础:讲解单片机编程语言(如C语言)、编程规范和技巧。
- 教材章节:第二章 单片机编程基础- 内容列举:C语言基础、编程环境搭建、程序结构、常见编程技巧。
3. 单片机开发板使用:介绍单片机开发板的功能、外围设备及其使用方法。
- 教材章节:第三章 单片机开发板与应用- 内容列举:开发板硬件结构、外围设备接口、编程与调试方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机程序设计编程规范本规范适用于松翰科技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 。
例如:就按键来说,一般有Key buffer、Key FIFO或直接进入AP FIFO三种设计方式。
Key buffer:一般用于保存数字按键信息。
例如:在电话机的设计中,需要记录按键内容用于LCD显示、最后数字确认、数字存储等,这时候需要把按键值的信息(0123456789*#)记录在Key buffer中;Key FIFO:一些功能按键可以将相应信息列入到Key FIFO中,等待应用层的取用,这样可根据不同的工作模式进行不同的处理及动作。
这些类似的观念可以应用在许多周边中:输入类:Key、RF Data input、UART data input、Switch input等;输出类:LCD display、LED display、UART data output等。
APP FIFO(应用界面层):主要是将发生的事件储存在APP FIFO里面等待适当的时间依序处理,不然有可能造成系统在某一程序物件里面循环,从而降低系统的实时性(Real-Time)。
4)每个子程序模块只能有唯一一个程序入口地址在程序的首部,只能有唯一一个程序出口地址在程序的尾部。
例如:以下的写法是不规范的(两个RET出口,存在调试时不易设立断点,程序可读性降低等问题):lable:b0bts0fzret…clr yret应该改为(只有一个出口位置,标号为lable90,便于程序检查):lable:b0bts0fzjmp lable90….clr ylable90:ret5)上电复位时要对所有的RAM空间进行初始化(建议用户寄存器清零,系统寄存器进行必要设定),不要使用未经初始化的变量。
RAM未经过完整的初始化,容易导致程序执行的不确定性,这一不良现象往往在批量生产中有所体现。
(这点是工程师经常犯错的地方,须特别注意)6)系统中如果需要等待一些未知的应答信号,如通信或等待输入信号时,必须进行超时或异常处理,以防止程序进入“死等”状态。
例如在红外接收中,由于信号的突然消失或干扰从而无法得到一帧完整或正确的信息,这时需要复位接收程序的入口条件并退出接收程序,而不是一直等待信号的来临。
不然无法进行下次接收甚至会影响到其它程序的执行。
7)通过对系统数据结构的划分与组织的改进,以及对程序算法的优化来提高空间效率。
这种方式是解决软件空间效率的根本办法。
8)保证循环体内的工作量最小化。
应仔细考虑循环体内的语句是否可以放在循环体之外,使循环体内工作量最小,从而提高程序的执行效率。
9)在多重循环中,应将最忙的循环放在最内层。
10)中断处理程序应尽量短。
有效的作法为:在中断中进行标记,在主程序中进行处理。
但一些实时性要求较高的程序例外。
此外,进入中断时应该保存涉及到的变量和寄存器。
11)看门狗的正确使用。
看门狗主要用于微控制器死机时的时间溢出复位,需要程序适时清除。
正确的处理方式为:整个系统程序中尽量保证只有一处清看门狗位置,而且应处在主循环的主干位置。
切记不可在定时中断中清狗,因为微控制器有时只是在主循环中死掉。
(所有AC电源的应用程序都必须强迫加入看门狗选项尤其是条件式的看门狗有利于系统发生异常后的重启动)排版风格二、二、排版风格1、程序采用缩进风格编写,缩进为1个Tab键,1个Tab键定义为8个空格位。
2、程序中的标号要从第一列开始书写。
以“.”开头的预编译命令也要从第一列开始书写,其他预编译命令采用缩进风格编写。
例如:1)以“.”开头的预编译命令要从第一列开始书写,其他预编译命令采用缩进风格书写。
.LIST;从第一列开始书写INCLUDESTD macro1.h.CONSTNUMBER EQU55h.DATAwk00DS1.CODEORG0h2)标号要从第一列开始书写。
main:;从第一列开始…jmp main;缩进8个空格位3)变量或常量的定义采用缩进风格。
例如:.DATAkeybuf DS1.CONSTNUMBER EQU84)定义变量或常量时,变量名或常量名与命令符之间使用2个Tab键(相当于16个空格位)分开,命令符与后面的操作数用1个Tab键(相当于8个空格位)分开。
例如:keybuf DS1NUMBER EQU55h5)操作码与操作数之间用1个Tab键(相当于8个空格位)分开。
ORG80hmov a,NUMBERtable:DW1234h6.)程序中两个操作数之间用一个“,”作为分隔符,“#”号与立即数之间不需要分隔符。
例如:mov a,#55h7)标号要单独占一行。
8)相对独立的程序块之间必须加空行。
例如:ORG10hINCLUDE sys.asmINCLUDE int.asmINCLUDE key.asm9)程序语句后面若有注释,所有的注释要遵守上下对齐的原则。
例如:b0mov l,#7fh;use dp0x(hl)pointermov a,#00;set pointer=007fh应该书写为:b0mov l,#7fh;use dp0x(hl)pointermov a,#00;set pointer=007fh程序可读性与可维护性三、三、程序可读性与可维护性1.程序中的语句、标号、变量使用小写英文字母,常量与预编译命令使用大写英文字母,以便和一般的语句进行区分。
例如:NUMBER EQU55h.DATAaccbuf DS1.CODE…mov a,#NUMBER2.表示不同进制的立即数,要在立即数后面加上不同的进制符号。
例如:mov a,#00100011bmov a,#23h不建议使用:mov a,#0x233.一般情况下,变量和常量要分开定义,不要混在一起。
变量在”.DATA”段中定义,采用命令符“DS”,常量在”.CONST”段中定义,采用命令符“EQU”。
.CONSTNUMBER EQU10.DATAaccbuf DS14.程序中不使用未定义或意义不明确的常量。
例如:下面的赋值方法要避免使用:…mov a,#3;不要直接使用意义不明确的数字,在常量中做定义mov r,a…建议采用如下赋值方法:.CONSTNUMBER EQU3;循环次数….CODE…mov a,#NUMBERmov r,a5.整个程序的结尾要以“ENDP”语句结束。
6.当一段代码在程序中有多个地方使用时,建议采用子程序调用或宏命令的方式来替代。
如此,对该代码段的修改就可在一处完成,增强代码的可维护性。
7.程序中关系较为密切的子程序代码尽可能相邻。
8.避免程序中的垃圾代码,预留代码应以注释的方式出现。
程序中的垃圾代码不仅占用额外的空间,而且还可能影响到程序的功能与性能,很可能给程序的测试、维护等造成不必要的麻烦。
注释四、注释四、1.程序应该包括两个部分注释,说明部分和语句注释。
一般情况下,源程序有效注释量必须在30%以上。
2.说明部分:1)源文件说明部分位于每个源文件的最前面,主要描述:文件名、作者、生成日期、联络方式、功能描述、版本号、软硬件平台、版权说明、修改记录等的简要说明,以英文书写。
例如:/*************************************************File name:;文件名Author:;作者Date:;日期Email:;邮箱地址Description:;功能描述Version:;版本号Hardware&IDE;软硬件平台Copyright(C),SONIX TECHNOLOGY Co.,Ltd.History:;修改记录*************************************************/2)子程序说明部分位于每个子程序的最前面,主要描述:子程序名称、功能、设计原理、所用变量、入口条件、出口信息、调用模块、堆栈层数、影响资源、算法简述、使用说明和修改记录等。