单片机汇编语言和最常用的高级语言分析

发布者:清晨微风最新更新时间:2015-03-27 来源: diangon关键字:单片机  汇编语言  高级语言 手机看文章 扫描二维码
随时随地手机看文章
      单片机的编程语言很多,大致分成三类:机器语言、汇编语言、高级语言。机器语言由于繁琐容易出错,一般用户已经不再使用。下面分别对单片机汇编语言和最常用的高级语言进行分析。

单片机的汇编语言

  汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少,程序执行效率高,由于它一条指令就对应一条机器码,每一步的执行动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。但是不同的类型的单片机,其汇编语言可能有点差异,所以不易移植,因为他们的指令系统是有区别的。但懂得汇编语言可帮助了解影响任何语言效率的特殊规定。例如,懂得汇编语言指令就可以使用在片内ram作变量的优势,因为片外变量需要几条指令才能设置累加器和数据指针进行存取。同样的,当要求使用浮点数和启用函数时也只有具备汇编编程经验才能避免生成庞大的、效率低的程序,对于这方面的编程,没有汇编语言是做不到的。

单片机的c语言

  单片机的c语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。c语言具有功能丰富的库函数,运算速度快,编译效率高,有良好的可移植性,而且可以实现直接对系统硬件的控制。此外,c语言程序具有完整的程序模块结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。与汇编相比,有如下优点:

  对单片机的指令系统不要求了解,仅要求对51的存储器结构有初步了解,至于寄存器分配、不同存储器的寻址及数据类型等细节均由编译器管理。

  程序有规范的结构,可分为不同的函数。这种方式可使程序结构化,将可变的选择与特殊操作组合在一起,改善了程序的可读性。

  编程及程序调试时间显著缩短,从而提高效率。提供的库包含许多标准子程序,具有较强的数据处理能将已编好程序可容易的植入新程序,因为它具有方便的模块化编程技术。

  功能强而有弹性,提供的库包含许多标准子程序,具有较强的数据处理能力,能将已编好程序容易的植入新程序,因为它具有方便的模块化编程技术。

  单片机c语言作为一种非常方便的语言而得到广泛的支持,c语言程序本身并不依赖于机器硬件系统,基本上不做修改就可根据单片机的不同较快地移植过来。

  用单片机c语言进行程序设计,已成为单片机软件开发的一个主流,作为一个技术全面并涉足较大规模的软件系统开发的单片机开发人员最好能够掌握基本的c语言编程。

其他高级语言

  对于单片机编程,还有basic语言和pl/m语言。basic一直被认为是初学编程的语言,容易入门,

  pl/m语言可读性好,可靠性高,但不支持复杂的算术运算、浮点变量且无丰富的库函数支持。

  汇编语言与处理器密切相关。每种处理器都有自己的指令系统,相应的汇编语言各不相同。所以,汇编语言程序的通用性、可移植性较差。相对来说,高级语言与具体计算机无关,高级语言程序可以在多种计算机上编译后执行。

  汇编语言功能有限,又涉及寄存器、主存单元等硬件细节,所以编写程序比较繁琐,调试起来也比较困难。高级语言提供了强大的功能,采用类似自然语言的语法,所以容易被掌握和应用,它不必关心诸如标志、堆栈等琐碎问题。

  汇编语言本质上就是机器语言,它可以直接、有效地控制计算机硬件,因而容易产生运行速度快、指令序列短小的高效率目标程序。高级语言不易直接控制计算机的各种操作,编译程序产生的目标程序往往比较庞大、程序难以优化,所以运行速度较慢。

  综上所述,单片机的各种编程语言各有各的优缺点,作为单片机初学者,还是应该先学习汇编语言,因为汇编语言程序除了具有简洁明快、跳跃性强、占rom资源少等优点以外,还因它和单片机底层硬件紧密联系,可以让初学者更加了解单片机硬件系统各种资源,熟悉各个功能模块的作用,从而为编出更高效率的程序打好扎实的基础。

  用单片机汇编语言编写的程序代码效率高,但学习起来相对难度较大,而且对于一个大型项目,如果完全采用汇编语言来编程,就显得很繁琐,尤其是遇到算法方面的问题时,汇编语言根本就应付不了。况且现在单片机的主频在不断的提高,在高频率时钟的作用下,我们完全不需要那么高效率的代码;另外,单片机的rom和ram空间也在不断的增加,足够装得下用c语言写的任何程序代码,单片机c语言相关的资料又多又好找,可移植性非常好,比如只需要改变一个io口写温度传感器的程序在任何一个单片机上都能使用。用单片机c语言进行程序设计,已成为单片机软件开发的一个主流,作为一个技术人员最好能够掌握基本的c语言编程。

  当然,有时候用单片机c语言也不能够实现所有要编写程序的功能,比如当想编写一个精确控制的定时程序时,用起汇编语言来还是比较方便的。因此想成为一个优秀的单片机编程技术员,最好就是能懂得单片机c语言和汇编语言的混合编程。因为,汇编语言程序占用存储空间很小、对硬件控制灵活、反应速度快,但是其可读性差、难于调试与更新维护。c语言更新维护方便、可移植性强,但实践证明,单独使用c语言开发单片机程序也存在诸多不足之处,例如占用存储空间大、对硬件控制不灵活等。所以单独使用任何一门语言开发单片机程序,都不够理想。为此,要编写出高速度、高效率、可移植性强的单片机程序,集合c语言与汇编语言各自的优势,创出所谓的单片机c和汇编语言混合编程。在编程过程中,通常用c语言来构建程序框架,而用汇编程序作为子程序来处理一些有实时性要求的特殊应用。

关键字:单片机  汇编语言  高级语言 引用地址:单片机汇编语言和最常用的高级语言分析

上一篇:51单片机CPU的内部结构及工作原理
下一篇:8051单片机与RS485应用电路原理图

推荐阅读最新更新时间:2024-03-16 13:56

SP2328串口扩展专用芯片及其与单片机的接口电路
摘 要: 本文介绍一种新型的单片机串口扩展芯片的功能特性以及与单片机接口的应用。 关键词: 单片机; 多串口通信 在设计由多个单片机组成的数据采集电路时,一般要用多个串口在各个单片机之间进行数据通信。为了解决单片机扩展多个串口的问题,以前大多采用多片AT89C2051来实现多串口通信。每个AT89C2051用并口与上位机连接,再通过AT89C2051的串口与下位机串口连接。这种电路设计,单片机编程比较复杂,整个电路的调试也比较麻烦,可靠性不是很高。一种新开发的SP2328串口扩展芯片很好的解决了上述问题。 SP2328是成都视普科技公司的串行口扩展专用芯片,能将普通单片机(如:AT89C2051、AT89C51等)的
[单片机]
单片机C语言程序设计:外部 INT0 中断控制 LED
/* 名称:外部 INT0 中断控制 LED 说明:每次按键都会触发 INT0 中 断,中断发生时将 LED 状态取反,产 生 LED 状态由按键控制的效果 */ #include reg51.h #define uchar unsigned char #define uint unsigned int sbit LED=P0^0; // 主程序 void main() { LED=1; EA=1; EX0=1; IT0=1; while(1); }
[电源管理]
<font color='red'>单片机</font>C语言程序设计:外部 INT0 中断控制 LED
基于ATmega8单片机控制的正弦波逆变电源设计
  0引言   在风电行业中,经常需要在野外对风机进行维修,这时必须为各类维修工具和仪器进行供电。因此,设计一种便携式。低功耗。智能化的正弦逆变电源来为这些设备供电是十分必要的,可大大提高维修风机的效率。   本文正是基于这种情况下而设计的一种基于单片机的智能化正弦逆变电源。   1 正弦逆变电源的设计方案   本文所设计的逆变器是一种能够将DC 12V直流电转换成220V正弦交流电压,并可以提供给一般电器使用的便携式电源转换器。目前,低压小功率逆变电源已经被广泛应用于工业和民用领域。特别是在交通运输。野外测控作业。机电工程修理等无法直接使用市电之处,低压小功率逆变电源便成为必备的工具之一,它只需要具有一块功率足够的电池与
[单片机]
基于ATmega8<font color='red'>单片机</font>控制的正弦波逆变电源设计
基于AT89C2051单片机的电子导游系统
   引 言   随着生活水平的提高,越来越多的人把旅游当成了一种时尚的消费方式,而有些问题也随之产生,如导游人员的缺乏及其素质不高,加之大批喜欢独立自由的旅游者的出现,这些促使了电子导游系统的产生。电子导游系统发展有个过程,最开始时是一种半自动化系统,功能是把景点信息以语音文件格式存储在导游机里,一般通过键盘直接键入景点代码,选择播放。这种类型的导游机,缺点是要输入景点代码,很不方便。发展到现在,出现了全自动化的导游机,它在景点先安放无线发射模块,这些发射模块可以控制工作范围,这样在各个景点就有不同的编码信号。游客到达景点后,游客手上的导游机会自动接收编码信号,经过解码后,由控制中心控制语音播放即可。本文介绍了这一全自动化导游
[单片机]
基于AT89C2051<font color='red'>单片机</font>的电子导游系统
STC89C51单片机和ADXL345三轴加速度模块实现简易计步器程序
单片机源程序如下: #include STC51PRJ.h extern BYTE BUF ;//接收数据缓存区 /*****************起始信号***************/ void ADXL345_Start() { SDA = 1; //拉高数据线 SCL = 1; //拉高时钟线 Delay5us(); //延时 SDA = 0; //产生下降沿 Delay5us(); //延时 SCL = 0; //拉低时钟线 } /************
[单片机]
基于CAN总线的平地机自动找平系统设计
1 引言     平地机是一种平整场地、路面的机械,作业时其铲刀相对于地面的位置决定工作质量,即路面的平整度。铲刀安装在一个可水平回转、垂直摆动和横向伸缩的机架上,通过控制液压油缸的动作,控制铲刀升降、回转、倾斜、引出,以及铲土角度变换。由于操作复杂,要求操作员具有娴熟的操作技术,根据平地机行驶状况不断调整铲刀,使路面平整。因此该作业过程对操作员技术要求特别高,而且劳动强度较大。为了提高作业效率和和施工精度,这里提出一种基于CAN总线的平地机自动找平系统设计。 2 自动找平系统总体设计 2.1 CAN总线简介     CAN(Controller Area Network)总线即控制器局域网,是应用最广泛的现场总线
[嵌入式]
51单片机驱动DS18B20温度传感器程序及心得
关于DS18B20温度传感器,在没有硬件设备的辅助下,写内部程序有些困难,因为看不到实际信号波形。对于单片机,我。。。渐渐的有些心灰意冷。。虽然掌握了1_WIRE总线,却少了很多喜悦,下雨了。。。它是我的爱好,我付出了很多,可是我看不到实际的前景。。以我个人之力,要步入尖端芯片领域,很困难,在这里,采棉花是个普遍性的大问题,大型机械设备缺陷很多,如果以微控制芯片提高精度,我想效益会相当可观,可是技术瓶颈难以逾越。。。硬件研发,失败了,所有投入赴之东流,成功了,回报丰厚。现在,各行各业都处于饱和,没有成熟先进的技术,很难有立足之地,,,,,我开始重新审视我的选择。。。。。。艰难。。 /* 建立时间: 2013年5月2日;
[单片机]
51单片机中断学习
一、中断的概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 二、中断源 在51单片机中有5个中断源 中断号 优先级 中断源 中断入口地址 0 1(最高) 外部中断0 0003H 1
[单片机]
51<font color='red'>单片机</font>中断学习
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved