C语言在单片机开发中的重要性
2009-10-22薛二阳
薛二阳
摘 要 单片机已经渗透到社会的各个领域中,学好单片机对电子行业以及相关行业的工程技术人员来说已经非常必要,本文主要对比了单片机开发语言中的汇编语言和C语言,说明了C语言在单片机开发中的重要作用。
关键词 单片机 C语言 汇编 电子
中图分类号:TP313文献标识码:A
电子行业飞速发展,单片机渗透到各个领域之中。如冰箱、空调、音响、手机等等,都用到单片机来做智能控制。因此单片机是电子技术对于很多行业的技术人员都是需要掌握的一门技术。而学习单片机除了需要掌握一定硬件知识,还需要掌握至少一门计算机语言。目前许多学习单片机的人都以汇编语言作为编程语言,因为汇编语言有其独特的优点。但是作为一种结构化的程序设计语言,C语言可以使你尽量少地对硬件进行操作,具有很强的功能性、结构性和可移植性,是一门非常实用的单片机系统的编程语言。也是单片机开发人员必学的一门语言。
计算机只能识别二进制数,所以计算机的指令均由二进制代码组成。为了阅读和书写的方便,常把它写成十六进制形式,通常称这样的指令为机器指令。一般的计算机指令都有几十到几百种。即便用十六进制去书写和记忆也是不容易的,为了便于记忆和使用,制造厂家对指令系统的每一条指令都给出了助记符。助记符是根据机器指令不同的功能和操作对象来描述指令的符号。由于助记符是用英文缩写来描述指令的特征,因此它不但便于记忆,也便于理解和分类。这种用助记符形式来表示的机器指令称为汇编语言指令。这种语言在单片机中使用有很大优点。但是它也存在着不足之处。首先,使用汇编语言编程比使用高级语言困难。因为汇编语言是面向计算机的,汇编语言的程序设计人员必须对计算机硬件有相当深入的了解。其次,汇编语言缺乏通用性,程序不易移植,各种计算机都有自己的汇编语言,不同计算机的汇编语言之间不能通用。而C语言编写的代码虽然不如汇编语言的执行效率高,但却更容易记忆,程序结构简单,而且具有可移植性。
C语言由于其功能强、使用灵活、可移植性好、目标程序质量好而受到广泛的欢迎。具体而言C语言的主要有如下这些特点:(1)语言简洁、紧凑,使用方便、灵活。C语言一共只有32个关键字,9种控制语句,程序书写形式自由,主要用小写字母表示,压缩了一切不必要的成分。(2)运算符丰富,灵活使用各种运算符可以实现在其他高级语言中难以实现的运算。(3)数据结构丰富。C的数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。(4)具有结构化的控制语句。用函数作为程序的模块单位,便于实现程序的模块化。(5)语法限制不太严格,程序设计自由度大。使用时会出现一些“副作用”。(6)C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。 C语言兼有高级和低级语言的特点。(7)生成目标代码质量高,程序执行效率高。一般只比汇编程序生成的目标代码效率低10%-20%。(8)用C语言写的程序可移植性比汇编语言好。
总之,C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能,常把其成为中级语言。C语言有功能丰富的库函数、运算速度快、编译效率高、有良好的可移植性, 可以直接实现对系统硬件的控制。C语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C语言进行程序设计已成为软件开发的一个主流。用C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完备的系统。
在单片机中使用C语言进行编程,还有许多突出优点。不懂得单片机的指令集,也能够编写完美的单片机程序;不懂得单片机的具体硬件,也能够编出符合硬件实际的专业水平的程序;中断服务程序的现场保护和恢复,中断向量表的填写,是直接与单片机相关的,都由C编译器代办;提供常用的标准函数库,以供用户直接使用;头文件中定义宏、说明复杂数据类型和函数原型,有利于程序的移植和支持单片机的系列化产品的开发;有严格的句法检查,错误很少,可容易地在高级语言的水平上迅速地被排掉;可方便地接受多种实用程序的服务:如片上资源的初始化有专门的实用程序自动生成;再如,有实时多任务操作系统可调度多道任务,简化用户编程,提高运行的安全性;提供auto、static、const等存储类型,自动为变量合理地分配地址等等。
因此,用C语言进行单片机程序设计是单片机开发与应用的必然趋势。所以作为一个涉足较大规模的软件系统开发的单片机开发人员除了掌握汇编语言之外,还需要握基本的C语言编程。
参考文献
[1] 王平,邢建春,王林.一种快速有效拦截弹飞的单片机程序新方法.微计算机信息,1997.4(13):80~81.
[2] 马忠梅,籍顺心,张凯,马岩.单片机的C语言应用程序设计.北京:北京航空航天大学出版社,1999.
[3] 谭浩强. C语言程序设计.清华大学出版社,2007.