电子发烧友网 > 控制/MCU > 正文

单片机编程时常见的十大问题解答

2018年11月27日 16:05 次阅读

1.C 语言和汇编语言在单片机编程时各有哪些优缺点? 答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码 的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的 CPU, 其汇编语言可能有所差异,所以不易移植。

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

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

单片机编程时常见的十大问题解答
 

2.C 或汇编语言可以用于单片机,C++能吗? 答:在单片机编程中,主要是汇编和 C,没有用 C++的。

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

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

而 C 语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并 具备汇编语言的功能。C 语言有功能丰富的库函数、运算速度快、编译效率高、 有良好的可移植性,而且可以直接实现对系统硬件的控制。C 语言是一种结构化 程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技 术。此外,C 语言程序具有完善的模块程序结构,从而为软件开发中采用模块化 程序设计方法提供了有力的保障。因此,使用 C 语言进行程序设计已成为软件 开发的一个主流。用 C 语言来编写目标系统软件,会大大缩短开发周期,且明

显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完备的 系统。

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

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

5.在教学中要用到 8088 和 196 芯片单片机编程,请问那里可以找到关于这方面 的书或资料?

答:有关这方面的教材,大学里常用的一本是《IBM-PC 汇编语言程序设计》清 华大学出版社出版的,在网上以及书店都是可以找到的,另外网上还可以搜索到 很多其他的教材如:《微机原理及汇编语言教程》(杨延双 张晓冬 等编著 )和

《16/32 位微机原理、汇编语言及接口技术》(作者: 钟晓捷 陈涛 ,机械工业 出版社 出版)等,可以在较大型的科技书店里查找或者直接从网上订购。

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

7.我是一名武汉大学电子科技大 3 的学生,学了电子线路、数字逻辑、汇编和 接口、C 语言,但是总是感觉很迷茫,觉好象什幺都不会。怎幺办?

答:大学过程是一个理论过程,实践的机会比较少,往往会造成理论与实践相脱 节,这是国内大学教育系统的通病,不过对于学生来说切不可好高骛远。一般从 大三会开始接触到一些专业课程,电子相关专业会开设相关的单片机应用课程并 且会有简单的实验项目,那么要充分把握实验课的机会,多多地实际上机操作练 习。平时可以多看看相关的电子技术杂志网站,看看别人的开发经验,硬件设计 方案以及他人的软件设计经验。有可能的话,还可以参加一些电子设计大赛,借 此机会 2--3 个人合作做一个完整系统,会更有帮助。到了大四毕业设计阶段, 也可以选择相关的课题作些实际案例增长经验。做什么事情都有个经验的积累过 程,循序渐进。

8.请问作为学生,如何学好单片机编程? 答:学习好单片机编程,最主要的是实践,在实践中增长经验。在校学生的话,实践 机会的确会比较少,但是有机会的话,可以毕业实习选择相关的课题,这样就可 以接触到实际的项目。而且如果单片机微机原理是一门主课的话,相信学校会安 排比较多的实践上机机会。有能力的话,可以找一些相关兼职工作做做,会更有 帮助。而且单片机开发应用需要软硬件结合,所以不能只满足于编程技巧如何完

美,平时也要注意硬件知识的积累,多上上电子论坛网站,买一些相关杂志。可 能的话,可以到电子市场去买一些小零件,自己搭一个小系统让它工作起来。

HOTLEK 的单片机是 RISC 结构的 8 位单片机,它可以广泛应用在家用电器、 安全系统、掌上游戏等方面。大概来说可以分成 I/O 型单片机、LCD 型单片机、 A/D 型单片机、A/D with LCD 型单片机等等。

9.如何才能才为单片机编程的高手啊? 答:要成为单片机高手,应该多实践,时常关注单片机的发展趋势;经常上一些 相关网站,从那里可以找到许多有用的资料。

10.女性是否适合单片机软件编程这个行业? 答:要根据自己的兴趣,配合自己对软件编程的耐性,男女皆适合这个行业。

技术专区

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

基于GP-IB接口/单片机系统实现光功率

发表于 2018-11-27 11:45 16次阅读
基于GP-IB接口/单片机系统实现光功率

UART可以一对多通信吗

发表于 2018-11-27 10:16 65次阅读
UART可以一对多通信吗

借助llength命令可获取列表的长度

类似于C语言中的数组,列表的索引从0开始。索引0对应第一个元素,索引1对应第二元素,依此类推。同时,...

发表于 2018-11-27 10:13 65次阅读
借助llength命令可获取列表的长度

读写程序如下

发表于 2018-11-27 09:10 11次阅读
读写程序如下

stm32f103zgt6 cube库iwdg有些单片机无法正常重启

发表于 2018-11-27 08:56 38次阅读
stm32f103zgt6 cube库iwdg有些单片机无法正常重启

请问STM32F4的单片机外部8M晶振怎么设置为168Mhz

发表于 2018-11-27 08:52 48次阅读
请问STM32F4的单片机外部8M晶振怎么设置为168Mhz

高压线故障指示灯单片机方案 ——深圳单片机开发方案公司英锐恩

发表于 2018-11-26 18:01 28次阅读
高压线故障指示灯单片机方案 ——深圳单片机开发方案公司英锐恩

单片机晶振的负载电容常见问题分析

单片机晶振旁边两个对地电容叫晶振的负载电容,分别接在晶振的两个脚上和对地的电容,一般在几十皮发。它会...

发表于 2018-11-26 15:26 68次阅读
单片机晶振的负载电容常见问题分析

请问谁会单片机控制机械手的程序?

发表于 2018-11-26 15:02 46次阅读
请问谁会单片机控制机械手的程序?

过来人用实例教你学STM32

发表于 2018-11-26 10:28 72次阅读
过来人用实例教你学STM32

过来人用实例教你如何学习STM32

发表于 2018-11-26 10:23 77次阅读
过来人用实例教你如何学习STM32

我们到底该不该从裸奔走向操作系统呢?

在写裸机软件时,不可避免的在主程序中会有一个超级大的 while(1) 循环,这里面几乎包含整个项目...

发表于 2018-11-26 10:23 157次阅读
我们到底该不该从裸奔走向操作系统呢?

嵌入式开发中的常见问题小总结

发表于 2018-11-26 09:30 32次阅读
嵌入式开发中的常见问题小总结

PCB板的内部到底是什么样子

很多硬件工程师或者是layout工程师在刚接触PCB的时候,都会对PCB板(特别是多层板)内部到底是...

发表于 2018-11-25 11:18 409次阅读
PCB板的内部到底是什么样子

顶级Linux开发者必不可少的编程阅读书籍

Linux 是在大约上世纪 90 年代开发出来的,与它一起问世的还有其他一些完成基础功能的开源软件。...

发表于 2018-11-25 10:47 555次阅读
顶级Linux开发者必不可少的编程阅读书籍

OpenCV 4.0 正式版来啦!

修复了 AMD 和 NVIDIA GPU 上的 OpenCL 加速。 现在,可以为模型启用 DNN_...

发表于 2018-11-24 10:46 326次阅读
OpenCV 4.0 正式版来啦!

Keil C51单片机变量的使用方法详细介绍

8051内核单片机是一种通用单片机,在国内占有较大的市场份额。在将C语言用于51内核单片机的研究方面...

发表于 2018-11-24 10:20 42次阅读
Keil C51单片机变量的使用方法详细介绍

连接器是怎么读懂C源程序的

一个C程序可能是由多个分别编译的部分组成,这些不同部分通过一个通常叫做链接器(或连接器,载入器)的程...

发表于 2018-11-24 09:05 160次阅读
连接器是怎么读懂C源程序的

单片机系统的复位方式有:手动按钮复位和上电复位

常用的上电或开关复位电路如图3所示。上电后,由于电容C3的充电和反相门的作用,使RST持续一段时间的...

发表于 2018-11-23 16:18 280次阅读
单片机系统的复位方式有:手动按钮复位和上电复位

枚举常量在单片机编程中有何好处

当变量的数值在几个范围之间,如一个week变量取值只有Monday,Tuesday,Wednesda...

发表于 2018-11-23 16:03 101次阅读
枚举常量在单片机编程中有何好处

如何利用单片机向PC发送一个字节数据

//流水灯控制码,该数组被定义为全局变量 /*************************...

发表于 2018-11-23 15:53 87次阅读
如何利用单片机向PC发送一个字节数据

ARM芯片要替代传统单片机芯片?

近10年来,随着ARM公司的CORTEX系列芯片的强势崛起,现在越来越多人都在谈论ARM,并且COR...

发表于 2018-11-22 16:39 1004次阅读
ARM芯片要替代传统单片机芯片?

单片机与PC之间串行通信设计

源程序: #include sbit button=P3^5; void init...

发表于 2018-11-22 16:27 133次阅读
单片机与PC之间串行通信设计

开发单片机应掌握的几个技巧

在单片机应用开发中,代码的使用效率问题、单片机抗干扰性和可靠性等问题仍困扰着工程师。为帮助工程师解决...

发表于 2018-11-22 16:21 277次阅读
开发单片机应掌握的几个技巧

单片机芯片三大发展方向

单片机分类比较多,可以根据不用的应用需求情况进行相应的选型设计。而且随着内核的不断增强、主频不断的提...

发表于 2018-11-22 16:15 848次阅读
单片机芯片三大发展方向

嵌入式Linux工程师需要了解的八大开发知识点

嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,...

发表于 2018-11-22 16:14 233次阅读
嵌入式Linux工程师需要了解的八大开发知识点

如何用用C语言编写的单片机来控制流水灯

电路的核心部分是AT89C2051单片机,前面提到它有Pl和P3两组I/O口,我们这里只用到Pl口,...

发表于 2018-11-22 16:01 168次阅读
如何用用C语言编写的单片机来控制流水灯

单片机对28BYJ-48步进电机的控制设计

如果要使用电机的话,需要把4个跳线帽都调到跳线组的左侧(开发板上的实际位置),即左侧针和中间针连通(...

发表于 2018-11-22 15:46 62次阅读
单片机对28BYJ-48步进电机的控制设计

单片机多机通信的设计

写寄存器的时候,如果我们要把01写到一个地址是0000的寄存器地址里,点一下“写入”,就会出现发送指...

发表于 2018-11-22 15:20 90次阅读
单片机多机通信的设计

一文了解磁电编码器的工作原理及适用领域

磁编码器是一种新型的角度或者位移测量装置,其原理是采用磁阻或元件对变化的磁性材料的角度或者位移值进行...

发表于 2018-11-22 10:35 99次阅读
一文了解磁电编码器的工作原理及适用领域

为什么单片机不能直接驱动继电器和电磁阀?

比如我这个继电器线圈的电阻,大概是71.7欧姆,加5V电压的话,电流就是5除以71.7约等于0.07...

发表于 2018-11-22 10:33 312次阅读
为什么单片机不能直接驱动继电器和电磁阀?

单片机C语言双向通信程序设计

甲机向乙机发送控制命令字符,甲机同时接收乙机发送的数字,并显示在数码管上。

发表于 2018-11-21 16:33 254次阅读
单片机C语言双向通信程序设计

单片机与ARM谁更实用

一般在8位单片机与ARM方面的嵌入式系统是有层次上的差别,ARM适用于系统复杂度较大的高级产品,如P...

发表于 2018-11-21 15:33 131次阅读
单片机与ARM谁更实用

如何破解单片机解密芯片

单片机加解密可划分为两大类,一类是硬件加解密,一类是软件加解密。硬件加密,对于单片机来说,一般是单片...

发表于 2018-11-21 15:06 105次阅读
如何破解单片机解密芯片

基于PIC12C508单片机对灯光系统的控制

以下程序使用PIC12C508 单片机 ,内部4MHz时钟,4脚输入50HZ脉冲信号,7,6,3脚(...

发表于 2018-11-20 15:37 60次阅读
基于PIC12C508单片机对灯光系统的控制

如何使用SAM4E单片机点亮LCD并显示出文字

在Atmel Studio 6中,集成了Atmel Software Framework(ASF框架...

发表于 2018-11-20 15:20 61次阅读
如何使用SAM4E单片机点亮LCD并显示出文字

单片机的空闲和掉电模式的应用

单片机进入空闲模式的时候,除了cpu处于休眠状态外,其余的硬件全部处于活动状态,芯片中未涉及的数据存...

发表于 2018-11-20 15:00 70次阅读
单片机的空闲和掉电模式的应用

单片机中的拉电流和灌电流是什么意思

单片机的拉电流和灌电流都是对单片机的输出而言的,是单片机驱动能力的具体体现。

发表于 2018-11-19 16:22 101次阅读
单片机中的拉电流和灌电流是什么意思

STM32F4的FPU性能的设置及要点

浮点运算一直是定点CPU的难题,比如一个简单的1.1+1.1,定点CPU必须要按照IEEE-754标...

发表于 2018-11-19 15:47 80次阅读
STM32F4的FPU性能的设置及要点

PIC16C5X系列单片机的四种振荡方式解析

PIC16C5X系列可以使用4种类型振荡方式:标准晶体/陶瓷振荡XT、高速晶体振荡HS(4MHz以上...

发表于 2018-11-19 15:43 42次阅读
PIC16C5X系列单片机的四种振荡方式解析

单片机调试有那些常见问题如何解决

error: #18: 6.error: #18: expected a ")" 如果是出现在c...

发表于 2018-11-17 11:50 554次阅读
单片机调试有那些常见问题如何解决

浅谈智能仪表未来发展趋势

智能仪表是以微型计算机(单片机)为主体,将计算机技术和检测技术有机结合,组成新一代“智能化仪表”。微...

发表于 2018-11-16 15:04 68次阅读
浅谈智能仪表未来发展趋势

从微观角度来看Linux内核设计

这就是究极形态了,我们添加了第四行的代码,来看&_min1,它的意思是取_min1的地址,而&_mi...

发表于 2018-11-15 16:29 263次阅读
从微观角度来看Linux内核设计

浅析单片机数码管的8个段显示效果

数码管的 8 个段,我们直接当成 8 个 LED 小灯来控制,那就是 a、b、c、d、e、f、g、d...

发表于 2018-11-15 16:21 241次阅读
浅析单片机数码管的8个段显示效果

基于ARM异常中断处理的方法解析

1. 在汇编中保存现场,然后调用C语言编写的中断处理程序,任务处理完成之后,再返回到汇编中恢复现场,...

发表于 2018-11-15 16:17 73次阅读
基于ARM异常中断处理的方法解析

浅析C语言在嵌入式开发中的应用

般将硬件初始化的工作交给汇编,比较复杂的操作交给C语言。

发表于 2018-11-15 15:20 250次阅读
浅析C语言在嵌入式开发中的应用

C语言为什么能够恒久不衰,来看看吧!

C++是由C语言发展而来的,与C兼容。用C语言写的程序基本上可以不加修改地用于C++。从C++的名字...

发表于 2018-11-15 12:58 293次阅读
C语言为什么能够恒久不衰,来看看吧!

深度解析单片机复位电路

射频干扰,它是以空间电磁场的形式传递 在机器内部的导体(引线或零件引脚)感生出相应的干扰,可通过电磁...

发表于 2018-11-15 11:32 350次阅读
深度解析单片机复位电路

PIC12F675单片机用于热释红外传感器中的应...

现在用于检测人员进出的探测器主要采用热释红外传感器。人体能够发射10μm左右的红外线,热释红外传感器...

发表于 2018-11-14 16:38 87次阅读
PIC12F675单片机用于热释红外传感器中的应...

探讨STC单片机烧写时出现的情况

MAX232转换板出口接三条线到STC单片机RXD,TXD和GND,单片机未通电,但这时RXD上有电...

发表于 2018-11-14 16:34 237次阅读
探讨STC单片机烧写时出现的情况

单片机最小系统的组成及其原理解析

单片机最小系统主要由电源、复位、振荡电路以及扩展部分等部分组成。

发表于 2018-11-14 16:06 183次阅读
单片机最小系统的组成及其原理解析

嵌入式开发为什么选择C语言

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用...

发表于 2018-11-13 15:53 298次阅读
嵌入式开发为什么选择C语言

如何用C语言实现自己的PIC16 serial ...

Serial bootloader是一种非常方便使用并且低成本的程序烧写的方法。一般情况,每次烧写M...

发表于 2018-11-12 16:03 97次阅读
如何用C语言实现自己的PIC16 serial ...

单片机采用串行方式对LCD12864的驱动

#i nclude #i nclude sbit SCLK =P1^3 //E s...

发表于 2018-11-12 15:19 110次阅读
单片机采用串行方式对LCD12864的驱动

如何测试单片机的数据类型字节数

i = sizeof(char);//char是一字节的变量 if(i == 1) { ...

发表于 2018-11-12 15:13 89次阅读
如何测试单片机的数据类型字节数

递归指的是在函数的定义中使用函数自身的方法

C语言支持递归,即一个函数可以调用其自身。但在使用递归时,程序员需要注意定义一个从函数退出的条件,...

发表于 2018-11-12 15:06 223次阅读
递归指的是在函数的定义中使用函数自身的方法

强制类型转换是把变量从一种类型转换为另一种数据类...

类型转换可以是隐式的,由编译器自动执行,也可以是显式的,通过使用强制类型转换运算符来指定。在编程时...

发表于 2018-11-12 14:59 218次阅读
强制类型转换是把变量从一种类型转换为另一种数据类...

C语言中程序员编写的头文件和编译器自带的头文件

#include 指令会指示 C 预处理器浏览指定的文件作为输入。预处理器的输出包含了已经生成...

发表于 2018-11-12 14:55 298次阅读
C语言中程序员编写的头文件和编译器自带的头文件

C语言中一个简单的实例,检查命令行是否有提供参数

多个命令行参数之间用空格分隔,但是如果参数本身带有空格,那么传递参数的时候应把参数放置在双引号 ""...

发表于 2018-11-12 14:49 164次阅读
C语言中一个简单的实例,检查命令行是否有提供参数

C语言中的动态内存管理

但是,如果您预先不知道需要存储的文本长度,例如您向存储有关一个主题的详细描述。在这里,我们需要定义一...

发表于 2018-11-12 14:46 167次阅读
C语言中的动态内存管理

Verilog和VHDL之间如何互转

当然阶段四纯属个人的对未来的推测,但是,近年来,FPGA也高速发展,明显有当年汇编语言开发到C高...

发表于 2018-11-12 14:23 282次阅读
Verilog和VHDL之间如何互转

单片机中断源情况大汇总 嵌入式时代已经到来

嵌入式时代已经来了,不要纠结要不要踏入嵌入式的领域了,

发表于 2018-11-12 10:44 279次阅读
单片机中断源情况大汇总 嵌入式时代已经到来

如何在C语言中使用随机数

通常情况下,使用最多的方法的就是使用rand函数随机生成伪随机数来完成随机数的生成工作。注意这里的伪...

发表于 2018-11-09 16:46 249次阅读
如何在C语言中使用随机数

如何提高单片机系统的可靠性

提高单片机系统可靠性的方法与措施很多。一般地,应根据系统所面临的具体的可靠性问题,针对引起或影响系统...

发表于 2018-11-09 15:20 119次阅读
如何提高单片机系统的可靠性

单片机中如何实现多线程

整个项目需要控制16台步进电机,21个电磁阀,3个泵,1个直流电机,系统要求全部执行时间为6秒钟,系...

发表于 2018-11-08 16:21 190次阅读
单片机中如何实现多线程

C语言中提供了许多内置的输入输出函数

stdio.h 是一个头文件 (标准输入输出头文件) and #include 是一个预处理命令,用...

发表于 2018-11-08 14:44 223次阅读
C语言中提供了许多内置的输入输出函数

C程序员如何创建、打开、关闭文本文件或二进制文件

如果这个函数在读取最后一个字符之前就遇到一个换行符 '\n' 或文件的末尾 EOF,则只会返回读取到...

发表于 2018-11-08 14:38 220次阅读
C程序员如何创建、打开、关闭文本文件或二进制文件

STM32F103试用体验:水共震准备材料中的过...

我这次要做的东东是一个水共震系统,说明:水共震系统是指在一个水盆里,有一个执行单元,通过电机和皮带,...

发表于 2018-11-08 10:38 310次阅读
STM32F103试用体验:水共震准备材料中的过...

一文了解逻辑分析仪当中的高级参数

对于快速高效的调试,选择逻辑分析仪解决方案时,需要重点评估仪器各方面参数,逻辑分析仪在数字电路的前期...

发表于 2018-11-08 09:07 73次阅读
一文了解逻辑分析仪当中的高级参数

比较逻辑分析仪与示波器之间的区别

目前电路的发展从抽象类似向着数字化发展,因此这些测量仪器的开发也正在朝着这种条件方法迈进。 现在,在...

发表于 2018-11-08 08:55 126次阅读
比较逻辑分析仪与示波器之间的区别