查看: 6429|回复: 67
|
初学者的问题。。
[复制链接]
|
|
本人现在是已经会51了,但感觉到有时51对时间上的控制好像有很大的限制。。
如果想学新的mcu的话,各位大大建议什么呢?(AVR,PIC,etc...) |
|
|
|
|
|
|
|
发表于 19-11-2007 01:07 PM
|
显示全部楼层
回复 #1 Eneccc 的帖子
原帖由 Eneccc 于 19-11-2007 11:29 AM 发表
本人现在是已经会51了,但感觉到有时51对时间上的控制好像有很大的限制。。
如果想学新的mcu的话,各位大大建议什么呢?(AVR,PIC,etc...)
如果你有留意我以前的回帖, 你会发现我我只鼓励使用PIC MCU, 放弃8051的core。
8051不管加了什么新功能, 它还是8051的core, 一个已经淘汰了的MCU core。
那PIC MCU是最强的吗? 不是。。。。但它是最普遍使用的, 从PIC10F 到目前最新的PIC32 , 从4个I/O 到>100 I/O,内建CAN, USB, Ethernet,USART, I2C, SPI, Comparator, Voltage reference, ADC, CCP, PWM, Motor controller, Timer, Interrupt..., ROM 从 256word~256K 都有。。。网上的resource也是最多的。。。
你要学新的MCU, 建议从PIC16F628A, 16F877A 开始。, 使用CCS C compiler, 不要很努力的去学ASM, 要专注在C语言, 专注在应用,快速, 高效率的开发。
当你在用PIC18F, PIC24F, PIC32F, 你会发现你辛苦学的ASM, 只要一行C语言就搞定了, 你会很沮丧。。。
很可惜就是一些学校没有与时并进,还在传授8051,ASM。
如果只是学习做Project, 玩玩的没关系。。。如你要深入发展的话,没好处。。。
比如现在你说你的51有几厉害, ASM有多厉害,我要请人,一定不会考虑你, 反而我会考虑不会的人,慢慢训练他/她, 因为你可能很难, 也会抗拒转去学一个新的, 你不熟悉的MCU。
这里51的爱好者,肯定不完全赞同我的说法,所以欢迎你们发表你们的意见。
[ 本帖最后由 pic 于 19-11-2007 01:37 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 19-11-2007 02:29 PM
|
显示全部楼层
原帖由 pic 于 19-11-2007 01:07 PM 发表
如果你有留意我以前的回帖, 你会发现我我只鼓励使用PIC MCU, 放弃8051的core。
8051不管加了什么新功能, 它还是8051的core, 一个已经淘汰了的MCU core。
那PIC MCU是最强的吗? 不是。。。。但它 ...
一般上只有同意,没有反对是不会进步的。我就来成为你良性的反对党吧!
呵呵,pic 版主真的好像是为 micro chip 公司打广告似的。
看你这么说,这个市场就好像只有 pic 能生存而已,好像其他牌子的 MCU 都得靠边站。 pic 我也用过,的确是很好用。就如版主有一张贴提及说 pic 有很多 range 任由你选择。
我就拿 MCS-51 来跟 pic 对照下 。对 MCS-51 是颗非常单纯的 MCU,尤其是脚位较少的,就拿 51 爱好者都认识的 AT89C2051。是颗MCU罢了。顶多只有 EXT INT, UART, Timer, Counter, Comparator,15个I/O(如果没错)。如果初学者要拿来控制一些开关都没问题。
可是别忘了,MCS-51 40脚位的,不单单是颗 MCU, 它也可以成为颗 MPU + MCU 勒!当它成为 MPU 时,你可以外接其它外围。比如说,你缺少了 ADC.你马上可以加入 ADC 0804(8bit) 或其它的12 bit 零件。你需作大量的数据储存,你可以外接记忆体空间(6264 / 62256)。假如你需要 DAC的话 就加入AD574(12bit A/D Converter). Timer不够就加入 8254(Programmable Timer). I/O 不够就加入8255(Programmable Peripheral Interface) 多么有伸缩性。
pic 是有这很多功能,不过要随着需要的功能而换IC 才行!对 MCS-51 来说,只需要加入 IC。
为什么教学还在使用 MCS-51,就证明了它有其价值所在。虽说Intel 的MCS-51 一指令是12个周期,可是 DALLAS 公司也已经生产了一个指令是1个周期的晶片。MCS-51的指令集也非常强大,有 + , - , * , / 运算,pic 就没有了。所以说,MCS-51能生存到至今,就有它一定的地位与使用价值所在的。
还有一点,我不认同的是,ASM 汇编语言好像被藐视的一文不值了。C 语言的确是个很容易开发的工具,别忘了,C 会占用较多的空间。而且时间也是无法掌控自如的。ASM 的效率还是最高的。假如产品没有时间与空间的束缚,使用 C 语言就没问题。话说回来,在社会上工作必须能掌握 C语言,而了解汇编语言。再说,如果想进一步发展到 ARM 级晶片就必须要懂得汇编语言,因为在初始化硬件时都必须使用汇编语言完成。又或者是当进入某些临界区,要把某些寄存器入栈,都必须使用汇编语言。版主请不要从门缝里看汇编语言,把它给看贬了。
所以相比之下,哪个适合学习呢?在这里我就不说了。
读者别误会或受到误导,这纯属个人的意见。就如楼主说的:“欢迎你们发表你们的意见”,也让我与大家都有深一步的学习机会。
[ 本帖最后由 rothmans 于 28-7-2008 06:40 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 19-11-2007 03:25 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 19-11-2007 05:25 PM
|
显示全部楼层
大同小异,不同国家都流行不同的MCU,比如说中国,那里还是蛮流行51的,台湾现在开始流行AVR,而新家玻就流行PIC(他们很看不起51的)搂主如果想升级不如直接学ARM咯?哈哈 |
|
|
|
|
|
|
|
发表于 19-11-2007 05:31 PM
|
显示全部楼层
回复 #3 rothmans 的帖子
呵呵, PIC 不是最好的, 但我个人认为好过51,(我不需要大家的认同) 至于最好的, 我认为是Freescale。
Microchip在MCU的市场的排名, 只是前2~3名, 但在以前, 都是在10名外。。。今天排在前面, 有他的道理。
是的,MCS-51 40脚位的, 是MPU, 如果你需要的是MPU, 是好的, 你的确可以任意加你要的Periperal, 如果对电板的体积没有要求的话, 中国, Taiwan一些前辈, 都是一片电版走天下的, 他的那个Motherboard, 几乎无所不能。(可是MPU好像淘汰了。。)
PIC 是RISC MCU, 要求简单的指令,33个基本的指令。
8051生存到今天, 因为他是Intel,第一比较完整的MPU。。。而且, Intel 也授权给其他人制造, 改良。。。
我没有藐视ASM 汇编语言到一文不值了, 是你自己说的。。。
但我说不要努力去学。。。。要专注C。
C 会占用较多的空间, 如是PIC18F以上, 它是C optimize。。C compiler 也很efficient了。。。可能很多人还不知道。。
Flash 空间也很便宜了, Flash 的价钱, 和开发时间的速度, 我个人以开发速度为最重要的。。。
好了, 喜欢51的网友, 继续用51,发扬光大。
对于想学新的MCU, 我还是建议学习PIC。
当然, 随个人的喜好, PIC ,Atmel , Freescale什么都各有好处的。。。
黑猫白猫, 会抓老鼠就是好猫。。。不过, 要考虑, market是需要黑猫还是白猫。。。
请问Rothmans, 你公司的产品, 都是用什么MCU 或MPU?可以分享吗? |
|
|
|
|
|
|
|
发表于 19-11-2007 05:34 PM
|
显示全部楼层
原帖由 jason86 于 19-11-2007 03:25 PM 发表
其实我本人对asm比较熟悉,对C呢,我懂的只是最基本的。。。
每次进来单晶片分区都一直听PIC版主说 asm 不好,C 有多么的强。 但是我个人觉得asm比较容易上手,因为大约只有30++ instruction 罢了。。。
我相信你对ASM下过苦工了, 你已经习惯了, 不想改, 对吗?你没有错的。。。但以后要深入时,你会发觉很难。。。不然试试用ASM写USB Stack, TCP/IP Stack 。。。
ASM象笔算, 你要学过+-*/才能作。
C 就象用计算机, 你会按键就可以了。。。一样把结果算出来, 快而准。
而C呢,是比较 high level language 的,得很深入的了解才能运用。 就是high level 才容易上手。对完全不会的人, 都能快速上手。
其实 PIC版主你不可怪用 asm 的programmer, 因为很多的学校都用asm 来训练。 我没怪, 我只是叫你们不要放太多的苦心在ASM。。。
反而C呢,就只是运用在 visual C++ 罢了。 很多学校都没有教怎样用C 来运用在 MCU 里面。像我的学校就是其中一间
学生们想把C用在 MCU 里面就得靠自己。现在我就是学着把C运用在 MCU 里。。。 很好, 看得出你是有上进心的。 用CCS C是最好的开始。
好了, 大家会发现我不断的强调 CCS C compiler, Microchip PIC, Proteus Simulator, 其实我和他们没有任何利益关系的,只是他们是我正在用的好东西, 我才把我的工具推荐给大家,分享心得。 |
|
|
|
|
|
|
|
发表于 19-11-2007 05:43 PM
|
显示全部楼层
原帖由 若有情 于 19-11-2007 05:25 PM 发表
大同小异,不同国家都流行不同的MCU,比如说中国,那里还是蛮流行51的,台湾现在开始流行AVR,而新家玻就流行PIC(他们很看不起51的)搂主如果想升级不如直接学ARM咯?哈哈
你说对了, 不同国家都流行不同的MCU, 我赞成的。
中国那里很流行51的, 因为PIC是美国货, 对他们来说太高档, 另一个就是语言的问题,中文的resource 不多, 所以不鼓励他们。。。但现在, 有很多人渐渐在用PIC了。 |
|
|
|
|
|
|
|
发表于 19-11-2007 06:07 PM
|
显示全部楼层
原帖由 pic 于 19-11-2007 05:34 PM 发表
我相信你对ASM下过苦工了, 你已经习惯了, 不想改, 对吗?你没有错的。。。但以后要深入时,你会发觉很难。。。不然试试用ASM写USB Stack, TCP/IP Stack 。。。
ASM象笔算, 你要学过+-*/才能作。
C 就 ...
其实我非常感谢 pic 大大与我们分享好用的东西。
对我来说,我不能说哪颗 MCU 好就可以用它,因为我们主要是注重它的价钱,与这颗晶片的功能是否能满足我们的需求。
每次进来单晶片分区都一直听PIC版主说 asm 不好,C 有多么的强。 但是我个人觉得asm比较容易上手,因为大约只有30++ instruction 罢了。。。
而C呢,是比较 high level language 的,得很深入的了解才能运用。
其实 PIC版主你不可怪用 asm 的programmer, 因为很多的学校都用asm 来训练。
不,你错了。。如果现在要换一颗新的 MCU,比如说 AVR, 你从新学 ASM 需要多久才能上手????可是,我可以告诉你,用 C 的话,你马上就可以用。。。C 语言你只需要学一次。ASM 则需要随着不同的 MCU从新学起。
像我的学校就是其中一间,学生们想把C用在 MCU 里面就得靠自己。
还有在论坛的朋友们会支持你,帮助你转变的,如果你愿意改变的话。
请问Rothmans, 你公司的产品, 都是用什么MCU 或MPU?可以分享吗?
我们用的都有些 Micro-chip, Renesas(4bit, 8bit 与 16bit), Samsung, Silicon Labs,AVR 等等。
[ 本帖最后由 rothmans 于 28-7-2008 06:47 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 19-11-2007 06:30 PM
|
显示全部楼层
原帖由 rothmans 于 19-11-2007 06:07 PM 发表
我们用的都有些 Micro-chip, Renesas(4bit, 8bit 与 16bit), Samsung, Silicon Labs,AVR 等等。
Holtek,Rabbit, Freescale 的没用吗?
可以透露都是作什么产品吗?
你们用过最低价的是什么型号 ?多少钱 (1000pcs )?(假设我不理功能) |
|
|
|
|
|
|
|
发表于 19-11-2007 06:51 PM
|
显示全部楼层
原帖由 pic 于 19-11-2007 06:30 PM 发表
Holtek,Rabbit, Freescale 的没用吗?
可以透露都是作什么产品吗?
你们用过最低价的是什么型号 ?多少钱 (1000pcs )?(假设我不理功能)
USD 大概是 0.15 吧!可以用来做遥控器。 |
|
|
|
|
|
|
|
发表于 19-11-2007 06:58 PM
|
显示全部楼层
原帖由 rothmans 于 19-11-2007 06:51 PM 发表
USD 大概是 0.15 吧!可以用来做遥控器。
请问是什么型号? 可用透露吗? |
|
|
|
|
|
|
|
发表于 19-11-2007 07:31 PM
|
显示全部楼层
原帖由 pic 于 19-11-2007 06:58 PM 发表
请问是什么型号? 可用透露吗?
M34283..
[ 本帖最后由 rothmans 于 28-7-2008 06:48 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 19-11-2007 08:21 PM
|
显示全部楼层
其实为什么学校都教51?
其中一个很重要的原因是过后很多engineering的学生都会学x86 architecture
51和x86有一定的相似处, 对学习x86有帮助。
至少学生学x86的时候不会太陌生。
我个人用过51, pic16f,18f.速度上觉得没什么分别(当然不要拿24f, 30f 33f拿来做比较,已经是不同class的了)。 pic有优势在很多built in peripheral, , 51 没有。51要有也是可以, 不过比较难找。
速度上基本上是没什么差别。 一个是cisc,一个是risc.如果在同样的operating frequency (不是crystal frequency)下操作, cisc会比较快,原因是他的instruction set比较powerful.。 这个也是看个人。喜欢哪一个就那一个咯。
初学者, 看你要学哪一个, 51, pic, avr, rabbit等。 |
|
|
|
|
|
|
|
发表于 19-11-2007 08:33 PM
|
显示全部楼层
原帖由 Eneccc 于 19-11-2007 11:29 AM 发表
本人现在是已经会51了,但感觉到有时51对时间上的控制好像有很大的限制。。
如果想学新的mcu的话,各位大大建议什么呢?(AVR,PIC,etc...)
时间上的控制好像有很大的限制是代表什么? |
|
|
|
|
|
|
|
楼主 |
发表于 19-11-2007 11:34 PM
|
显示全部楼层
比如説那51控制到uS的pulse.
如果用51的話我試過最高只到500kHz(2uS)的pulse |
|
|
|
|
|
|
|
发表于 19-11-2007 11:35 PM
|
显示全部楼层
原帖由 Eneccc 于 19-11-2007 11:34 PM 发表
比如説那51控制到uS的pulse.
如果用51的話我試過最高只到500kHz(2uS)的pulse
看你用多快的8051咯。。 |
|
|
|
|
|
|
|
发表于 19-11-2007 11:44 PM
|
显示全部楼层
回复 #14 fritlizt 的帖子
其实为什么学校都教51?
其中一个很重要的原因是过后很多engineering的学生都会学x86 architecture
51和x86有一定的相似处, 对学习x86有帮助。
至少学生学x86的时候不会太陌生。
哦, 有学x86的吗?那如果是用ASM的话可能有帮助吧。。
但如果有好的开发工具,用High Level 语言,compiler 都会帮我们处理。。。
我个人用过51, pic16f,18f.速度上觉得没什么分别(当然不要拿24f, 30f 33f拿来做比较,已经是不同class的了)。 嗯。。。我觉得PIC18F 快过 PIC16F, 16bit的MCU 会快过8bit的MCU, 在数学运算上就可以看出来。
以下是CCS C 对 20Mhz PIC16 和 40Mhz PIC18 的运算比较,8bit的没差别, 16bit 以上的就不一样了。
20 mhz PIC16
| int8 [us]
| int16 [us]
| int32
[us]
| float
[us]
| +
| 0.6
| 1.4
| 3
| 111.
| -
| 0.6
| 1.4
| 3
| 113.
| *
| 11.1
| 47.2
| 132
| 178.
| /
| 23.2
| 70.8
| 239.2
| 330.
| exp()
| *
| *
| *
| 1697.3
| ln()
| *
| *
| *
| 2017.7
| sin()
| *
| *
| *
| 2184.5
|
40 mhz PIC18
| int8 [us]
| int16 [us]
| int32 [us]
| float [us]
| +
| 0.3
| 0.4
| 0.6
| 51.3
| -
| 0.3
| 0.4
| 0.6
| 52.3
| *
| 0.4
| 3.2
| 22.2
| 35.8
| /
| 11.3
| 32
| 106.6
| 144.9
| exp()
| *
| *
| *
| 510.4
| ln()
| *
| *
| *
| 644.8
| sin()
| *
| *
| *
| 698.7
|
速度上基本上是没什么差别。 一个是cisc,一个是risc.如果在同样的operating frequency (不是crystal frequency)下操作, cisc会比较快,原因是他的instruction set比较powerful.。
嗯。。。RISC是快过CISC的。
x86如Intel 80386, 80486是CISC, Intel Pentium开始就是RISC CPU了, 在当时, 速度有很大的改进。
如说MCU的, PIC vs AVR,同样的operating speed , 它们的速度是一样, 因为他们都有 Harvard architecture 。
如没有Harvard architecture 的MCU, 虽是同样的operating speed, 速度其实是慢过有的那个。
注:
RISC: Reduced Instruction Set
CISC: Complex Instruction Set |
|
|
|
|
|
|
|
发表于 20-11-2007 12:57 AM
|
显示全部楼层
原帖由 pic 于 19-11-2007 11:44 PM 发表
哦, 有学x86的吗?那如果是用ASM的话可能有帮助吧。。
但如果有好的开发工具,用High Level 语言,compiler 都会帮我们处理。。。
嗯。。。我觉得PIC18F 快过 PIC16F, 16bit的MCU 会快过8bit的MCU, 在 ...
没错来讲18f还是8bits mcu. 奇怪怎么把40mhz 18f和20mhz 16f来比较??
18f有build in hardware multiplier,multiplication肯定是快多多声的了。。
16f 在20mhz的operating frequency是5mips, 18f在40mhz 是多少mips??
到底是risc快还是cisc快, 其实没什么定论。各有各的好。
看做什么。 如果是复杂运算, 我觉得cisc会有优势。 强的instruction可以做很多东西。单单比较multiply就可以了。
至于intel pentium, 他还算是cisc processor.,,不过模拟了一些risc的特征, 把complex 的cisc instruction 分成几个简单的operation来做,提高运算性能。就是不要浪费cpu的recource.大概是这样, 有错请纠正。 |
|
|
|
|
|
|
|
发表于 20-11-2007 01:18 AM
|
显示全部楼层
|
|
|
|
|
|
| |
本周最热论坛帖子
|