打印
[MCU]

单片机设计应用编程技巧问答

[复制链接]
747|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Orchids|  楼主 | 2019-6-2 14:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机设计应用编程技巧问答


     1. C语言和汇编语言在开发单片机时各有哪些优缺点?
  答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。
  C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。
  对于目前普遍使用的RISC架构的8bit MCU来说,其内部ROM、RAM、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. 请问作为学生,如何学好单片机?
  答:学习好单片机,最主要的是实践,在实践中增长经验。在校学生的话,实践机会的确会比较少,但是有机会的话,可以毕业实习选择相关的课题,这样就可以接触到实际的项目。而且如果单片机微机原理是一门主课的话,相信学校会安排比较多的实践上机机会。有能力的话,可以找一些相关兼职工作做做,会更有帮助。而且单片机开发应用需要软硬件结合,所以不能只满足于编程技巧如何完美,平时也要注意硬件知识的积累,多上上电子论坛网站,买一些相关杂志。可能的话,可以到电子市场去买一些小零件,自己搭一个小系统让它工作起来。

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

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

使用特权

评论回复

相关帖子

沙发
aspoke| | 2019-6-11 22:00 | 只看该作者
定义的变量不要太多     

使用特权

评论回复
板凳
232321122| | 2019-6-11 22:00 | 只看该作者
静态变量最好放在程序存储区,用code定义  

使用特权

评论回复
地板
ghuca| | 2019-6-11 22:00 | 只看该作者
子程序在main()主程序之后的应事先声明,放在前面的不用声明。  

使用特权

评论回复
5
soodesyt| | 2019-6-11 22:01 | 只看该作者
谢谢楼主分享的。        

使用特权

评论回复
6
mnynt121| | 2019-6-11 22:01 | 只看该作者
主要就是在实践中积累经验了。  

使用特权

评论回复
7
plsbackup| | 2019-6-11 22:01 | 只看该作者
可使用软件实现“看门狗”功能。   

使用特权

评论回复
8
kmzuaz| | 2019-6-11 22:02 | 只看该作者
如果使用C编程时,要达到最高的效率,最好熟悉所使用的C编译器

使用特权

评论回复
9
qiufengsd| | 2019-6-11 22:02 | 只看该作者
熟悉嵌入式C语言的开发,uC/OS-II操作系统  

使用特权

评论回复
10
wengh2016| | 2019-6-11 22:02 | 只看该作者
单片机汇编,单片机C编程   

使用特权

评论回复
11
sanfuzi| | 2019-6-11 22:03 | 只看该作者
对于复杂而开发时间紧的项目时,可以采用C语言  

使用特权

评论回复
12
kmzuaz| | 2019-6-11 22:03 | 只看该作者
先试验一下每条C语言编译以后对应的汇编语言的语句行数  

使用特权

评论回复
13
aspoke| | 2019-6-11 22:03 | 只看该作者
可以把变量放在高128位  

使用特权

评论回复
14
plsbackup| | 2019-6-11 22:03 | 只看该作者
在程序循环最下面都重装定时器或重置定时器参数。  

使用特权

评论回复
15
232321122| | 2019-6-11 22:03 | 只看该作者
变量应定义为无符号数   

使用特权

评论回复
16
mnynt121| | 2019-6-11 22:03 | 只看该作者
学习编程才能更好的使用单片机。  

使用特权

评论回复
17
ghuca| | 2019-6-11 22:03 | 只看该作者
虽然局部变量和全局变量不同名,但运行时可能被全局变量改变。

使用特权

评论回复
18
soodesyt| | 2019-6-11 22:03 | 只看该作者
跟着楼主多多学习这方面的知识。  

使用特权

评论回复
19
sanfuzi| | 2019-6-11 22:03 | 只看该作者
防止干扰最有效的方法是去除干扰源、隔断干扰路径  

使用特权

评论回复
20
wengh2016| | 2019-6-11 22:03 | 只看该作者
提高C语言编程代码的效率  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

697

主题

993

帖子

4

粉丝