佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 6429|回复: 67

初学者的问题。。

[复制链接]
发表于 19-11-2007 11:29 AM | 显示全部楼层 |阅读模式
本人现在是已经会51了,但感觉到有时51对时间上的控制好像有很大的限制。。

如果想学新的mcu的话,各位大大建议什么呢?(AVR,PIC,etc...)
回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层
其实我本人对asm比较熟悉,对C呢,我懂的只是最基本的。。。
每次进来单晶片分区都一直听PIC版主说 asm 不好,C 有多么的强。 但是我个人觉得asm比较容易上手,因为大约只有30++ instruction 罢了。。。
而C呢,是比较 high level language 的,得很深入的了解才能运用。
其实 PIC版主你不可怪用 asm 的programmer, 因为很多的学校都用asm 来训练。
反而C呢,就只是运用在 visual C++ 罢了。 很多学校都没有教怎样用C 来运用在 MCU 里面。像我的学校就是其中一间
学生们想把C用在 MCU 里面就得靠自己。
现在我就是学着把C运用在 MCU 里。。。
各位什么参考好介绍吗?

PIC MCU真的很强,价钱又大众化。而且开发工具比 51 来得简单。。。 (个人意见)
所以学 MCU 在 PIC MCU 方面下手会比较好。。。

以上的一切只是本人的小小意见,如果有不赞同请指教。。。
回复

使用道具 举报

发表于 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?可以分享吗?
回复

使用道具 举报

Follow Us
发表于 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了。
回复

使用道具 举报


ADVERTISEMENT

发表于 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
回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层
原帖由 rothmans 于 19-11-2007 18:07 发表
还有在论坛的朋友们会支持你,帮助你转变的,如果你愿意改变的话


谢谢你的提点。。。
我想我是时候改用C了,如果用C那么得从哪里开始下手呢?
我知道是用 HITEC C compiller, 我想知道怎样运用,比如有什么参考书之类的。。。 因为市面上的书大多都用asm
如果有课程我也想去上,之前我上过一个PIC的课程,但是用的是asm,所以我现在就比较转注在asm

之前听过PIC版主说过如果只会asm,那么它就不会要那个人,我现在的命运就像那个人
现在我真的想把C运用在单晶片上,我对单晶片很有兴趣,很想往这方面发展
谢谢指教咯。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 29-3-2024 02:59 PM , Processed in 0.089316 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表