摘 要 文章针对“单片机C语言程序设计”教学中存在的编程困扰,提出在教学实践中重视引导学生进行模块化、规范性程序设计,强调规范化编程对学生理解程序的结构与功能的重要作用,并贯穿于课程教学的始终,使学生的单片机应用能力得到了极大的提高。
关键词 单片机 C语言 规范性
中图分类号:G424 文献标识码:A DOI:10.16400/ki.kjdkz.2015.08.062
On the C Language Programming Normative in MCU Course
HUANG Xiaofeng
(Advanced Vocational Technical College, Shanghai University of Engineering Science, Shanghai 200437)
Abstract: For "SCM C language programming" teaching in programming problems, he attached importance to guide students in teaching practice modular, standardized program design emphasizes standardized programming for students to understand the structure and function of the program's important role and throughout the Teaching has always been, so that students micro controller applications has been greatly improved.
Keywords: SCM; C language; normative
0 引言
单片机技术课程一直以来作为高职计算机应用、电气自动化、应用电子技术等专业的主干课程。通过对单片机技术职业岗位需求分析可知,高职毕业生从事与单片机相关的职业技术岗位,主要有硬件测试工程师、软件测试工程师、硬件设计助理工程师、软件设计助理工程师等工作岗位。目前高职单片机课程多以MCS51系列为主,学生踏入工作岗位后,会涉及到其他各种类别的单片机,如AVR、MSP430、PIC等。由于软件编程灵活性强,对逻辑思维能力要求高,在单片机教学中学生普遍反映编程时无从下手,程序调试错误百出,面对调试中出现的问题不知如何修改验证,上机编程的教学实践过程更多则沦为代码录入。本文针对“单片机C语言程序设计”教学中存在的编程困扰,提出在教学实践中重视引导学生进行模块化、规范性程序设计,培养学生良好的编程习惯,提高程序的易读性、可移植性,为将来步入职业技术岗位打下坚实基础。
1 单片机C语言编程的规范性
以Kei C51软件编程为例并结合多年的教学经验,将单片机C语言编程的规范性主要归纳为:(1)文档的规范性;(2)变量、函数的规范性;(3)程序书写的规范性;(4)模块化编程等四个方面。
1.1 文档的规范性
任何一个单片机C程序都应该在工程下进行编译和管理,一个工程可以包含多个C文件,不同的C文件分别实现一个相对独立的功能。在单片机课程教学中部分学生一开始就忽略了工程的概念,或者通过一个C文件试图实现所有功能,这在功能较为单一的系统中是可行的,但稍微复杂一点的系统要想通过一个程序来完成其所有功能,程序的可读性和可移植性就会变差。因此,在编程之初就要强调工程对C程序源文件的管理作用,以及工程所包含的各个C文件之间的相互关系,并通过对C文件规范化的命名体现其功能,如键盘模块命名为key.c,显示模块命名为display.c,数据处理模块命名为datapro.c。
1.2 变量、函数的规范性
变量、函数的规范主要体现在命名的规范,一般要符合匈牙利命名规范。如表1所示,主要注意字母的大小写是有区分的,取名要与变量或函数的含义或完成功能相一致,并且要在教学中一直贯彻使用,望文生义以增强易读性。
此外,由于单片机头文件对一些常用的符号变量和特殊功能寄存器进行了定义声明,因此编程时对相关符号变量和特殊功能寄存器的操作一定要与头文件中的定义声明保持一致。如51单片机reg51.h头文件对端口(P0~P3口)、特殊寄存器、特殊的位、中断函数等做了定义声明,用户在对相关端口或SFR进行操作时只能严格的按照头文件中的声明使用,不能按照自己的想法随便更换名字,否则会造成编译出错,如果要想按照自己的习惯书写,要重新声明定义。如P1.0口在定义为P1^0,若想用P1_0表示则必须用“sbit P1_0=P1^0;”作声明。常用的51系列单片机在KeilC51软件中的一些定义格式如表2所示。
表2 或头文件中常用的一些定义
3 模块化编程
模块化、规范化的程序设计,是提高程序的易读性、可移植性和复用性最为重要的手段。模块化程序设计的集中体现为六个字即“高内聚低耦合”。按照自顶向下的原则进行程序设计时,首先是引导学生进行系统功能分析,按照“低耦合”的原则进行软件模块的划分,勾勒出由主程序及各模块子程序搭建的大骨架、粗线条轮廓,继而深入到各个软件模块内部,依据“高内聚”的原则确定模块内程序结构。
以单片机无线多路温度采集系统为例,简单介绍软件编程的具体思路。如图1所示,无线多路温度采集系统主要包括单片机、温度数据采集、无线信号传输、键盘与显示器等模块,完成四路温度数据采集,并在液晶屏上显示实时温度信息。
图1 温度采集系统硬件框图
图2 温度采集系统软件模块组成
在课程教学中,依据无线多路温度采集系统功能,软件编程划分为温度采集、按键控制、显示、无线通信等子模块。其中温度采集程序完成温度数据采集与处理,键盘控制程序键扫描及处理,LCD显示程序完成屏幕刷新,无线通信程序实现单片机与PC机间的数据交换。各模块功能单一,且模块之间无直接联系,通过主程序对各模块进行调用与协调完成系统功能,每个模块作为一个函数、或单独作为一个C文件,并通过主程序完成各模块文件的调用与协调,其关系图如图2所示。可以看到,模块与模块之间耦合度较低,有利于程序的维护与移植。
1.4 程序书写的规范性
程序书写的规范性能够极大增加了程序的易读性。主要体现在:采用空行或注释符号分隔程序段落;if、for、while、do等语句自占一行,执行语句不得紧跟其后;程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐;如果出现嵌套的{},则使用缩进对齐;一般重要的代码行或段落采用“//” 注释提示等。
2 结束语
单片机C语言编程由于逻辑性强,高职学生普遍存在编程困难,在课程教学中通过引入规范性编程,从文档的规范性、变量及函数的规范性、程序书写的规范性,以及模块化编程等四个方面,强调规范性程序设计对于学生认识、理解程序的结构与功能至关重要,在此基础上进行程序设计,使学生单片机应用能力得到了极大的提升,所带学生在全国职业院校“机器人应用技术”取得了优异成绩,毕业后也得到用人单位的肯定与好评。