2020年 02月 10日 星期一
您的位置: 威廉希尔主页 > 单片机技术 >

C语言和汇编语言在开发单片机时各有哪些优缺点

来源:未知     作者:威廉希尔     发布时间:2020-02-09 07:24         

  汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的

  C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。

  对于目前普遍使用的RISC架构的8bitMCU来说,其内部ROMRAM、 STACK 等资源都有限,如果使用C语言编写,一条C语言指令编译后,会变成很多条机器码,很容易出现ROM空间不够、堆栈溢出等问题。而且一些单片机厂家也不一定能提供C编译器。而汇编语言,一条指令就对应一个机器码,每一步执行什么动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。所以在单片机开发中,我们还是采用汇编语言比较好。

  汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU, 其汇编语言可能有所差异,所以不易移植。

  C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C语言有功能丰富的库函数、运算速度快、编译效率高、 有良好的可移植性,而且可以直接实现对系统硬件的控制。C语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。

  此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C语言进行程序设计已成为软件开发的一个主流。用C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完备的系统。

  综上所述,用C语言进行单片机程序设计是单片机开发与应用的必然趋势。所以作为一个技术全面并涉足较大规模的软件系统开发的单片机开发人员最好能够掌握基本的C语言编程。

  对于复杂而开发时间紧的项目时,可以采用C语言,但前提是要求对该MCU系统的C语言和C编译器非常熟悉,特别要注意该C编译系统所能支持的数据类型和算法。虽然C语言是最普遍的一种高级语言,但不同的MCU厂家其C语言编译系统是有所差别的,特别是在一些特殊功能模块的操作上。如果对这些特性不了解,那调试起来就有的烦了,到头来可能还不如用汇编来的快。

  有关这方面的教材,大学里常用的一本是《IBM-PC 汇编语言程序设计》(大学出版社出版),在网上以及书店都是可以找到的,另外网上还可以搜索到很多其他的教材如:《微机原理及汇编语言教程》(杨延双 张晓冬等编著 )和《16/32 位微机原理、汇编语言及接术》(作者:钟晓捷 陈涛 ,机械工业出版社出版)等,可以在较大型的科技书店里查找或者直接从网上订购。

  对于单片机的初学者来说,应该从汇编学起。因为汇编语言是最接近机器码的一种语言,可以加深初学者对单片机各个功能模块的了解,从而打好扎实的基 础。

  7. 在芯片集成技术日益进步的今天,单片机的集成技术发展也很迅速,在传统的40引脚的基础上,推出20引脚的单片机系列,使很多的引脚可以复用,这种复用技术的使用在实际应用中会不会影响其功能的执行?

  在实际应用中不会影响其功能的执行,但是要注意的是, 有的MCU如果采用复用引脚的话,该引脚会有一些应用上的,这在相应的datasheet里面都会有描述,所以在系统规划的时候都要予以注意。

  Delta-Sigma原理一般应用在ADC应用中。具体来说,Delta-Sigma ADC的工作原理是由差动器、积分器和比较器构成调制器,它们一起构成一个反馈环。

  调制器以大大高于模拟输入信号带宽的速率运行,以便提供过采样。模拟输入与反馈信号(误差信号)进行差动 (delta)比较。该比较产生的差动输出馈送到积分器(sigma)中。然后将积分器的输出馈送到比较器中。比较器的输出同时将反馈信号(误差信号)传送到差动器,而自身被馈送到数字滤波器中。这种反馈环的目的是使反馈信号(误差信号)趋于零。

  比较器输出的结果就是 1/0 流。该流如果 1 密度较高,则意味着模拟输入电压较高;反之,0 密度较高,则意味着模拟输入电压较低。接着将 1/0 流馈送到数字滤波器中,该滤波器通过过采样与抽样,将 1/0 流从高速率、低精度位流转换成低速率、高精度数字输出。

  简而言之,Delta就是差动,Sigma就是积分的意思。Delta-Sigma软件测试,简单理解应该是通过软件模拟差动积分的过程。具体来说,就是侦测外部输入的 电压(或者电流)信号变化,然后通过软件积分运算,得出外部信号随时间变化的基本状况。

  文章出处:【微信号:mcu168,微信号:玩转单片机】欢迎添加关注!文章转载请注明出处。

  st89sc51看门狗的激活和喂狗指令是一样的吗都是 WDTRST = 0x1E; // WDTRST = 0xE1; // 吗?...

  现在说到编程,大家提得更多的似乎永远是前端、后端、小程序、Android App、iOS App,但....

  图中tr5上电后自己慢慢导通,不受单片机io口控制(更换新的管子正常),已出现两次该现象,请分析下原因 ...

  我想测一下高压包拉弧时候的电压和电流、但是示波器成本有点高、想问问各位电友大神们,能不能用单片机(51、arduino等等)加A\...

  不管是班科生还班科生,在学习C语言的途上是否感觉到困难,不知道如何入手C语言呢??那么接下来小....

  系统的组成如图1所示。该系统利用现有的GPRS网络,单片机通过串口对MC55 GPRS模块进行收发控....

  控制回是许多基于MCU的设计所执行的最基本的任务之一。通常这些设计中未充分利用的关键特征和外围设备....

  想问下智能避障小车的设计与实现需要学习什么资料呀? 学校学过51单片机的知识,但是教课内容也就仅限于对单片机有个一般认识...

  对于小功率电机应用,成本比复杂性更为重要,并且对转矩的平顺性要求较低,因此单相无刷直流(BLDC)电....

  我用的单片机是CT107D 通过程序响应ds18b20但是没有得到回应这是为什么啊 bit Get18B20Ack() { ...

  我是单片机初学者 编了一个秒表的小程序 实际出来的效果读数非常快和计算结果不一样 实在搞...

  种异型单片机系统设计渐渐成为一种新的思,但单片机之间的通信一直是困扰这种方法拓展的主要问题。

  键盘时钟接在p3.2口,既8051的外部中断int0上,键盘数据接到p1.0上每次按键,键盘会向单片....

  MIDI是电子乐器的语言,随着MIDI的诞生,数字化电子乐器已经越来越多,MIDI的应用也越来越普遍....

  Orange Pi 全志H2(型号:Zero,R1)和H3芯片系列(型号:One,Lite,PC,PC Plus,Plus 2E)的开发板,连接HD...

  一个单片机应用系统的硬件电设计包含两部门内容:一是系统扩展,即单片机内部的功能单元,如ROM、RA....

  本文档的主要内容详细介绍的是AVR单片机编程软件和资料合集免费下载包括了:USBasp_Win驱动,....

  如图所示,开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状....

  HC32L110设计注意事项 一、华大单片机HC32L110 在做硬件设计时请注意以下事项: 1 RESET引脚可以复用为带上拉...

  本文档的主要内容详细介绍的是爱上单片机的工程资料详细说明包括了:USB转TTL电平模块软件,STC-....

  在使用Orange Pi Zero开发板时,安装Armbian的系统,有开发者反馈找不到声卡,这是因为声卡的功能是在Zero的转接板上: ...

  模拟器作为嵌入式系统研究的基础研发工具,可辅助系统体系结构调优、软硬件协同设计。本文实现了具有良好配....

  为了加强数据的安全性且方便用户进行刷卡操作, 选择在无磁水表中加入射频读卡器。 读卡器的硬件上采用M....

  关于C语言的goto语句存在很多争议,很多书籍都“谨慎使用,或者根本不用”。这里先不做过多的讨论....

  Microchip发布业界首款宇航级基于COTS的耐辐射以太网收发器和嵌入式单片机,耐辐射器件拓展了....

  随着科学技术和经济的快速发展,人们对居家的概念已从最初满足简单的居住到注重对住宅的人性化需求,如安全....

  介绍了超低功耗16 位单片机MSP430F1121 和数字温度传感器DS18B20 的基本特性,结合....

  基于传统的方法在很多特殊场合:如带腐蚀的液体,强电磁干扰,有毒等恶劣条件下,测量距离存在不可克服的缺....

  什么是单片机,目前还没有一个确切的定义。普通认为单片机是将CPU、RAM、ROM、定时器/计数器以及....

  AT24C系列在增强型PIC实验板上编程的硬件原理图如下图所示,U7为实验板上24C02芯片,SDA....

  温度检测系统已应用于很多的领域,在传统的温度检测系统中,一般选用的是模拟式温度传感器。当系统进行多点....

  《从51到ARM:32位嵌入式系统入门》内容分为3部分:第1部分是前4章,从大家所熟悉的51系列单片....

  本文档的主要内容详细介绍的是51单片机的指令系统的基本概念和详细资料说明包括了:指令系统基本概念,3....

  本设计采用EM78P156E单片机作为暖风机整机工作的控制核心,采用SC6121实现红外遥控编码规则....

  射频卡(简称RF卡)又叫非接触式IC卡是一种以无线方式传送数据的集成电卡片,诞生于90年代初,是世....

  数据采集,又称数据获取,是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。数据采集技术广....

  TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。由于是串....

  本书属于8051单片机进阶书籍,适合对单片机已经有一些经验的读者阅读。读者在阅读本书时,已经对805....

  为实现电池储能装置的双向DC-DC变换器,本系统以buck-boost拓扑电为核心,通过DSPIC....

  本文档的主要内容详细介绍的是51单片机C语言的入门教程学习资料详细说明包括了:第一课建立您的第一个 ....

  本文档的主要内容详细介绍的是使用TIMER0单片机控制单只LED闪烁的仿真电图免费下载。

  AXM0F243 超低功耗窄带Sub GHz(27 - 1050 MHz)ARM®Cortex®-M0 +无线是用于真正单芯片无线应用的片上系统(Soc)。 SoC包含经现场验证的窄带 AX5043 RF收发器内核和高性能ARM®Cortex®-M0 +微控制器(MCU)内核。 AX5043内核功能非常强大,可通过软件编程。凭借最广泛的可用调制方案和100 bps至125 kbps的数据速率,几乎可以实现任何Sub GHz协议(专有或基于标准)。 无线电核心的软件可编程性也使其成为可能。可以为加载了不同软件的产品共享通用硬件设计,使客户更容易管理多个SKU。使用该器件实现多协议解决方案也可以实现强大的网关实现。 集成频率合成器可以生成27 MHz至1050 MHz的任何载波频率。对于低于~400 MHz的频率,集成VCO使用外部电感,但高于~400 MHz时,可以使用集成电感。 AX5043接收器非常强大,可以实现低至以下的灵敏度 - 137 dBm,同时消耗不到10 mA的电流。对于需要天线分集的应用,包括集成分集控制器,可以通过GPIO引脚自动控制外部天线开关。接收器还具有功能,通过允许MCU在无线电事件之间尽可能长时间地休眠来进一步降低功耗。 AX5043发射器包括一个差分功率放大器,可产生高达16 dBm或单端选项,最高可达13 dBm。 高性能ARM®Cortex®-M...

  725型25 Gb / s EML芯片载体(CoC)是一种光学子组件,由1.3微米电子吸收调制激光器组成( EML)安装在金属化平台上。 CoC已经过吹扫和电光测试,可支持25 Gb / s的应用。该载波有四个LAN-WDM波长通道,共4次; 25Gb / s传输。 功能 能够传输高达28 Gb / s LAN-WDM平均值为~1296,1300,1305标称值1309 nm,4次; 25/28 Gb / s传输应用 工作温度45~60℃ CMBH多量子阱DFB结构 高度可靠 用于高ER /低Vpp的高带宽调制器...

      威廉希尔