新闻中心

EEPW首页 > 消费电子 > 设计应用 > 单片机应用编程技巧解析

单片机应用编程技巧解析

作者:时间:2018-08-15来源:网络收藏

1.C 语言和汇编语言在开发时各有哪些优缺点?

本文引用地址:http://www.eepw.com.cn/article/201808/386830.htm

答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码 的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的 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 位多,还是 32 位?如何看待单片机在汽车 市场中的前景?

答:现今汽车制造也是一个进步很快的工业,特别是应用于汽车上,令多种 新功能得以实现。

总的来说,汽车电子应用分三部份。

- 汽车发动机控制:限速控制,涡轮增压,燃料喷注控制……

- 汽车舒适装置:遥控防盗系统,自动空调系统,影音播放系统,卫星导航 系统……。

- 汽车操控和制动:刹车防抱死系统(ABS),循迹系统(TCS),防滑系统(ASR), 电子稳定系统(ESP)……

汽车上的各系统繁多,且日新月异,故利用何种单片机是依各系统规格,要 求不一,但有一样可肯定是该单片机要符工业规格,才能忍受汽车应用的恶劣环 境,高温,电源干扰,可靠度要求。不同档次的汽车其功能配置相对亦有差别, 故 8 位单片机在较低阶的系统如机械控制,遥控防盗等应该还有空间,但高阶的 系统如影音,导航……将来的无人驾驶!,就非一般单片机能实现。

因汽车工业现阶段由欧美日数个大集团所把持,相关的汽车电子配件各集团 会挑选单片机大厂合作, 故汽车内置的电子系统亦由单片机大厂把持,市场只 剩外置系统如遥控防盗,影音导航供小厂开发。

8. 在使用三星的 s3c72n4 时,觉得它的 time/counter 不够用。现在要同时用 到 3 个 counter,该怎么办?

答:您是需要三个外部 counter 还是需要三个定时器?如果是三个定时器标志的 话,可以取这三个定时最基本的时基作为 timer 的基础计数,然后以这个时基来 计算这三个需要的计数标志的 flag,在程序中只需要查询 flag 是否到,再采取动 作。

如果要 3 个外部脉冲计数的话,这个有一定的难度,如果外部脉冲不是很频 繁,可以考虑通过外部中断进行,但是这个方法必须是外部脉冲的频率与 mcu 执行速度有一定的数量级差,否则 mcu 可能无法处理其它程序,一直在处理外 部中断。

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

答:现在有很多品牌的单片机都有引脚复用功能,不止飞利浦一家,应该说这个 方式前几年就已经有了。在实际应用中不会影响其功能的执行,但是要注意的是, 有的 MCU 如果采用复用引脚的话,该引脚会有一些应用上的限制,这在相应的 datasheet 里面都会有描述,所以在系统规划的时候都要予以注意。

10. Delta-Sigma 软件测量方式,是什么概念?

答:Delta-Sigma 原理一般应用在 ADC 应用中。具体来说,Delta-Sigma ADC 的 工作原理是由差动器、积分器和比较器构成调制器,它们一起构成一个反馈环路。 调制器以大大高于模拟输入信号带宽的速率运行,以便提供过采样。模拟输入与 反馈信号(误差信号)进行差动 (delta)比较。该比较产生的差动输出馈送到积 分器(sigma)中。然后将积分器的输出馈送到比较器中。比较器的输出同时将反馈 信号(误差信号)传送到差动器,而自身被馈送到数字滤波器中。这种反馈环路 的目的是使反馈信号(误差信号)趋于零。比较器输出的结果就是 1/0 流。该流 如果 1 密度较高,则意味着模拟输入电压较高;反之,0 密度较高,则意味着模 拟输入电压较低。接着将 1/0 流馈送到数字滤波器中,该滤波器通过过采样与抽 样,将 1/0 流从高速率、低精度位流转换成低速率、高精度数字输出。

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



评论


相关推荐

技术专区

关闭