首页 上一页 1 2 3 4 下一页 尾页

单片机应用编程技巧(FAQ) 点击:9272 | 回复:64



如火

    
  • 精华:172帖
  • 求助:0帖
  • 帖子:803帖 | 5249回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2006-02-24 11:49:00
楼主
单片机应用编程技巧 (FAQ)    
    
作者邓宏杰 ,感谢dwlz提供。

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

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

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

如果对单片机C语言有兴趣,HOLTEK的单片机就有提供C编译器,可以到HOLTEK的网站(www.holtek.com.cn )免费下载使用。 

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型单片机等等。这些单片机的中文资料我们都公开在HOLTEK网站www.holtek.com.cn 。 
HOLTEK各类单片机的使用手册下载地址: 
http://www.holtek.com.cn/referanc/htk_book.htm 
HOLTEK单片机软件/硬件应用范例下载地址: 
http://www.holtek.com.cn/tech/appnote/appnote.htm 
HOLTEK单片机支持工具下载地址: 
http://www.holtek.com.cn/tech/tool/tool.htm 

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

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

11. HOLTEK的数据手册在哪里下载? 
答:如果对HOLTEK的IC感兴趣的话,相应的数据手册可以到网站上http://www.HOLTEK.com.cn/products/index.htm去选IC资料下载。 

12. 8位机还能延续多久! 
答:以现在MCU产品主力还是在8位领域,主要应用于汽车应用、消费性电子、电脑及PC周边、电信与通讯、办公室自动化、工业控制等六大市场,其中车用市场多在欧、美地区,而亚太地区则以消费性电子为主, 并以量大低单价为产品主流,目前16位MCU与8位产品,还有相当幅度的价差,新的应用领域也仍在开发,业界预计,至少在2005年前8位的MCU仍是MCU产品的主流。 

13. 学习ARM及嵌入式系统是否比学习其它一般单片机更有使用前景?对于一个初学者应当具备哪些相关知识? 
答:一般在8位单片机与ARM方面的嵌入式系统是有层次上的差别,ARM适用于系统复杂度较大的高级产品,如PDA、手机等应用。而8位单片机因架构简单,硬件资源相对较少,适用于一般的工业控制、消费性家电等等。对于一个单片机方面的软件编程初学者,应以HOLTEK系列或8051等8位单片机来做入门练习。而初学者应



周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2006-02-24 17:27:00
1楼
少见的好帖!很不容易!
不过
1. 好象对 96 系列单片机不熟悉:“19. Intel系列的96单片机80c196KB开发系统时,都有那些注意事项?”需要重新认识。
2. ‘33. A/D、D/A的采样速率与其它单片机相比有什么优势?’ ‘至于D/A,一般是指PWM输出’不确。
3. ‘44. 我们是一家开发数控系统的专业厂’的回答‘只能看单片机抗干扰能力够不够强了’这点有问题。我的老话:‘先前已经说过:可靠性根本不在用什么器件,是系统总体设计的结果。CMOS(3-18V电压)、HTL(15V电压)、TTL(5V电压)、ECL(3-5V电压)、、...这些基本的数字电路都有许多成功的产品。手册没有说的先不要以为就是我们想的。你想一个电子芯片, 3.3V 或者 5V 电压、1-2毫安的驱动能力,能有多高的抗干扰能力不是很明显吗?!
有这样一个数量:电力系统自动化后一个变电站有几百个处理器,除了工控机(约 15%)、 51、96 (这两种 约 85% ),没有别的芯片。全国电网有多少就不用算了。 PLC 许多也是 8051 系列。这些产品的可靠性已经是实践证明了的。个中缘由自己琢磨吧。’

亦云人云

  • 精华:5帖
  • 求助:0帖
  • 帖子:102帖 | 2351回
  • 年度积分:0
  • 历史总积分:3114
  • 注册:2004年11月10日
发表于:2006-02-24 19:23:00
2楼
‘至于D/A,一般是指PWM输出’
本人理解如下:
大多数品牌的8位单片机只有A/D,没有D/A,有时只好借助 PWM 来完成 D/A 功能.
Analog Device 公司的单片机同时具有 PWM 和 D/A,参看:
http://www.analog.com/IST/SelectionTable/?Selection_Table_ID=212&Cat=Analog%20Microcontrollers&SubCat=&Lang=English

周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2006-02-25 01:01:00
3楼
没错。其他厂家还有几款。

123wer

  • 精华:2帖
  • 求助:1帖
  • 帖子:41帖 | 400回
  • 年度积分:0
  • 历史总积分:690
  • 注册:2004年4月24日
发表于:2006-02-25 09:50:00
4楼
有些没看懂,鼓励自己加油学习!

兄弟同心

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2006年2月25日
发表于:2006-02-26 00:12:00
5楼
看不动的还很多!为了自己,加油!

绝缘子

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 59回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2006年2月22日
发表于:2006-02-26 16:07:00
6楼
谢谢你的文章,我是初学者,看了以后了解了一些,也有很多不懂  ,我会继续努力.

猎隼

  • 精华:1帖
  • 求助:1帖
  • 帖子:151帖 | 1661回
  • 年度积分:0
  • 历史总积分:8983
  • 注册:2005年9月28日
发表于:2006-02-28 11:05:00
7楼
你的见解很及时,希望在以后可以与你继续交流,毕竟我们是初学者,以后麻烦你的地方还很多.

飘渺夕阳

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 14回
  • 年度积分:0
  • 历史总积分:15
  • 注册:2006年2月27日
发表于:2006-02-28 11:19:00
8楼
太深噢拉,看不太懂,不过顶~~~~~~~

海*子

  • 精华:0帖
  • 求助:0帖
  • 帖子:14帖 | 104回
  • 年度积分:1
  • 历史总积分:513
  • 注册:2006年1月10日
发表于:2006-02-28 20:42:00
9楼
现在网上这样耐心的文章,
真的不多
谢谢!

春秋晓月

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 268回
  • 年度积分:0
  • 历史总积分:404
  • 注册:2006年2月07日
发表于:2006-02-28 21:12:00
10楼
谢谢,学了相当多的东西,感谢。

siqi

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 19回
  • 年度积分:0
  • 历史总积分:80
  • 注册:2004年10月10日
发表于:2006-03-01 11:41:00
11楼
好贴啊~~~~~~~~~~

big big boy

  • [版主]
  • 精华:5帖
  • 求助:21帖
  • 帖子:727帖 | 5626回
  • 年度积分:78
  • 历史总积分:82244
  • 注册:2004年5月28日
发表于:2006-03-02 10:32:00
12楼
好贴啊

  • 精华:0帖
  • 求助:0帖
  • 帖子:28帖 | 189回
  • 年度积分:0
  • 历史总积分:482
  • 注册:2005年9月13日
发表于:2006-03-02 20:33:00
13楼
我想学呀

lichunhong

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 11回
  • 年度积分:0
  • 历史总积分:23
  • 注册:2006年1月13日
发表于:2006-03-02 21:07:00
14楼
少见的 好贴,高人呀!这在激励我 要加倍努力呀!

仪表DIY

  • 精华:2帖
  • 求助:0帖
  • 帖子:4帖 | 162回
  • 年度积分:0
  • 历史总积分:231
  • 注册:2005年7月08日
发表于:2006-03-03 01:11:00
15楼
单片机不懂,现在正在学习使用
先收藏起来,有空慢慢咀嚼

漂流远方

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 101回
  • 年度积分:0
  • 历史总积分:152
  • 注册:2005年4月03日
发表于:2006-03-03 15:40:00
16楼
正在学习中

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:51
  • 注册:2006年3月07日
发表于:2006-03-07 15:29:00
17楼
    大家好:
        我想问一下,我现在做毕业论文中需要单片机的程序代码,是关于积分程序的,如果有朋友知道的话,拜托和我联系一下,发给我可以吗?
    谢谢拉:)
                                                      宁

九嶷帮主

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 7回
  • 年度积分:0
  • 历史总积分:89
  • 注册:2005年8月18日
发表于:2006-03-15 00:31:00
18楼
不错啊,我正在学习中!

球形闪电

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 19回
  • 年度积分:0
  • 历史总积分:23
  • 注册:2006年3月13日
发表于:2006-03-17 11:32:00
19楼
写得太好了,虽然我还有很多地方没有看懂
以后可能还要多多请教你

猎隼

  • 精华:1帖
  • 求助:1帖
  • 帖子:151帖 | 1661回
  • 年度积分:0
  • 历史总积分:8983
  • 注册:2005年9月28日
发表于:2006-03-17 16:18:00
20楼
我要学习单片机,但资料太少了。

热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 3 4 下一页 尾页