单片机课设心得体会 [MCS—51单片机课的教学探讨分析]

  摘要:通过对汇编语言、C语言进行特点说明及应用分析,结合实际教学,探讨在MCS-51单片机的教学中如何处理好对编程语言的选择问题。
  关键词:MCS-51单片机;汇编语言;C语言;教学探讨
  中图分类号:G642.4 文献标志码:A 文章编号:1674-9324(2013)36-0259-02
  一、引言
  MCS-51单片机课属于嵌入式系统的基础专业课程,实践性很强[1]。其教学目前存在两种倾向:一种是采用传统的采用汇编语言教学;另一种是采用C语言教学。前者认为汇编语言贴近机器语言,有助于学生很好的理解单片机硬件资源;后者认为用C语言教学,能让学生掌握C语言在单片机中的应用。由于目前在嵌入式系统的工程项目开发中基本上都采用C语言,因此采用C语言教学,有助于学生尽快利用单片机进行相关工程项目的开发,使学生在日后的相关工作中尽早适应公司的需要,得到公司的认可。那么,在教学中到底如何处理语言的选择问题,本文就是基于这个问题进行探讨分析。
  二、分析汇编语言的特性及应用
  汇编语言主要特性表现如下:首先是汇编语言的可移植性和通用性差。汇编语言与机器的相关性很强,其指令是机器指令的一种符号表示。由于不同类型的CPU有不同的机器指令系统,从而其对应的汇编语言也是不同的,因此,汇编语言程序与机器有着密切的关系。对于同系列、不同型号CPU之间的汇编语言程序,它们有一定程度的可移植性,但对于其他不同类型CPU之间的汇编语言程序是无法移植的,所以说汇编语言程序可移植性比较差,即其通用性相对于其他语言(如C语言)来说比较差。其次是汇编语言执行的高效率。正是由于汇编语言与机器有很强的相关性,程序员用汇编语言编写程序时,可对机器内部的各种硬件资源进行合理的安排,使它们始终处于最佳状态。因此汇编语言程序代码能很好地对应机器内部资源,并可以对内部资源直接操作,相对于其他语言(如C语言)编写的程序,其程序执行代码短,执行速度快,执行效率高。再次是汇编语言编写程序的复杂性。由于汇编语言与机器的相关性强,因此是一种面向机器的语言。因为汇编语言的汇编指令与机器指令基本上一一对应,所以,汇编指令具有功能单一、具体的特点。要用这些简单指令完成某件具体任务,就要求对任务的每一个细节都进行具体细致的安排,那么编写出汇编语言程序一定比较繁琐、复杂,当然这也是相对于其他高级语言(如C语言)而言的。最后是汇编语言程序调试的复杂性。汇编语言程序调试的复杂性表现如下:
  其一,由于汇编语言指令涉及到机器内部资源的具体细节,因此,要求程序员在编写具体任务程序前,首先必须清楚机器内部硬件资源,在程序的调试过程中必须清楚这些资源的状态变化;其二,为了很好地表示要完成的任务,程序员在编写程序时必须要用大量的各类转移指令,这些转移跳转指令将极大地增加了调试程序的难度。
  综上,由于汇编语言的与机器相关性,使得它具有代码执行的高效性优势,但同时也引发其代码编写的复杂性,可移植性差和调试难等劣势。因此,在实际应用中汇编语言有其不可替代优势,有其在应用方面的复杂性。
  三、分析C语言的特点及应用
  标准C语言是一种不依赖于具体机器的智能化高级语言,易于学生接受学习。目前,C语言是世界上应用最广泛的几种计算机语言之一,国内工科院校普遍将其作为一种基础计算机语言进行教学。作为计算机基础语言,它有以下特点:
  1.C语言简洁、紧凑,使用灵活、方便。C语言共有9种控制语句。由于引入结构化的控制语句(如for语句、while语句等),引入函数作为程序的基本模块,从而使C语言具有了结构化和模块化,使程序组织结构清晰,紧凑。C语言共有32个关键字,语法限制不太严格,区分大小写,主要用小写字母表示,程序设计自由度大,程序书写形式自由,使用方便、灵活。相对于其他高级语言,C语言简洁,源程序短,程序输入工作量少,使用灵活、方便。
  2.C语言运算符和数据类型丰富。C语言运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理,使其运算符类型极其丰富。C语言丰富的运算符类型使其具备处理复杂运算的能力。C语言的数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等,能用来实现各种复杂的数据结构的运算。
  3.C语言可直接对硬件进行操作。由于C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作,因此它既有高级语言的功能,又有低级语言的许多功能,能够像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
  4.C语言生成目标代码质量高,程序执行效率高,可移植性好。相对于其他高级语言,C语言生成目标代码质量高,程序执行效率高。但相对于汇编语言,其生成的目标代码效率还是要低10%~20%。与汇编语言相比,C语言编写的程序基本上不做修改就能用于各种型号的计算机,因此C语言编写的程序便于移植。
  综上,C语言是结构式模块化的高级语言,该语言简洁紧凑、灵活方便、运算符和数据结构丰富。其最大特点是适用范围大,数据处理能力强,可移植性好,正是基于这点使其在嵌入式系统开发中得到广泛应用。
  四、单片机原理及应用课的教学分析
  MCS-51单片机课是一门偏硬件的课程,包含两部分内容:单片机原理和单片机应用。因此,在教学中有必要对两者区别处理。单片机原理主要讲述MCS-51单片机的结构、组成原理;MCS-51单片机芯片的引脚结构、功能;MCS-51单片机的内部结构组成,包括其内部包含的寄存器、RAM、ROM等资源;MCS-51单片机P3口的第二功能:中断功能、定时/计数器功能以及串口通信功能。上述MCS-51单片机内容都是单片机的硬件组成结构,对这部分的讲解必须借助一种语言工具,而且要求这种语言工具能充分的表达单片机的硬件结构。   基于前面对汇编语言的分析,可以发现其与机器相关性的特点使得该语言工具能有效地表达单片机的硬件结构,满足教学MCS-51单片机原理的需要。比如,对MCS-51单片机的不同存储空间进行操作时,汇编语言可以通过采用不同的汇编指令加以区别:对内部RAM空间操作可采用MOV指令,对内部ROM空间操作可采用MOVC指令,而对外部扩展RAM空间操作时可采用MOVX指令。当然对MCS-51单片机的寄存器进行操作就是对内部RAM进行操作,也用MOV指令。还有,在对MCS-51单片机串口进行数据传送时,在硬件上只要对SBUF进行操作就行,即利用MOV SBUF,A发送数据,利用MOV A,SBUF指令接收数据[2],这样看起来就非常的清楚、简洁、易于理解。显然,汇编语言是理解整个单片机系统内部硬件结构的最佳起点和最有效途径[3]。汇编语言采用助记符直接描述机器指令,比机器指令容易记忆和理解。学习和使用汇编语言,能够感知、理解机器的硬件逻辑功能。因此,在单片机原理的教学中采用汇编语言效果会更好。目前,大多数MCS-51单片机的教材中对于单片机应用的讲解中,普遍将键盘,LED数码管,LCD以及电机等作为教学重点。有的教材还将I2C总线,SPI总线等的应用作为单片机的应用内容进行讲解,这主要是因为51单片机没有这些总线接口,一般采用MCS-51单片机模拟这些总线接口。单片机应用中的内容都利用了MCS-51单片机的IO端口来进行应用操作。如果学生通过汇编语言掌握了MCS-51单片机的硬件原理,那么应用内容可采用C语言进行讲解,使学生能理解C51语言在单片机上的应用。通过实验训练能够让学生掌握C51语言在单片机开发中的应用。
  基于前面分析,C语言简洁紧凑、灵活方便、运算符和数据结构丰富。其最大特点是适用范围大,数据处理能力强,可移植性好[4]。那么,在单片机应用的教学中采用C51语言,不但有助于学生更好的掌握C51语言在单片机开发中的应用,也有助于学生为后续的嵌入式系统开发中利用C语言打下坚实的基础。
  目前,在MCS-51单片机课的教学中,安排有理论课,实验课和课程设计。在理论课和实验课中,主要采用汇编语言,从而让学生熟悉汇编指令,并通过汇编语言理解、掌握单片机原理及部分应用内容;在课程设计中,让学生自己设计题目,利用C51语言完成题目所设定的任务。鉴于C语言在嵌入式工程应用中的重要性,在课程开始就强调让学生自学C51语言;讲解MCS-51单片机应用内容时采用C51语言;实验中,验证性实验要求用汇编语言,综合实验要求用汇编语言和C51语言两种语言完成;最后的课程设计中可以明确要求用C51语言完成题目要求。
  五、结论
  MCS-51单片机课是一门实践性很强的嵌入式基础性课程,因此,一方面在教学中对单片机原理采用汇编语言教学,以便学生理解MCS-51单片机的硬件结构[5];另一方面加强学生对C51语言在单片机应用中的熟练掌握,这可在单片机实验及课程设计中得到加强。实践证明,这种教学安排是可行的、有效的。
  参考资料
  [1]赖晓晨,周宽久,夏锋,等.嵌入式系统工程实例解析[M].北京:清华大学出版社,2012.
  [2]王新颖.单片机原理及应用[M].北京大学出版社,2008.
  [3]张毅刚,彭喜元.单片机原理及接口技术[M].北京:人民邮电出版社,2008.
  [4]马斌,韩忠华,王长涛,等.单片机原理及应用——C语言程序设计与实现[M].北京:人民邮电出版社,2009.
  [5]李广弟,朱月秀,王秀山.单片机基础[M].北京:北航出版社,2007.