搜索

  OFweek 2017“维科杯”中国锂电行业年度评选
  OFweek 2017(第二届)中国医疗科技大会
  OFweek2017中国高科技产业大会

查看: 1831|回复: 1

各种单片机编程语言比较-新手推荐 [复制链接]

Rank: 4

贡献值
213
金币
757
帖子
122
发表于 2012-12-19 14:20:18 |显示全部楼层
各种单片机编程语言比较
苏培华1,师玉军2
(1.西安外事学院信息工程学院,陕西西安710077;2.西安电力电子技术研究所,陕西西安710061)
摘要:单片机目前在越来越多的领域得到了广泛应用,可用于对单片机进行编程的语言很多,最
常见的为汇编语言、c语言、PL/M.和BASIC等4种语言.对各种编程语言的优缺点作了详尽的分析后, 、
为单片机技术的初学者指明学习单片机编程语言的方向.
关键词:单片机;编程;C语言
中图分类号:TP312 文献标识码:A
0引言
随着单片机技术日新月益的发展,学习和应用它的人越来越多.对于初学者来说很多人一开始经常会被单片机的各
种各样的编程语言搞糊涂.因为单片机目前的编程语言常见的有4种,即汇编语言、C语言、PL/M和BASIC语言.究竟要
学习哪一种编程语言好呢?在这里先来对这4种语言作个比较,方便大家对这4种语言有所认识.
1 BASIC编程语言
BASIC是一种高级语言,它的英文含义是“初学者通用符号指令代码”,是在1965年5月,由美国科学家托马斯·库
尔兹研制出来的.10多年后,微软公司把它移植到微型机上.几十年来,BASIC语言一直被认为是初学者编程的语言.它
已经由QBASIC发展到VB#版本,具备了很多结构化思想和编程方式,如函数、模块、局部变量、全局变量、数据传递等.
早期的BASIC语言由于生成的代码不是最终目标机器的代码,而是经过一个RUNTIME程序解释后运行的,所以执行效
率低,但这种逐行解释的方法很容易找到程序中的错误,而不是当程序执行完才能显现出来.而单片机的BASIC编译器
是直接将程序代码编译成相应芯片的机器码,不需要在单片机的内存中驻留RUNTIME程序,执行效率与其他编译器编
译出来的一样.此外初学者还需要注意,BASIC为简化使用变量,所有变量都用浮点值,这一点与后面我们将介绍的c语
言存在差异.
现在以MCS—Electronics公司开发出来的BASCOM一8051开发环境为例,简要介绍一下以BASIC语言为基础的单
片机编程系统.它和一般BASIC语言一样具有如:For、To、Step、If、Else、End、Select Case等等命令,其用法及功能是没什
么区别的,因此初学者比较容易人门.
另外,它还有针对单片机硬件所设计的命令如:LCD命令可以用一条命令来实现LCD的显示操作.
Cls /清LCD屏
Lcd“How are you” /向LCD输人字符串“How are you”
类似于这样的命令主要是提供了直接对单片机及其外部硬件的操作,特别是提供了对单片机端口的直接操作,如:
P1,P2,P2.1,Po.3等等,简化了整个开发过程,是开发人员重点学习的部分.
2 PL/M编程语言
PL/M语言是Intel公司从8080微处理器开始为其系列产品开发的编程语言,其特点是: ’2.1简单易学
PL/M一51语言只有两类语句:一类是说明语句,用于说明变量和过程;另一类是可执行语句,如赋值语句、条件语句
和循环语句等.这些语句的功能和BASIC语言中相应的语句相似,如:
P1=02H;/·赋值语句十/
IF M>2 THEN N=P1;/十条件语句}/
Do M=0 To 10;/·循环语句}/
2.2可读性好
PL/M一51是一种结构化语言,其程序是模块式结构,可采用缩进式方法书写源程序,使程序层次清楚,便于理解和
阅读.一个完整的程序可由多个模块组成,而每个模块又是由多个程序块构成.这样一个大型的程序就可以分解成多个
小的模块,分别完成一部分功能,可由多人共同完成,这样就大大降低了编程周期,提高了工作效率.这种模块化的程序
设计增加了程序设计的灵活性和方便性.
2.3可靠性高
PL/M一51编译软件检查用户程序对单片机的各种资源使用情况,对冲突使用情况或不合理使用情况能提出警告,
并能自动为用户程序合理分配内存,避免计算机中有效资源的浪费,为使用者提供方便.
2.4隔离性好
PL/M一51中,既可有全局的静态变量,也可有局部的动态变量,对于全局性的静态变量,其性质和BASIC中的变量
一样,该变量在整个程序中均有效.对于局部的动态变量,它只有在其所说明的程序块中或该过程中有效,在该程序块或
该过程之外则无效.局部动态变量的特点是,当由多个人共同编制一个程序中的不同模块时,而不必担心是否使用了相
同的标识符而发生冲突,在最终调试程序时大大减小了工作量.
2.5兼容性好
PL/M一51可同汇编语言或其他语言的目标模块连接起来,生成可执行代码.如果用户必须使用汇编语言编制一段
程序,或是想利用已调好的汇编语言程序块,那么该段汇编可以很方便地连接到PL/M一51程序目标块中.
2.6具有良好的算法库和库管理能力
PL/M一51语言具有Intel公司所提供的算法库和库管理功能.用户能利用现成的算法库完成加、减、乘、除等运算,
并能建立自己的特定算法库,使得编程一劳永逸,提高软件的开发效率.
由上面几点可见,PL/M语言是类似于Pascal一种语言,是一种结构化语言.PL/M编译器好像汇编器一样可产生紧
凑代码,可以说它是一种”高级汇编语言”,可详细控制着代码的生成.但对51系列的单片机来说,PL/M不支持复杂的
算术运算、浮点变量而且无丰富的库函数支持.学习PL/M无异于学习一种新语言,难度相对较大,需要花费较多的时间
和精力.
3汇编语言
汇编语言是一种用助记符来表示机器指令的符号语言,是最接近于机器码的一种语言.其主要优点是占用资源少,
程序执行效率高.由于它一条指令就对应一条机器码,每一步的执行动作都很清楚,并且程序大小和堆栈调用情况都容
易控制,调试起来也比较方便.但是不同的类型的单片机,其汇编语言可能有点差异,所以不易移植.比如你在
PICl2CESl8单片机上用汇编语言编了一个程序,到了STC89C51单片机上那可就运行不了,因为他们的指令系统是有区
别的.
单片机的汇编语言非常像其他汇编语言.指令系统比第一代微处理器要强一些.但单片机拥有不同存储区域使得其
编程变得复杂一些,可是作为一位电子工程师,懂得汇编语言就可帮助你了解影响任何语言效率的特殊规定.例如,懂得
汇编语言指令就可以使用在片内RAM作变量的优势,因为片外变量需要几条指令才能设置累加器和数据指针进行存
取.同样的,当要求使用浮点数和启用函数时也只有具备汇编编程经验才能避免生成庞大的、效率低的程序,对于这方面
的编程,没有汇编语言是做不到的.
4 C语言
单片机的C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能.c语言具有
功能丰富的库函数,运算速度快,编译效率高,有良好的可移植性,而且可以实现直接对系统硬件的控制.此外,c语言程
序具有完整的程序模块结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障.与汇编语言相比,有如下
优点:(1)对单片机的指令系统不要求了解,仅要求对5l的存储器结构有初步了解,至于寄存器分配、不同存储器的寻址
及数据类型等细节均由编译器管理,降低了对编程人员的要求.
(2)程序有规范的结构,可分为不同的函数.这种方式可使程序结构化,将可变的选择与特殊操作组合在一起,改善
了程序的可读性.
(3)编程及程序调试时间显著缩短,从而提高效率.提供的库包含许多标准子程序,具有较强的数据处理能力,已编
好程序可容易的植入新程序,因为它具有方便的模块化编程技术.
单片机c语言作为一种非常方便的语言而得到广泛的支持,c语言程序本身并不依赖于机器硬件系统,基本上不做
修改就可根据单片机的不同较快地移植进来.
5结语
综上所述,单片机的4种编程语言各有各的优缺点,作为单片机初学者,笔者认为还是应该先学习汇编语言,不一定
要学得很精很熟悉,但要有一定的了解.因为汇编语言程序除了具有简洁明快、跳跃性强、占ROM资源少等优点以外,还
因它和单片机底层硬件紧密联系,可以让初学者更加了解单片机硬件系统及各种资源,熟悉各个功能模块的作用,从而
为编出更高效率的程序打好扎实的基础.
前面已经提及,用单片机汇编语言编写的程序代码虽然效率高,但学习起来相对难度较大,而且对于一个大型项目,
如果完全采用汇编语言来编程,就显得很繁琐,尤其是遇到算法方面的问题时,汇编语言根本就应付不了.况且现在单片
机的主频在不断的提高,在高频率时钟的作用下,我们完全不需要那么高效率的代码;另外,单片机的ROM和RAM空间
也在不断地增加,足够装得下你用c语言写的任何程序代码,单片机c语言相关的资料又多又好找,可移植性非常好,比
如只需要改变一个输入输出口写个温度传感器的程序在任何一个单片机上都能使用.由此可见用单片机C语言进行程
序设计,已成为单片机软件开发的一个主流,作为一个技术全面并涉足较大规模的软件系统开发的单片机开发人员最好
能够掌握基本的C语言编程.
当然,有时候用单片机C语言也不能够实现所有要编写程序的功能,比如当想编写一个精确控制的定时程序时,用
起汇编语言来还是比较方便的.因此想成为一个优秀的单片机编程技术员,最好就是能懂得单片机c语言和汇编语言的
混合编程.




基于51单片机的舵机控制
用VC和MFC实现与单片机的串口通讯
基于51单片机的数字频率计
《单片机原理及其接口技术》(第2版)清华大学出版社
DSP与单片机的比较
各种单片机编程语言比较-新手推荐
基于51单片机的12864液晶显示的万年历
单片机交通灯设计_电路设计思路_程序电路图
单片机课程设计——毕业论文(课程设计)
单片机读写U盘-51读写U盘课程设计

举报

Rank: 1

贡献值
6
金币
17
帖子
12
发表于 2013-6-20 08:36:48 |显示全部楼层
感谢分享!!!!!
您需要登录后才可以回帖 登录 | 注册

免责声明|Archiver| OFweek论坛 ( 粤ICP备06087881号-1 )   

GMT+8, 2017-9-25 10:35 , Processed in 0.159660 second(s), 30 queries .

Powered by OFweek中国高科技行业门户